创建支持服务单
关注

Q100136:使用OpScript在任何场景图形位置之间复制属性

摘要

本文介绍如何使用OpScript节点在场景图形位置之间复制属性。

更多信息

在Katana中工作时,可以使用SetAttribute节点轻松设置位置属性。但是,如果要将在一个位置上设置的属性复制到另一个位置,可以使用OpScript节点和几行代码实现此目的。

尽管名称提示了类似的功能,但AttributeCopy节点不能用于此目的。

AttributeCopy遍历位于fromRoot的copyFrom场景和位于toRoot的输入场景。从这些位置开始,它希望找到相同的层次结构和位置名称。
这意味着要复制属性的两个位置的所有子级必须具有相同的层次结构和相同的名称。这可确保AttributeCopy节点将权限属性复制到正确的位置。
节点的工作方式与此类似,因为它旨在复制已修改的不同节点图中的场景之间的属性,但使用相同的资源,因此它们的场景图层次结构和位置名称是相同的。
要在同一场景图中的位置之间复制属性,可以使用使用CopyAttr()命令的OpScript。你可以这样做:
1)创建一个OpScript节点并将其“applyWhere”参数设置为“在匹配CEL的位置”
2)添加三个名为“attrFrom”,“attrTo”和“sourceLocation”的用户参数。有关如何将节点添加到节点的说明,请参阅Katana在线帮助中的“用户参数”部分。
3)“sourceLocation”参数的值应该是您要从中复制属性的场景图形位置的路径
4)CEL的说法应该是路径要属性复制场景图的位置
5)在“attrFrom”文本字段中键入要复制的属性的名称。
6)将要复制的属性的名称添加为“attrTo”参数值。
7)在OpScript节点的“Script”参数中添加此lua代码:

 local attrFrom = Interface.GetOpArg("user.  attrFrom"):getValue()
local attrTo = Interface.GetOpArg("user. attrTo"):getValue()
local sourceLocation = Interface.GetOpArg("user. sourceLocation"):getValue()
Interface.CopyAttr(attrTo, attrFrom, true, sourceLocation)

 

请注意,这适用于采购本地属性。如果要复制的属性是从父位置继承的,请将最后一行更改为:

 Interface.SetAttr(attrTo, Interface.GetGlobalAttr(  attrFrom, sourceLocation)) 
有关节点参数应如何显示的示例,请参阅附带的屏幕截图。在本例中为prmanStatements.attributes。 visibility.camera属性(在prmanObjectSettings节点中为boot_left_1Shape设置)被复制到/ root / world / geo / manScene / body_ main / geometry和此位置下的所有内容都将继承该属性。

关键词:

OpScript,AttributeCopy,SetAttribute,复制属性,场景图位置,不同层次结构,源目标,Katana

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
4 人中有 3 人觉得有帮助

评论