요약
여러 입력(예: 병합, 전환 또는 전역 상태 변수 노드)을 가진 노드를 설정할 때, 연결 목적을 명확히 하기 위해 각 연결 포트의 이름을 수동으로 바꾸는 것은 상당히 번거로울 수 있습니다. 이 과정을 자동화하려면 Python으로 이름 변경을 처리하는 사용자 지정 Shelf Item 또는 SuperTool을 만들 수 있습니다. 이 글에서는 이 작업을 수행하는 방법을 설명합니다.
더 많은 정보
선택된 각 노드의 입력 포트를 반복하고 이를 특정 값으로 이름을 바꾸는 예제 스크립트가 포함되어 있으며 아래에 설명되어 있습니다.
예를 들어, Merge 또는 VariableSwitch 노드를 사용하여 Katana 내에서 테스트할 수 있습니다.
예제 스크립트
# Grab all currently selected nodes
selectedNodes = NodegraphAPI.GetAllSelectedNodes()
# Loop through each selected node for node in selectedNodes:
# Get all the import ports within the node inputPorts = node.getInputPorts()
# Loop through each port within the node for inputs in inputPorts: index = inputs.getIndex() name = node.getInputPortByIndex(index).getName()
# Name each port 'Shot' plus their indexed location node.renameInputPort(name,('Shot'+repr(index+1)))
스크립트 사용
Katana 내에서 스크립트는 Merge 또는 VariableSwitch 노드를 만들고 여기에 여러 입력 포트를 추가하는 것만으로 테스트할 수 있습니다(노드의 큰 화살표를 클릭하여 입력 포트를 추가합니다).
노드가 선택된 상태에서 위 스크립트를 Python 탭에 붙여넣거나 실행하면 기본 입력 포트의 이름이 다음과 같이 변경됩니다.
첨부된 'renameInputPorts.py' 파일을 다운로드하여 사용자 홈 영역 ' .katana/Shelves/ ' 디렉토리의 Shelf 폴더 이름 아래에 넣어 위 스크립트를 사용자 정의 Shelf 항목으로 테스트할 수도 있습니다.
예를 들어:
Windows: C:\Users\username\.katana\Shelves\RenameShelf\renameInputPorts.py
리눅스: /home/username/.katana/Shelves/RenameShelf/renameInputPorts.py
이 설정은 사용자 지정 Shelf 또는 SuperTool의 기본입니다. 여기에서 각 포트의 이름을 변경할 수 있는 팝업 위젯을 추가하거나 SuperTool 노드 자체에 코드를 포함할 수 있습니다.
연결 설정, Shelf Items 및 SuperTools 생성에 대한 자세한 내용은 아래 링크를 사용하여 Katana 사용자 가이드 및 Katana 개발자 가이드를 확인하세요.
Python 노드 연결: Katana 개발자 가이드 - 노드 작업 - 노드 연결
선반 스크립트: Katana 사용자 가이드 - Katana 스크립팅 및 프로그래밍 - 선반 항목 스크립트
SuperTools: Katana 사용자 가이드 - 그룹, 매크로 및 슈퍼 도구 - SuperTools
스크립트 설명
selectedNodes = NodegraphAPI.GetAllSelectedNodes()
NodegraphAPI를 사용하여 먼저 스크립트 로직을 적용할 대상 노드를 찾습니다. 이는 두 가지 방법으로 수행할 수 있습니다. 노드 이름으로 노드를 지정하거나 현재 선택된 노드를 쿼리하는 것입니다. 위 코드는 현재 선택된 노드 객체 목록을 찾아 selectedNodes 로 저장합니다.
for node in selectedNodes:
inputPorts = node.getInputPorts()
노드 객체 목록이 있으면 for 루프를 통해 각 노드를 반복하고 getInputPorts() 함수를 호출하여 노드의 모든 입력 포트를 얻을 수 있습니다.
for inputs in inputPorts:
index = inputs.getIndex()
이제 각 노드의 포트를 확보했으므로, 이름이나 인덱스된 위치를 기준으로 개별 포트를 순회하도록 설정할 수 있습니다. 위 코드에서는 getIndex() 함수를 사용하여 인덱스 위치를 찾습니다.
name = node.getInputPortByIndex(index).getName()
node.renameInputPort(name,('Shot'+repr(index+1)))
위 줄은 노드 포트의 현재 이름을 검색하여 'Shot' 뒤에 해당 포트의 인덱스를 붙여 이름을 변경합니다. 최종 이름은 노드에 포트가 몇 개 있는지에 따라 Shot1, Shot2, Shot3처럼 됩니다.
첨부 파일
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요