Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def append_shaped_absorb(data=bpy.data, use_fake_user=False):
- in_sockets = [
- {'name': 'Color',
- 'data_type': 'NodeSocketColor',
- 'default_value': (0.0, 0.0, 0.0, 1.0)},
- {'name': 'Density',
- 'default_value': 1.0,
- 'min_value': 0.0},
- {'name': 'Fac',
- 'default_value': 0.5,
- 'min_value': 0.0,
- 'max_value': 1.0},
- {'name': 'Lower',
- 'default_value': 0.0},
- {'name': 'Upper',
- 'default_value': 1.0}
- ]
- out_sockets = [
- {'name': 'Volume',
- 'data_type': 'NodeSocketShader'},
- {'name': 'Color',
- 'data_type': 'NodeSocketColor'},
- {'name': 'Fac',
- 'min_value': 0.0,
- 'max_value': 1.0}
- ]
- absorb_group = append_group_node(name='Absorb', data=data, use_fake_user=use_fake_user, in_sockets=in_sockets, out_sockets=out_sockets)
- # Create nodes.
- nodes = absorb_group.nodes
- thresh = append_group_inst(nodes=nodes, group_name='Threshold', data=data, group_creation_func=append_threshold, data=data, use_fake_user=use_fake_user)
- holdout = nodes.new('ShaderNodeHoldout')
- mixsh = nodes.new('ShaderNodeMixShader')
- vol_abs = nodes.new('ShaderNodeVolumeAbsorption')
- mxrgb = nodes.new('ShaderNodeMixRGB')
- # Set default values.
- mxrgb.inputs[1].default_value = (0.0, 0.0, 0.0, 0.0)
- # Link nodes.
- links = absorb_group.links
- links.new(mixsh.inputs[0], thresh.outputs[0]) # Link threshold to mix factor.
- links.new(mixsh.inputs[1], holdout.outputs[0]) # Link holdout to mix slot 1.
- links.new(mixsh.inputs[2], vol_abs.outputs[0]) # Link absorb to mix slot 2.
- links.new(mxrgb.inputs[0], thresh.outputs[0]) # Link threshold to color mix.
- # Link to group inputs.
- absorb_input = absorb_group.nodes['Group Input']
- links.new(vol_abs.inputs[0], absorb_input.outputs[0]) # Color.
- links.new(mxrgb.inputs[2], absorb_input.outputs[0]) # Color.
- links.new(vol_abs.inputs[1], absorb_input.outputs[1]) # Density.
- links.new(thresh.inputs[0], absorb_input.outputs[2]) # Fac.
- links.new(thresh.inputs[1], absorb_input.outputs[3]) # Lower.
- links.new(thresh.inputs[2], absorb_input.outputs[4]) # Upper.
- # Link to group outputs.
- absorb_output = absorb_group.nodes['Group Output']
- links.new(absorb_output.inputs[0], mixsh.outputs[0]) # Volume.
- links.new(absorb_output.inputs[1], mxrgb.outputs[0]) # Color.
- links.new(absorb_output.inputs[2], thresh.outputs[0]) # Fac.
- return absorb_group
Add Comment
Please, Sign In to add comment