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

2024-09-27 07:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要的是一种处理mixRGB节点中“factor”值的方法,就像一个普通对象,比如一个立方体,还有fcurves、fmodifiers等等。 所有这些都是通过文本编辑器中的Python代码实现的


Tags: 对象方法代码节点文本编辑factorfcurvesmixrgb
1条回答
网友
1楼 · 发布于 2024-09-27 07:32:38

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

node properties

要调整fac值,可以更改fac输入的default_value。要设置混合因子的关键帧,请告诉fac输入插入一个data_pathdefault_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)

当然,您可以为关键帧指定任何帧编号,而不仅仅是当前帧。在

如果有多个混合节点,可以循环这些节点并将每个混合着色器添加到列表中

^{pr2}$

然后可以在它们上循环并根据需要设置关键帧。在

for m in mix_nodes:
    m.inputs['Fac'].default_value = 0.5
    m.inputs['Fac'].keyframe_insert('default_value', frame=cur_frame)

在添加fcurve之后找到它们对于节点来说是很困难的。当您告诉输入套接字插入一个关键帧时,fcurve存储在节点树中,因此在keyframe_insert()之后,您可以使用

bpy.data.materials['Material'].node_tree.animation_data.action.fcurves.find()

知道要搜索的数据路径可能很棘手,因为节点Mix.002的Fac输入的数据路径是nodes["Mix.002"].inputs[0].default_value

如果要在添加fcurve以调整值或添加修改器后查找fcurve,则很可能会发现在添加关键帧时更容易保留它们的列表。在keyframe_insert()之后,新的fcurve应该在

material.node_tree.animation_data.action.fcurves[-1]

相关问题 更多 >

    热门问题