(Blender)(Python)如何使用Python代码为混合节点中的因子值设置动画?

时间:2016-03-20 16:04:37

标签: python animation nodes blender

我想要的是一种处理mixRGB节点中'factor'值的方法,就像普通对象一样,比如一个立方体,所以使用fcurves,fmodifiers等等。 所有这些都是通过在文本编辑器中创建的Python代码

1 个答案:

答案 0 :(得分:3)

第一步是找到你想要的混合节点。在材质中,您可以按名称访问每个节点,而第一个mixRGB节点名为“Mix”,以下混合节点将在名称中添加数字扩展名。该名称也可以由用户(或python脚本)手动更改。通过显示属性区域(按 N ),您可以在节点属性中看到活动节点的名称。

node properties

要调整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]