요약
이 기사에서는 Python을 사용하여 위치 속성과 같은 장면 그래프 데이터를 생성하고 쿼리하는 방법을 설명합니다.
추가 정보
사용자는 장면 그래프 위치의 속성 값을 쿼리하는 Python 스크립트를 작성할 수 있습니다. 이를 가능하게 하려면 장면을 먼저 요리해야 합니다. 요리사는 장면 그래프의 평가를 나타냅니다. 즉, 장면 데이터를 계산하려면 노드 그래프를 평가해야 합니다. 이 단계가 발생하지 않으면 속성 데이터가 존재하지 않으며 쿼리할 수 없습니다.
이는 장면 데이터 생성을 요청할 수 있는 Geolib3 클라이언트를 생성하여 달성할 수 있습니다. 다음 예를 참조하십시오 .
# We first need to get a hold of the runtime the UI is using runtime = FnGeolib.GetRegisteredRuntimeInstance() # Transactions are used to batch together actions txn = runtime.createTransaction() # Make a client, and attach it to an Op in the tree, we get the Op from a reference to a Node. client = txn.createClient() op = Nodes3DAPI.GetOp(txn, NodegraphAPI.GetNode('Render')) txn.setClientOp(client, op) # Commit the transaction to the runtime, if we don't the client will exist, but won't yet be pointing to an Op runtime.commit(txn)
그런 다음 클라이언트를 사용하여 위치를 쿠킹하고 해당 속성 값을 검사할 수 있습니다. 예를 들어 카메라 위치의 centerOfInterest 속성을 가져옵니다.
location = client.cookLocation('/root/world/cam/camera')
attrs = location.getAttrs()
COI = attrs.getChildByName('geometry.centerOfInterest')
print(COI.getValue())
Geolib3 및 Op API에 대한 자세한 내용은 Katana 사용자 가이드의 Op API 섹션을 참조하세요.
장면 그래프를 요리하는 것은 계산 비용이 많이 드는 작업일 수 있습니다. 불필요한 요리를 피하기 위해 특별한 주의가 필요합니다. 예를 들어 모든 노드 그래프 변경에 대해 자동으로 쿠킹하는 것은 권장되지 않지만, 버튼 스크립트와 같이 사용자가 트리거하는 이벤트에서 쿠킹하는 것은 괜찮습니다.
원하는 워크플로를 달성하기 위해 광범위하게 쿠킹하고 싶다면 Op 또는 OpScripts와 관련된 다른 접근 방식을 고려해 보세요. 문제를 몇 개의 작업으로 나누어 함께 작업하면 많은 워크플로를 달성할 수 있습니다.
추가 질문이 있거나 속성 쿼리에 적합한 워크플로를 찾는 데 문제가 있는 경우 지원 티켓을 열고 발생한 문제나 달성하려는 원하는 워크플로를 알려주세요.
지원 티켓을 여는 방법에 대한 자세한 내용은 Q100064: 지원 티켓을 올리는 방법을 참조하세요.
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요