【问题标题】:select nonlinear deformers input node and set keyframe in maya using python?使用python在maya中选择非线性变形器输入节点并设置关键帧?
【发布时间】:2018-07-04 07:15:54
【问题描述】:

我想使用 python 脚本在 Maya 的非线性变形器中选择和设置关键帧。

我所尝试和失败的显然是基于我对这些命令的了解。

cmds.setKeyframe('some object name', time='a specific frame', attribute='attribute that i wish to key', value='value i wish to set')

但是像弯曲变形器这样的非线性变形器,看来如果要在曲率值中设置一个key,就需要指定变形器的输入节点的名称。

在我的大纲中,我使用 cmds.setKeyframe() 将变形器命名为“bend2_handle”,如果使用的对象名称为“bend2_handle”,它将不起作用,所以我必须获取输入节点的名称: “弯曲2”。

在脚本编辑器中,当我手动选择“bend2_handle”时,它会显示在 mel 命令中:

select -r bend2_handle ;

当我手动选择bendbend2(曲率值所在的位置)时,它显示在mel命令中:

select -addFirst bend2 ;

-addFirst 到底是什么。但即使尝试将其用作对象名称,attribute=bend2.curvature,它仍然不起作用,而且我知道 attribute=bend2.curvature 是正确的,因为“bend2.curvature”是我在 cmds.setAttr 中使用的()

import maya.cmds as cmds
cmds.setKeyframe('bend2', time=12, attribute='bend2.curvature', value=8)
cmds.currentTime(12)
cmds.setAttr('bend2.curvature', 4)
cmds.currentTime(40)
cmds.setAttr('bend2.curvature', 8)

我尝试实现的另一种方法是打开自动关键帧,并在第一帧手动设置关键帧,使用 cmds.currentTiem() 指定时间,并使用 cmds.setAttr() 更改值,因此添加关键框架。

但是我需要专门使用cmds.setKeyframe(),没有任何手动操作!

有人可以帮忙吗?

【问题讨论】:

  • 你能告诉我们到底发生了什么吗?我完全按照您的建议尝试了 cmds.setKeyframe() 并且效果很好。那么究竟是什么问题呢?

标签: python maya maya-api


【解决方案1】:

刚刚意识到您使用“bend1.curvature”作为属性名称,如果我只使用没有“bend1”的属性,它就可以工作。作为属性名。

【讨论】:

  • haggi krey,你太棒了,去掉“bend2.”,只用“curvature”作为属性名。对象名称是“bend2”。我试过了,终于成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多