Distributed rendering of single images #104327
@ -208,6 +208,8 @@ image_files = [f for f in root.iterdir() if f.is_file()]
|
||||
separate_nodes = []
|
||||
first_crop_node = None
|
||||
translate_nodes = []
|
||||
min_width = min([int(f.stem.split('-')[2]) - int(f.stem.split('-')[0]) for f in image_files])
|
||||
min_height = min([int(f.stem.split('-')[3]) - int(f.stem.split('-')[1]) for f in image_files])
|
||||
for i, image_file in enumerate(image_files):
|
||||
image_node = node_tree.nodes.new('CompositorNodeImage')
|
||||
image_node.image = bpy.data.images.load(str(root / image_file.name))
|
||||
@ -215,25 +217,27 @@ for i, image_file in enumerate(image_files):
|
||||
crop_node = node_tree.nodes.new('CompositorNodeCrop')
|
||||
crop_node.use_crop_size = True
|
||||
left, top, right, bottom = image_file.stem.split('-')
|
||||
actual_width = int(right) - int(left)
|
||||
actual_height = int(bottom) - int(top)
|
||||
if left == '0':
|
||||
crop_node.min_x = 0
|
||||
crop_node.max_x = ${settings.tile_size_x}
|
||||
crop_node.max_x = actual_width
|
||||
else:
|
||||
crop_node.min_x = overscan
|
||||
crop_node.max_x = ${settings.tile_size_x} + overscan
|
||||
crop_node.max_x = actual_width + overscan
|
||||
if top == '0':
|
||||
crop_node.max_y = 0
|
||||
crop_node.min_y = ${settings.tile_size_y}
|
||||
crop_node.min_y = actual_height
|
||||
else:
|
||||
crop_node.max_y = overscan
|
||||
crop_node.min_y = ${settings.tile_size_y} + overscan
|
||||
crop_node.min_y = actual_height + overscan
|
||||
if i == 0:
|
||||
first_crop_node = crop_node
|
||||
|
||||
translate_node = node_tree.nodes.new('CompositorNodeTranslate')
|
||||
# translate_node.use_relative = True
|
||||
translate_node.inputs[1].default_value = float(left) + (${settings.tile_size_x} - ${settings.resolution_x}) / 2
|
||||
translate_node.inputs[2].default_value = float(top) + (${settings.tile_size_y} - ${settings.resolution_y}) / 2
|
||||
translate_node.inputs[1].default_value = float(left) + (actual_width - ${settings.resolution_x}) / 2
|
||||
translate_node.inputs[2].default_value = float(top) + (actual_height - ${settings.resolution_y}) / 2
|
||||
translate_nodes.append(translate_node)
|
||||
|
||||
separate_node = node_tree.nodes.new('CompositorNodeSeparateColor')
|
||||
@ -245,8 +249,8 @@ for i, image_file in enumerate(image_files):
|
||||
|
||||
scale_node = node_tree.nodes.new('CompositorNodeScale')
|
||||
scale_node.space = 'RELATIVE'
|
||||
scale_node.inputs[1].default_value = ${settings.resolution_x} / ${settings.tile_size_x}
|
||||
scale_node.inputs[2].default_value = ${settings.resolution_y} / ${settings.tile_size_y}
|
||||
scale_node.inputs[1].default_value = ${settings.resolution_x} / min_width
|
||||
scale_node.inputs[2].default_value = ${settings.resolution_y} / min_height
|
||||
node_tree.links.new(first_crop_node.outputs[0], scale_node.inputs[0])
|
||||
mix_node = node_tree.nodes.new('CompositorNodeMixRGB')
|
||||
mix_node.blend_type = 'MIX'
|
||||
|
Loading…
Reference in New Issue
Block a user