요약
Katana 애플리케이션에 사용자 정의 코드를 추가하기 위해 Python, Lua 및 C++의 세 가지 언어를 지원합니다. 이 기사에서는 Katana 에서 스크립팅 및 프로그래밍을 시작하는 방법과 각 언어가 가장 적합한 작업에 대한 개요를 제공합니다.
추가 정보
Katana 에서 사용 가능한 각 언어에는 고유한 장점이 있으므로 특정 사용 사례에 따라 가장 적합한 언어가 달라집니다.
파이썬
Python은 신속한 애플리케이션 개발을 위해 널리 사용되며, 특히 사용자가 애플리케이션을 사용자 정의할 수 있도록 하는 API의 맥락에서, 예를 들어 프로젝트 작업 , 노드 작업 , 노드 유형 사용자 정의 , 사용자 인터페이스 사용자 정의 또는 Python 기반 매개변수 표현식을 사용자 정의 할 때 사용됩니다 .
추가 예제는 Python을 사용한 스크립팅 에 대한 Katana 사용자 가이드와 다양한 Python 작업 흐름에 대해 자세히 설명하는 다음 문서에 설명되어 있습니다 .
- Q100091: Katana 에서 여러 프레임을 렌더링하는 방법
- Q100108: 노드의 상황에 맞는 메뉴에 사용자 정의 메뉴 항목을 추가하는 방법
- Q100109: 매개변수 표현식에 사용할 사용자 정의 함수를 만드는 방법
- Q100401: Katana 에서 선반 항목을 만드는 방법
- Q100385: Python을 사용하여 Katana 에 콜백 및 이벤트 핸들러를 등록하는 방법
- Q100439: 시작 중에 글로벌 그래프 상태 변수를 수정하는 방법
- Q100372: Python을 사용하여 입력 및 출력 포트 이름 바꾸기
- Q100358: Geolib3 클라이언트를 사용하여 Python을 통해 장면 그래프 위치의 속성을 쿼리하는 방법
- Q100277: Python을 통해 새 노드를 생성하고 배치하는 방법
- Q100098: UI에서 나만의 사용자 정의 탭을 만드는 방법
Python - 성능 고려 사항
더 빠른 성능이 필요한 경우 Python이 항상 이상적인 선택은 아닙니다(부분적으로 GIL이 두렵기 때문입니다 ).
매개변수 표현식의 맥락에서 노드 또는 매개변수를 참조하는 간단한 표현식에 Python 표현식보다 더 빠른 대안을 사용할 수 있습니다. 이를 참조 표현식 이라고 하며 Katana 개발자 가이드에서 이에 대한 추가 정보를 찾을 수 있습니다.
Lua는 더 나은 성능을 제공하므로 OpScript 노드를 사용하는 장면 그래프 처리 작업에 선호되는 스크립팅 언어입니다.
루아
Lua는 Katana 의 OpScript 노드 내에서 사용됩니다. OpScript/Lua를 사용하면 Python보다 빠르고 강력한 Op API 에 액세스할 수 있습니다. 특히 OpScript 노드를 사용하면 위치 삭제, 새 하위 위치 생성, 속성 설정 및 편집과 같은 장면 그래프 계층 구조를 수정할 수 있습니다.
Lua는 장면 그래프에서 작업을 개발하기 위한 빠른 개발 처리 시간(나중에 Op 유형으로 구현될 예정인 더 복잡한 작업의 프로토타입을 위한 경우도 있음)과 장면 쿠킹의 일부로서 빠른 실행 시간 및 안정성 사이의 합리적인 균형을 나타냅니다.
특정 상황에서는 OpScript/Lua를 사용하는 대신 사용자 정의 Op 유형 플러그인을 구현하는 것이 좋습니다. 이것이 유리한지 여부는 실제 사용 사례, 즉 프로젝트와 해당 자산의 복잡성, 수행할 작업 수, 대상으로 삼을 장면 그래프 위치 수에 따라 달라집니다. OpScript/Lua보다는 Ops/C++에서 입자 시뮬레이션과 같은 FX 데이터를 처리하는 것이 좋습니다.
OpScript 및 Op API 사용에 대한 소개는 Katana 의 도움말 > 예제 프로젝트 메뉴에서 OpScript 튜토리얼을 참조하세요.
Op API에 대한 자세한 내용은 Katana 사용자 가이드 및 Katana 개발자 가이드 에서 확인할 수 있습니다 .
다음 기사에도 관심이 있을 수 있습니다.
C++
예를 들어 대규모 데이터 세트로 작업할 때와 같이 성능이 중요한 경우 Lua OpScript를 C++ Op 유형 플러그인으로 이식할 수 있습니다.
인터페이스 문서는 Katana 개발자 가이드를 참조하고 $KATANA_ROOT/plugins/Src/Ops/HelloWorld 위치에 Katana 소스 코드와 함께 제공되는 "HelloWorld" Op 예제를 참조하십시오.
빌드 지침은 여기에서 찾을 수 있습니다: $KATANA_ROOT/plugins/Src/README.md
예제 Op 컴파일에 대한 추가 힌트 및 지침은 다음 문서를 참조하세요. Q100326: 첫 번째 사용자 정의 Op 작성 및 테스트 방법
다음 내용에 관심이 있으실 수도 있습니다.
Q100351: C++ Op 내부에서 시스템 그래프 상태 데이터를 쿼리하는 방법
추가 읽기
각 언어에 대한 가이드 및 추가 참조는 Katana 사용자 가이드 및 개발자 가이드를 참조하세요.
파이썬
- katana /Content/ug/script_editing/scripting.html
- katana /dev-guide/Scripting/WorkingWithProjects.html
- katana /dev-guide/py-modindex.html
루아
- katana /dev-guide/OpsAndOpScript/Attributes/OpScript.html
- katana /dev-guide/OpsAndOpScript/CookInterface/OpScript.html
- katana /dev-guide/lua-modindex.html
C++
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요