如何将关键帧和修改器插入blender中的自定义节点组值?

2024-07-02 12:48:33 发布

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

在我的脚本中,我按下一个按钮,它会添加一个自定义节点组。我希望能够知道如何为值添加关键帧,然后添加Fcurve修改器“噪波”,然后能够更改组节点上的缩放值。我知道这对你们大多数人(如果不是所有人)来说都很简单,但我真的被卡住了..通常我可以在网上的代码片段或答案中找到正确的代码,但是我找不到任何关于这方面的信息,我会很感激你的帮助!。。你知道吗

因为我是新手,所以我不知道大多数正确的上下文/语法等等。你知道吗

我尝试了我通常所做的改变一个值,只是尝试了我认为可能会像这样工作的代码

group_node.inputs[2].anim.keyframe_insert 

这显然是错误的,但我不知道如何处理这个。。你知道吗


Tags: 答案代码脚本信息node节点语法group
1条回答
网友
1楼 · 发布于 2024-07-02 12:48:33

因此,您有一个名为“myGroup”的材质节点组,可以将其添加到活动对象材质中

obj = bpy.context.object
mat = obj.active_material
group_node = mat.node_tree.nodes.new('ShaderNodeGroup')
group_node.node_tree = bpy.data.node_groups['myGroup']

要调整节点输入值,请设置socketsdefault_value属性。你知道吗

group_node.inputs[0].default_value = 0.75

您还可以按名称访问输入套接字

mat.node_tree.nodes['Mix Shader'].inputs['Fac'].default_value

现在创建关键帧的棘手部分是知道animation data存储在哪里。对象包含大多数动画数据,这些数据可以在^{}中找到。因此,如果要为设置obj.location = (x,y,z)的对象位置设置关键帧,则可以告诉对象insert a keyframe作为location的数据路径

obj.keyframe_insert('location', frame=1)

请注意,您不需要更改当前帧,您可以设置属性的值,然后插入一个关键帧,指定它将位于哪个帧上。你知道吗

由于材质可以用于多个对象,因此它们有自己的动画数据,这些数据可以在其节点树mat.node_tree.animation.data中找到。因此,要为材质节点中的值设置动画,请告诉其节点树插入关键帧,并为其指定数据路径,即从节点树到值的python路径。你知道吗

dpath = 'nodes["Group"].inputs[0].default_value'
mat.node_tree.keyframe_insert(dpath, frame=1)

fcurves存储在animation_data.action.fcurves中。要获得所需的子值,可以通过其数据路径找到它,对于location之类的数组值,还可以指定一个index子值。你知道吗

fc = mat.node_tree.animation_data.action.fcurves.find(dpath)

现在您有了fcurve,添加一个modifier并设置它的一些属性。你知道吗

nmod = fc.modifiers.new("NOISE")
nmod.scale = 1.25
nmod.phase = 2.3
nmod.strength = 0.7
nmod.depth = 1.35
nmod.offset = 0.23

相关问题 更多 >