Blender 3.4+如何通过脚本将新Mix节点连接到其他节点
Blender 3.4 新Mix节点输入连接问题解决方法
Blender 3.4引入了整合型的ShaderNodeMix节点,将浮点、向量和颜色操作合并到单个节点中。但沿用旧版ShaderNodeMixRGB的索引方式连接输入时会失效。
旧版MixRGB节点的有效连接方式
此前使用ShaderNodeMixRGB时,我们可以通过索引[1]来连接Color1输入:
mix_RGB_node = mat.node_tree.nodes.new(type='ShaderNodeMixRGB') # 创建MixRGB节点 texture_node = mat.node_tree.nodes.new(type='ShaderNodeTexImage') # 创建纹理节点 mat.node_tree.links.new(texture_node.outputs['Color'], mix_RGB_node.inputs[1]) # 将纹理颜色输出连接到Mix节点的Color1输入
新Mix节点的连接问题
直接将索引方式套用在ShaderNodeMix节点上无法生效,即使先设置data_type='RGBA'也不行:
mix_RGB_node = mat.node_tree.nodes.new(type='ShaderNodeMix') # 创建新Mix节点 mix_RGB_node.data_type = 'RGBA' texture_node = mat.node_tree.nodes.new(type='ShaderNodeTexImage') # 创建纹理节点 mat.node_tree.links.new(texture_node.outputs['Color'], mix_RGB_node.inputs[1]) # 此方式无效
解决方法
新Mix节点的输入套接字会根据data_type动态生成,使用套接字名称而非索引来连接是更可靠的方式。当data_type='RGBA'时,对应的颜色输入名称为Color1和Color2,修改代码如下:
mix_node = mat.node_tree.nodes.new(type='ShaderNodeMix') mix_node.data_type = 'RGBA' texture_node = mat.node_tree.nodes.new(type='ShaderNodeTexImage') # 使用名称引用输入套接字 mat.node_tree.links.new(texture_node.outputs['Color'], mix_node.inputs['Color1'])
如果一定要使用索引,需要注意新Mix节点的输入顺序:索引0是Fac(混合因子),索引1对应Color1、索引2对应Color2。但推荐使用名称连接,避免因节点后续更新或参数变化导致索引错位。
内容的提问来源于stack exchange,提问作者Nazmul Islam
相关产品推荐
相关产品推荐

