Katana 자원

Katana 사용 KATANA_RESOURCES 플러그인 및 기타 사용자 정의 (예 : 선반, 탭 및 해상도)를 찾을 경로 목록을 제공하는 환경 변수. 콜론 (Linux 인 경우) 또는 세미콜론 (있는 경우)으로 구분 된 디렉토리 목록 일 수도 있습니다. Windows ). 아이디어는 자원 위치 목록을 작성할 수 있도록하는 것입니다. 플러그인을 작성하는 개발자 인 경우 Katana, 제대로 픽업하려면 올바른 장소로 이동해야합니다.

예제는 다음 디렉토리에 제공되며이 경로가 다음 디렉토리에 포함 된 경우로드됩니다. KATANA_RESOURCES 환경 변수:

$ KATANA_ROOT / plugins / 리소스 / 예

새로운 경로 추가

추가 한 모든 디렉토리 KATANA_RESOURCES 경로로 검색 Katana 플러그인 용. 예를 들어, 다음을 지정할 수 있습니다.

수출 KATANA_RESOURCES = / home / tom / dev / katana / Resources : / tools / site / katana / Resources

그러면 다음과 같은 상황이 발생하면 Katana 시작 :

katana [INFO LicenseCheck] : 대화식 라이센스 OK [INFO python.ResourceFiles] : 추가 Katana $ KATANA_RESOURCES의 리소스 경로 : [INFO python.ResourceFiles] : / home / tom / dev / katana / Resources [INFO python.ResourceFiles] : / tools / site / katana / Resources

이것들은 아래에 나열된 것 외에도 검색됩니다 기본값 아래에 더 자세히 설명되어 있습니다.

노트 :  이 변수는 표준 Linux 환경 변수로 작동합니다. 결과적으로 디렉토리를 추가하고 이미 존재하는 것을 유지하려면 디렉토리를 편집 할 때주의해야합니다.

중요한 디렉토리

당신이 배치하는 경로 KATANA_RESOURCES 실제로 직접 검색되지는 않습니다. 대신 프로그램의 다른 부분에서 사용되는 의미있는 하위 디렉토리 세트가 있습니다. Python 모듈의 경우, 나열된 '유형'은 모듈의 PluginRegistry 목록에 설정된 각 튜플의 첫 번째 값을 나타냅니다.

Args - .args 쉐이더 용 파일.

AssetPlugins -Python 기반 AssetPlugin 및 FileSequencePlugin 플러그인.

Gaffer* -Gaffer 수퍼 툴을 확장하는 Python 기반 GafferModule 플러그인 (스크립트 항목).

GenericAssign -새로운 GenericAssign 기반 노드를 정의하기위한 템플리트 (.xml).

Importomatic* -Importomatic SuperTool 용 플러그인을 형성하는 Python 기반 ImportomaticModule 플러그인.

Libs -컴파일 된 모든 C ++ 플러그인 Katana모든 API에 대해 예를 들어 C 기반 자산 플러그인 (.so).

Macros -노드에서 매크로로 저장된 Katana UI (.macro).

Ops -장면 데이터를 임의로 생성하고 조작 할 수있는 C ++ 플러그인. Ops는 Libs 하위 폴더에 배치 할 수도 있습니다. KATANA_RESOURCES. 작전은 Katana Libs 또는 Ops 폴더에 있는지 여부에 관계없이

Plugins -GafferProfile과 같은 유형을 포함한 잡다한 파이썬 모듈 Katana플러그인, RenderLocationPlugin, ViewerProxyLoader, UVTileFormats.

RenderBin -이 디렉토리는 실제로 표준이 아닙니다 Katana 디렉토리이지만 많은 렌더 플러그인은이를 사용하여 렌더 자체가로드하는 바이너리 및 플러그인을 저장합니다. Katana.

Resolutions -추가 해상도 파일 (.xml).

Shaders -렌더러의 추가 셰이더이 디렉토리가 유일하게 고려되는 시간 Katana 자체는 뷰어의 셰이더를 찾는 것입니다 (.glsl).

Shelves -각 서가 항목에 대한 Python 스크립트를 포함하는 각 서가의 디렉토리.

Startup -구성하는 데 사용할 수있는 Python 스크립트 Katana 시작할 때. execfile로 명시 적으로 실행되는 유일한 파일은 init.py. 다른 스크립트를 실행하거나 모듈을 가져 오려면 해당 스크립트를 호출해야합니다.

SuperTools* -새로운 SuperTools를 구현하는 Python 모듈.

Tabs* -UI의 창에 고정 할 수있는 새 탭을 구현하는 Python 모듈 (KatanaPanel).

UIPlugins -AssetWidgetDelegates와 같은 UI 특정 플러그인을 구현하는 Python 모듈 Katana플러그인.

노트 :  이 플러그인은로드되지 않습니다 --batch, --script , --shell 발사 모드.

ViewerManipulators -뷰어를위한 추가 Python 조작기 (KatanaManipulator).

기본값

Katana 설정 한 내용에 관계없이 항상 다음 (내부) 장소를 찾습니다. KATANA_RESOURCES 에. $KATANA_ROOT 어디 Katana 설치 수명.

$ {KATANA_ROOT} / bin / python / UI4 / Resources

$ {KATANA_ROOT} / plugins / Resources / Core

일반적으로 검색 순서는 '표준 경로 동작'입니다. 즉, Katana 왼쪽에서 오른쪽으로 디렉토리를 봅니다. 그러나로드 할 플러그인 / 디렉토리의 유형에 따라 약간의 차이가 있습니다.

컴파일 된 플러그인

컴파일 된 많은 플러그인은 '로드 된 첫 번째 플러그인'에 기반하여 작동합니다. 이것은에 기초하지 않습니다 .so 이름 대신에 이름이 REGISTER_PLUGIN. 같은 이름의 반복 등록은 무시됩니다. 각 디렉토리의 플러그인은 readdir에 의해 반복되므로 'filesystem order'로로드됩니다.

(API 호출을 기반으로하는) 위치 유형에 대한 매핑 인 ViewerModifierPlugins의 경우, 모든 위치의 유효 승자는 특정 위치 유형을 허용하는 최초의 명명 된 등록입니다.

그러나 '첫 번째'플러그인은 무엇입니까? 예를 들어 이름이 'OuModifier'인 중앙 플러그인의 로컬 빌드와 같은 동일한 이름의 여러 등록의 경우 왼쪽에서 오른쪽으로 경로에서 첫 번째를 얻습니다. 그러나 독립적으로 이름이 지정된 여러 등록이 동일한 유형 (예 : 'LightModifier'및 'MyLightModifier')을 처리하는 경우 내부 플러그인 맵에서 반복 된 첫 번째 항목으로 끝나고 현재 알파벳순으로 정렬됩니다.

파이썬

파이썬 모듈은 일반적으로 디렉토리에서 제공됩니다 ( __import__), 왼쪽에서 오른쪽으로. 따라서 PluginRegistry에 특정 이름을 등록하는 첫 번째 모듈이 우선합니다. 모든 디렉토리에서 플러그인은 os.listdir순서는 임의적 인 것으로 문서화됩니다. 그러나 일부 코드는이 검색 순서를 반대로합니다. 별표 (*)는 오른쪽에서 왼쪽 우선 순위입니다. 또한 선반 메커니즘이 왼쪽에서 오른쪽 (반전되지 않음)으로 검색하므로 선반이 예상 한대로 작동하지 않습니다. 이것은 가장 오른쪽의 파일 내용이 승리한다는 것을 의미합니다.