Q100439: Katana 장면을 미리 구성하기 위해 시작 중에 글로벌 그래프 상태 변수를 수정하는 방법

요약

Katana 글로벌 그래프 상태 변수가 설정된 상태로 실행하면 Katana 프로젝트 컨텍스트에 대한 접근 가능한 정보가 미리 정의되어 노드 그래프 또는 사용자 지정 도구를 통해 접근할 수 있습니다. 마찬가지로 아티스트는 쇼 파일 경로나 프로젝트 폴더와 같은 미리 정의된 변수를 설정할 수 있습니다. 이 글에서는 Katana 시작 스크립트와 콜백을 함께 사용하여 그래프 상태 변수를 설정함으로써 Katana 시작 시 Katana 프로젝트의 글로벌 그래프 상태 변수를 수정하는 단계를 안내합니다.

그래프 상태 변수에 대한 자세한 내용은 Katana 사용자 가이드: 그래프 상태 변수를 참조하세요.

더 많은 정보

다음은 Katana GUI의 Python 탭을 통해 글로벌 Graph State 변수를 설정하는 방법의 예입니다.

def AddGlobalGraphStateVariable(name, options):
variablesGroup = NodegraphAPI.GetRootNode().getParameter('variables')
variableParam = variablesGroup.createChildGroup(name)
variableParam.createChildNumber('enable', 1)
variableParam.createChildString('value', options[0])
optionsParam = variableParam.createChildStringArray('options', len(options))
for optionParam, optionValue in zip(optionsParam.getChildren(), options):
optionParam.setValue(optionValue, 0)
return variableParam.getName()

name = "Variable Name"
options = ('Option 1','Option 2','Option 3')
AddGlobalGraphStateVariable(name, options)

Katana 대화형 모드 로 시작할 때 Python 스크립트를 자동으로 실행하려면 KATANA _RESOURCES 환경 변수 디렉토리 경로의 UIPlugins 폴더에 Python 스크립트를 저장할 수 있습니다.

하지만 프로젝트에 그래프 상태 변수를 설정하려면 노드 그래프가 완전히 로드되어야 프로젝트 설정을 사용할 수 있고 변수 편집이 적용됩니다. UIPlugins 스크립트는 Katana 세션에서 노드 그래프가 로드되기 전에 실행되며, 처음에는 전역 그래프 상태 변수에 액세스할 수 없습니다.

이 문제를 해결하려면 UIPlugins 스크립트에 콜백이 필요합니다. 콜백은 Katana 환경에 추가된 Python 코드로, Katana 에서 노드 생성이나 스크립트 로드와 같은 다양한 이벤트가 발생할 때 자동으로 실행됩니다. 이 경우, onStartupComplete 또는 onSceneLoad 콜백을 설정하여 시작 또는 프로젝트 로드 직후 전역 그래프 상태 변수를 설정하는 함수를 실행해야 합니다.

아래는 Katana 실행 시 글로벌 Graph State 변수를 설정하는 UIPlugins Python 스크립트의 예시입니다(첨부 파일도 있음):

from Katana import Callbacks
import logging

def onStartupComplete(**kwargs):
    log = logging.getLogger("Startup Example")
    import NodegraphAPI
    name = "Variable Name"
    options = ('Option 1','Option 2','Option 3')

    variablesGroup = NodegraphAPI.GetRootNode().getParameter('variables')
    variableParam = variablesGroup.createChildGroup(name)
    variableParam.createChildNumber('enable', 1)
    variableParam.createChildString('value', options[0])
    optionsParam = variableParam.createChildStringArray('options', len(options))
    for optionParam, optionValue in zip(optionsParam.getChildren(), options):
            optionParam.setValue(optionValue, 0)
    log.info("Katana is now fully initialized and ready for use.")

log = logging.getLogger("Startup Example")
log.info("Registering onStartupComplete callback...")
Callbacks.addCallback(Callbacks.Type.onStartupComplete, onStartupComplete)

추가 읽기

추가 도움말

추가 질문이 있거나 시작 스크립트를 사용하여 전역 그래프 상태 변수를 설정하는 데 문제가 있는 경우, 지원 티켓을 개설하여 발생한 문제와 지금까지 수행한 문제 해결 단계를 알려주세요. 또한 Q100520: Foundry 지원 조사 시 전송할 하드웨어 사양에 대한 운영 체제 보고서 받기 에 설명된 시스템 정보도 함께 제공해 주세요.

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

첨부 파일

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

이유를 알려주세요