Q100136: 절차적 작업 흐름을 활용하여 OpScript를 통해 장면 그래프 위치 간에 속성을 복사하는 방법

팔로우

요약

이 문서에서는 OpScript 노드를 사용하여 장면 그래프 위치 간에 속성을 복사하는 방법을 설명합니다.

추가 정보

Katana 에서 작업할 때 위치의 속성은 SetAttribute 노드를 사용하여 쉽게 설정할 수 있습니다. 그러나 한 위치에 설정된 속성을 다른 위치로 복사하려는 경우 OpScript 노드와 몇 줄의 코드를 사용하여 이를 수행할 수 있습니다.

비슷한 기능을 암시하는 이름에도 불구하고 AttributeCopy 노드는 이 목적으로 사용할 수 없습니다.

AttributeCopy는 fromRoot 위치의 copyFrom 장면과 toRoot 위치의 입력 장면을 순회합니다. 이러한 위치에서 동일한 계층 구조 및 위치 이름을 찾을 것으로 예상됩니다.
AttrCopySS.png
이는 속성을 복사하려는 두 위치의 모든 하위 항목이 동일한 계층 구조와 이름을 가져야 함을 의미합니다. 이렇게 하면 AttributeCopy 노드가 올바른 속성을 올바른 위치에 복사하게 됩니다.
노드는 수정된 다른 노드 그래프의 장면 간에 속성을 복사하도록 설계되었지만 동일한 자산을 사용하므로 장면 그래프 계층 구조와 위치 이름이 동일하기 때문에 이와 같이 작동합니다.
동일한 장면 그래프의 위치 간에 속성을 복사하려면 CopyAttr() 명령을 사용하는 OpScript를 사용할 수 있습니다. 다음과 같이 이 작업을 수행할 수 있습니다.
1) OpScript 노드를 생성하고 applyWhere 매개변수를 "CEL과 일치하는 위치"로 설정합니다.
2) "attrFrom", "attrTo" 및 "sourceLocation"이라는 세 가지 사용자 매개변수를 추가합니다. 노드에 사용자 매개변수를 추가하는 방법에 대한 지침은 Katana 사용자 가이드의 사용자 매개변수 추가 섹션을 참조하세요.
3) sourceLocation 매개변수의 값은 속성 을 복사하려는 장면 그래프 위치의 경로여야 합니다.
4) CEL 문은 속성 복사하려는 장면 그래프 위치의 경로여야 합니다.
5) attrFrom 텍스트 필드에 복사 하려는 속성의 이름을 입력합니다.
6) attrTo 매개변수 값으로 복사 하려는 속성의 이름을 추가합니다.
7) OpScript 노드의 스크립트 매개변수에 다음 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))

    우리는 문제로 불편을 끼쳐 드려 죄송합니다

    이유를 알려주세요