48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
import pathlib
|
|
import sys
|
|
|
|
import bpy
|
|
|
|
|
|
def main(output_path):
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
scene = bpy.context.scene
|
|
scene.name = "CompositorScene"
|
|
tree = bpy.data.node_groups.new("WebCompositorTree", "CompositorNodeTree")
|
|
scene.compositing_node_group = tree
|
|
tree.interface.new_socket(name="Image", in_out="OUTPUT", socket_type="NodeSocketColor")
|
|
|
|
color = tree.nodes.new("CompositorNodeRGB")
|
|
color.name = "WebConstantColor"
|
|
color.outputs["Color"].default_value = (0.125, 0.25, 0.5, 0.75)
|
|
|
|
exposure = tree.nodes.new("CompositorNodeExposure")
|
|
exposure.name = "WebExposure"
|
|
exposure.inputs["Exposure"].default_value = 1.0
|
|
invert = tree.nodes.new("CompositorNodeInvert")
|
|
invert.name = "WebInvert"
|
|
|
|
viewer = tree.nodes.new("CompositorNodeViewer")
|
|
viewer.name = "WebViewer"
|
|
composite = tree.nodes.new("NodeGroupOutput")
|
|
composite.name = "WebComposite"
|
|
glare = tree.nodes.new("CompositorNodeGlare")
|
|
glare.name = "PreservedUnsupportedGlare"
|
|
|
|
tree.links.new(color.outputs["Color"], exposure.inputs["Image"])
|
|
tree.links.new(exposure.outputs["Image"], invert.inputs["Color"])
|
|
tree.links.new(invert.outputs["Color"], viewer.inputs["Image"])
|
|
tree.links.new(invert.outputs["Color"], composite.inputs["Image"])
|
|
|
|
path = pathlib.Path(output_path).resolve()
|
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
bpy.ops.wm.save_as_mainfile(filepath=str(path), compress=False)
|
|
print(f"compositor-fixture-generated path={path} nodes={len(tree.nodes)} links={len(tree.links)}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
arguments = sys.argv[sys.argv.index("--") + 1:]
|
|
if len(arguments) != 1:
|
|
raise SystemExit("usage: blender -b --python generate-compositor-fixture.py -- output.blend")
|
|
main(arguments[0])
|