요약
이 문서에서는 OpScript 노드를 사용하여 장면 그래프 위치 간에 속성을 복사하는 방법을 설명합니다.
더 많은 정보
Katana 에서 작업할 때 SetAttribute 노드를 사용하여 위치 속성을 쉽게 설정할 수 있습니다. 하지만 한 위치에 설정된 속성을 다른 위치로 복사하려면 OpScript 노드와 몇 줄의 코드만 사용하면 됩니다.
이름에서 비슷한 기능을 암시하지만 AttributeCopy 노드는 이 목적으로 사용할 수 없습니다.
AttributeCopy는 fromRoot 위치의 copyFrom 장면과 toRoot 위치의 입력 장면을 탐색합니다. 이후부터는 동일한 계층 구조와 위치 이름을 찾습니다.
즉, 속성을 복사하려는 두 위치의 모든 자식은 동일한 계층 구조와 동일한 이름을 가져야 합니다. 이렇게 하면 AttributeCopy 노드가 올바른 속성을 올바른 위치에 복사합니다.
노드는 서로 다른 노드 그래프에서 수정된 장면 간에 속성을 복사하도록 설계되었기 때문에 이런 식으로 작동하지만 동일한 에셋을 사용하므로 장면 그래프 계층 구조와 위치 이름이 동일합니다.
동일한 장면 그래프의 위치 간에 속성을 복사하려면
CopyAttr() 명령을 사용하는 OpScript를 사용할 수 있습니다. 다음과 같이 수행할 수 있습니다. 1) OpScript 노드를 만들고
applyWhere 매개변수를 at locations matching 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))
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요