有没有办法使用节点来获取以前的转换或在我的情况下翻译?我已经写了一个简单的表达式来做到这一点,但我真的很想用节点来实现这一点。
$transx =getattr 'objname.tx' -frame time -1;
或者类似的东西我不完全记得,但它在表达式中使用了 getatrr 。
有任何想法吗?
表达式节点是节点,表达式节点内的强 getAttr会破坏节点流。但是,是的,您可以使用frameCache节点存储先前运行的值 。或者您可以将值存储在表达式的属性中。
node.tx = node.cacheTx;
node.cacheTx = objname.tx;
这要快得多,因为它不会破坏属性评估流程。这两种机制都有一个缺陷,如果它在帧变化之间发生了变化,它们不会在时间上下文之外进行评估。这是 Maya 用户一直在做的事情,导致用户反馈不佳。实际上,对于这种实现非常复杂的自定义节点,您几乎无能为力。
之所以难,是因为 Maya 用户用实际行动成功打破了 Maya 时间机制。开发人员随后在用户压力下投降并允许这样做,但它破坏了 Mayas 时间评估周期,因此并非所有内容都可以通过时间上下文转换进行查询。使在 Maya 中制作差分方程求解器变得困难。当然,在这种特殊情况下,节点并不是特别难制作,但在大多数情况下实际工作的节点却很难。