Q100358: Geolib3 클라이언트를 사용하여 Python을 통해 장면 그래프 위치의 속성을 쿼리하여 변경 사항을 검사하고 대응하는 방법

요약

이 문서에서는 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 또는 OpScript를 사용하는 다른 접근 방식을 고려해 보세요. 문제를 여러 Op로 나누어 함께 작업하면 많은 워크플로를 달성할 수 있습니다.

추가 도움말

렌더링 문제가 계속 발생하는 경우, 지원 티켓을 개설하여 발생한 문제와 지금까지 수행한 문제 해결 단계를 알려주세요. 또한 , Foundry 지원팀 조사 시 전송할 하드웨어 사양 관련 운영 체제 보고서 받기(Q100520) 에 설명된 시스템 정보도 함께 제공해 주세요.

지원 티켓을 여는 방법에 대한 자세한 내용은 Q100064: 지원 티켓을 제기하는 방법 문서를 참조하세요.

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

    이유를 알려주세요