요약
여러 입력을 가진 노드(예: Merge, Switch 또는 VariableSwitch 노드)를 설정할 때, 각 입력 포트의 이름을 변경하여 해당 포트에 연결된 노드의 종류를 나타내는 것이 유용할 수 있습니다. 하지만 포트 이름을 수동으로 변경하는 것은 번거로울 수 있습니다.
이 문서의 목적은 Q100372에서 제공된 예제를 기반으로 합니다. Python을 사용하여 더 명확한 연결을 위해 입력 및 출력 포트의 이름을 바꾸는 방법 과 사용자 정의 범주를 통해 Merge 노드에 대한 입력 포트의 이름을 바꾸는 기능을 제공하는 것입니다.
더 많은 정보
Katana 템플릿을 만들 때, 입력 포트에 연결된 노드의 카테고리가 상류에 표시되면 템플릿의 흐름을 이해하기가 더 쉽습니다.
Merge 노드의 기본 동작을 사용할 때 생성된 입력은 i0, i1, i2 등으로 명명됩니다. 이 명명 규칙은 상류에 연결된 노드에 대한 정보를 제공하지 않습니다.
Merge 노드의 기본 포트 이름을 사용하는 대신, 연결된 노드의 범주에 따라 Merge 노드 입력 포트의 이름을 바꾸는 사용자 지정 Python 설정을 만들 수 있습니다(예: CameraCreate 노드에 연결된 경우 Merge 노드 입력 포트는 "Camera"이고, NetworkMaterial 노드에 연결된 경우 "Material"입니다).
예를 들어, 병합 노드에 기능을 추가할 때 다음과 같은 입력 포트 이름을 사용할 수 있습니다. 이렇게 하면 업스트림 설정을 더 쉽게 이해할 수 있습니다.
위 이미지에 표시된 것처럼 Merge 노드의 입력 포트는 각 입력에 연결된 노드의 범주에 따라 이름이 변경됩니다.
예제 스크립트
이 기사에는 스튜디오의 필요에 맞게 다운로드하여 수정할 수 있는 Python 예제 스크립트가 첨부되어 있습니다.
스크립트를 작동시키려면 첨부 파일을 .katana/Shelves 폴더 위치에 추가해야 합니다. 예:
Windows: C:\Users\USERNAME\.katana\Shelves\RenameShelf\Type_Merge.py
리눅스: /mnt/nethome/users/USERNAME/.katana/Shelves/RenameShelf/Type_Merge.py
Shelf 스크립트에 대한 자세한 내용은 다음 문서를 참조하세요.
Q100401: Katana 에서 쉽게 액세스할 수 있는 사용자 정의 Python 스크립트를 제공하기 위해 Shelf Item을 만드는 방법
Q100402: Katana 에서 선반 항목을 편집하고 제거하여 기존 사용자 정의 Python 스크립트를 수정하는 방법
스크립트 사용
Katana 에서 이 사용자 정의 스크립트를 테스트하려면 노드(예: CameraCreate, PonyCreate 및 Material 노드)를 선택해야 합니다.
노드가 생성되면 모든 노드를 선택하고 키보드 단축키 Ctrl+M을 사용하여 사용자 지정 셸프 항목 스크립트를 사용하여 노드를 병합합니다. 또는 도움말 옆의 톱니바퀴 아이콘을 클릭하고 셸프 아래에서 RenameShelf 셸프 작업과 Type_Merge 셸프 항목을 선택하여 스크립트에 액세스할 수도 있습니다.
위의 예시 이미지에 표시된 것처럼, 병합 노드 입력 포트는 셸프 항목 스크립트에 정의된 대로 연결된 노드의 범주에 따라 이름이 지정됩니다.
이 도구는 여러 카테고리를 추가할 수도 있습니다. 예를 들어, 'PrmanCameraSettings' 노드의 병합 포트 이름은 'Prman_Camera_Settings'입니다.
연결 설정, 선반 항목 생성 및 SuperTools에 대한 자세한 내용은 아래 링크를 사용하여 Katana 사용자 가이드와 Katana 개발자 가이드를 확인하세요.
Python 노드 연결: Katana 개발자 가이드 - 노드 작업 - 노드 연결
선반 스크립트: Katana 사용자 가이드 - Katana 스크립팅 및 프로그래밍 - 선반 항목 스크립트
SuperTools: Katana 사용자 가이드 - 그룹, 매크로 및 SuperTools - SuperTools
스크립트 설명
스크립트는 정의와 라이브러리 변수가 설정된 후 선택된 노드를 수집하는 것으로 시작합니다(80번째 줄). 이 데이터가 수집되면 새로운 병합 노드가 생성됩니다.
Q100372에 이어서: Python으로 입력 및 출력 포트의 이름을 바꾸어 연결을 더 명확하게 하는 스크립트 예제에서, 87번째 줄부터 선택된 노드는 for 루프에서 선택된 각 노드를 반복하여 새로 생성된 Merge 노드에 연결되며, 이를 통해 선택된 노드의 모든 출력 포트를 얻습니다.
스크립트는 Q100372: Python으로 입력 및 출력 포트의 이름을 바꾸어 연결을 더 명확하게 하는 방법 기사의 예제와 다릅니다. 즉, 입력 포트를 추가하기 전에 특정 노드에 대한 사용자 정의 사전을 검토하기 위해 새 함수 checkDictionary() 호출합니다.
사용자 정의 사전(18행~44행)은 사전 값을 사용하여 기존 노드 이름(예: PrimitiveCreate)이나 노드 이름의 잠재적 부분(예: Camera)을 일치시키고, 입력 포트 이름 변경에 사용되는 노드 범주 키를 사용합니다.
다음은 24번째 줄의 MergeType 사용자 정의 사전입니다.
예를 들어, 위의 사전 키에 따라 PrimitiveCreate 노드의 출력은 노드 범주 매핑에 따라 'Geometry'라는 이름이 지정됩니다.
checkDictionary() 함수는 이러한 사전들을 순회하며 키 중 하나가 선택된 노드의 유형과 일치하는지 확인합니다. 노드의 유형이 키 중 하나와 일치하면 해당 키는 'mergeLabel'이라는 변수에 추가되고, 이 변수는 입력 포트의 이름으로 사용됩니다.
예를 들어, ArnoldCameraSettings 노드는 3개의 키를 포착하여 다음과 같이 하나씩 추가합니다.
이름 구성 요소가 최종 입력 포트 이름에 추가되는 순서는 checkDictionary() 사용하여 범주 사전을 검사하는 순서에 따라 결정됩니다.
위에 표시된 checkDictionary() 에 대한 호출이 전환되면 입력 포트의 이름은 "Arnold_Camera_Settings"가 아닌 "Camera_Settings_Arnold"가 됩니다.
사전 포맷팅에 따라 사용자 정의 사전을 추가하고 checkDictionary() 호출하여 입력 포트 이름에 추가 구성 요소를 추가할 수 있습니다.
모든 입력 포트가 추가되면 새 병합 노드가 선택된 노드로 설정되고 Q100402에서 설명한 기능을 통해 노드 그래프 탭에 표시됩니다. Katana 에서 선반 항목을 편집하고 제거하여 기존 사용자 정의 Python 스크립트를 수정하는 방법
병합 노드를 플로팅하면 새 노드를 만드는 것과 동일한 동작이 제공됩니다.
참고: 스크립트에 대한 자세한 내용은 스크립트의 도움말 주석을 참조하세요.
첨부 파일
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요