![](/img/trans.png)
[英]How can I mix similar code using loops (for/while) in Python?
[英](Blender) (Python)How can I animate the factor value in the mix node with Python code?
我想要的是一种在混合RGB节点中像普通对象(例如多维数据集)那样使用fcurves,fmodifiers等处理“ factor”值的方法。 所有这些都是通过文本编辑器中的Python代码完成的
第一步是找到所需的混合节点。 在材质中,您可以按名称访问每个节点,而第一个mixRGB节点名为“ Mix”,随后的混合节点将在名称上添加数字扩展名。 用户也可以手动更改名称(或python脚本)。 通过显示属性区域(按N ),您可以在节点属性中看到活动节点的名称。
要调整fac值,请更改fac输入的default_value
。 要设置混合因子的关键帧,您要告诉data_path
输入插入一个带有default_value
的data_path
的关键帧
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
如果要在添加ff曲线以调整值或添加修饰符后找到它,您很可能会发现在添加关键帧时更容易保留它们的列表。 在keyframe_insert()
,新的fcurve应该位于
material.node_tree.animation_data.action.fcurves[-1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.