我想要的是一种处理mixRGB节点中'factor'值的方法,就像普通对象一样,比如一个立方体,所以使用fcurves,fmodifiers等等。 所有这些都是通过在文本编辑器中创建的Python代码
答案 0 :(得分:3)
第一步是找到你想要的混合节点。在材质中,您可以按名称访问每个节点,而第一个mixRGB节点名为“Mix”,以下混合节点将在名称中添加数字扩展名。该名称也可以由用户(或python脚本)手动更改。通过显示属性区域(按 N ),您可以在节点属性中看到活动节点的名称。
要调整fac值,您可以更改fac输入的default_value
。要混合使用混合因子,请告诉fac输入插入一个data_path
default_value
import bpy
cur_frame = bpy.context.scene.frame_current
mat_nodes = bpy.data.materials['Material'].node_tree.nodes
mix_factor = mat_nodes['Mix.002'].inputs['Fac']
mix_factor.default_value = 0.5
mix_factor.keyframe_insert('default_value', frame=cur_frame)
当然,您可以为关键帧指定任何帧编号,而不仅仅是当前帧。
如果您有许多混合节点,则可以遍历节点并将每个混合着色器添加到列表
mix_nodes = [n for n in mat_nodes if n.type == 'MIX_RGB']
然后,您可以根据需要循环遍历它们和关键帧。
for m in mix_nodes:
m.inputs['Fac'].default_value = 0.5
m.inputs['Fac'].keyframe_insert('default_value', frame=cur_frame)
添加它们之后查找fcurves对于节点来说很尴尬。当您告诉输入套接字插入关键帧时,fcurve存储在node_tree中,因此在keyframe_insert()
之后您将使用
bpy.data.materials['Material'].node_tree.animation_data.action.fcurves.find()
了解您要搜索的数据路径可能会非常棘手,因为节点Mix.002
的Fac输入的数据路径将为nodes["Mix.002"].inputs[0].default_value
如果你想在添加它以调整值或添加修饰符后找到fcurve,你很可能会发现在添加关键帧时更容易保留它们的列表。在keyframe_insert()
后,新的曲线应该在
material.node_tree.animation_data.action.fcurves[-1]