사용자 정의 메뉴 및 도구 모음 정의

도구 모음 및 도구 모음 옵션뿐만 아니라 사용자 정의 메뉴 및 메뉴 옵션을 자유롭게 추가 할 수 있습니다. Nuke 상호 작용. 그런 다음 아티스트는이 옵션을 사용하여 플러그인 경로 디렉토리에 저장된 기즈모 및 플러그인을 트리거 할 수 있습니다.

예를 들어 MyGizmo라는 기즈모를 트리거하는 옵션을 사용하여 기본 도구 모음에 새 메뉴를 추가하려면 다음을 수행하십시오.

1.   홈 디렉토리에서 다음 디렉토리를 작성하십시오. .nuke (존재하지 않는 경우). 이 디렉토리에 대한 자세한 정보는 다음을 참조하십시오. 기즈모, NDK 플러그인 및 Python 및 Tcl 스크립트로드.
2.   에서 .nuke 디렉토리,라는 파일을 만듭니다 menu.py 아직 존재하지 않는 경우
3.   텍스트 편집기에서 파일을 수정하십시오. menu.py, 줄 추가 :

toolbar = nuke.toolbar("Nodes")

toolbar.addCommand( "Test/MyGizmo", "nuke.createNode('MyGizmo')")

그러면 "MyGizmo"노드의 인스턴스를 생성하는 "MyGizmo"라는 항목과 함께 "Test"라는 메뉴가 기본 노드 도구 모음에 추가됩니다.

노트 :  마디 Class() 때때로 주요 릴리스간에 이름이 변경됩니다. Nuke 7 ~ Nuke 8. 이러한 변경 사항은 레거시 스크립트에는 영향을 미치지 않지만 노드 클래스가 수정 된 경우 예상 한 결과를 얻지 못할 수 있습니다. 그만큼 toolbars.py 파일을 만드는 데 사용 Nuke의 노드 툴바는 모든 현재 노드 클래스 이름을 포함하며 <install_directory>/plugins/nukescripts/ 참고로.

예를 들어 Nuke 7과 Nuke 8, 텍스트 노드 Class() Text에서 Text2로 변경되었습니다. 에서 toolbars.py 두 릴리스의 파일에서 텍스트 노드의 항목은 다음과 같이 나타납니다.

m.addCommand ( "Text", "nuke.createNode (\"Text \ ")", icon = "Text.png")
m.addCommand ( "Text", "nuke.createNode (\"Text2 \ ")", icon = "Text.png")

다른 메뉴에 항목을 추가 할 수도 있습니다. Nuke 자신 만의 툴바를 만들 수도 있습니다. 다음 섹션에서는 이러한 가능성에 대해 자세히 설명합니다.

도구 모음을 추가하려면

툴바를 추가하려면 :

1.   라는 파일을 만듭니다 menu.py 플러그인 경로 디렉토리 (없는 경우)

플러그인 경로 디렉토리에 대한 자세한 정보는 다음을 참조하십시오. 기즈모, NDK 플러그인 및 Python 및 Tcl 스크립트로드.

2.   를 엽니 다 menu.py 텍스트 편집기에서 파일을 작성하고 다음 형식으로 항목을 추가하십시오.

t=nuke.toolbar("ToolbarName")

t.addCommand("NewMenu", "PythonCode", "Shortcut", icon="IconName")

바꾸다 ToolbarName 툴바에 지정할 이름으로이 이름은 아래의 컨텐츠 메뉴에 나타납니다. Windows > Custom 제목 탭의 툴바 위에 있습니다.

바꾸다 NewMenu 툴바에 추가하려는 메뉴 이름으로

바꾸다 PythonCode 관련 파이썬 코드로 (보통 nuke.createNode) 및 필요한 경우 메뉴 옵션을 호출 할 기즈모, 일반 Python 스크립트 또는 플러그인 파일의 이름을 사용하십시오. 사용하기 쉽도록 참조 된 모든 파일을 플러그인 경로 디렉토리에 배치하십시오.

원하는 경우 교체 할 수도 있습니다 PythonCode 파이썬 호출 가능.

바꾸다 Shortcut 예를 들어 키보드 단축키가있는 Alt+A, Ctrl/Cmd+A 또는 Shift+A. 그 편지 a 혼자 소문자를 나타냅니다 a. F1 기능 키 1을 나타냅니다. 당신은 결합 할 수 있습니다 Shift, Ctrl/Cmd , Alt 필요한 경우 키. 원하는 경우 사용할 수도 있습니다 #A 대표하다 Alt+A, ^A 대표하다 Ctrl/Cmd+A, +A 대표하다 Shift+A.

바꾸다 IconName 의 이름으로 .png (또는 .xpm) 메뉴 아이콘으로 사용하려는 이미지입니다. 이 이미지는 Nuke 플러그인 경로 디렉토리. 크기는 24 x 24 픽셀이어야합니다.

3.   위 항목에서 괄호 안에 다음과 같은 선택적 인수를 추가 할 수도 있습니다. "ToolbarName":

True. 이것이 기본값입니다. True 인 경우 nuke.toolbar ()는 지정된 이름으로 도구 모음을 호출하거나 존재하지 않는 경우 도구 모음을 작성합니다. 예를 들어 t=nuke.toolbar("Extras", True) Extras라는 기존 툴바를 호출하거나 존재하지 않는 경우 툴바를 만듭니다.

False. False 인 경우 도구 모음이 없으면 nuke.toolbar ()가 반환되지 않으면 도구 모음이 작성되지 않습니다. None. 이를 사용하여 지정된 이름의 도구 모음이 이미 존재하는지 확인할 수 있습니다. 예를 들어 t=nuke.toolbar("Extras", False) Extras라는 기존 툴바를 호출하거나 툴바가 존재하지 않으면 None을 반환합니다.

새 도구 모음은 기본적으로 나타나지 않지만 아래에 나열되어 있습니다 Custom 컨텐츠 메뉴에서. 거기에서 어느 창 에나 삽입 할 수 있습니다. 새 도구 모음과 위치에 만족하면 레이아웃을 저장하십시오 (선택 Workspace > Save Workspace). 그 후에는 툴바가 나타날 때마다 Nuke 저장된 작업 공간에서 시작됩니다.

서로 다른 작업을 위해 여러 도구 모음을 작성하고 컨텍스트 전환을 쉽게하기 위해 하나 또는 다른 레이아웃을 저장할 수 있습니다.

실시 예 1

다음 항목은이라는 새 도구 모음을 만듭니다. Extras. 툴바에는 Create VectorBlur VectorBlur 노드를 만듭니다. 항목은 또한 정의 v VectorBlur 노드의 바로 가기 키로

t=nuke.toolbar("Extras")

t.addCommand("Create VectorBlur", "nuke.createNode ('VectorBlur')", "v")

실시 예 2

이 예에서는 예 1에서 작성된 도구 모음에 Autoplace라는 옵션을 추가합니다. 이 옵션은 다음 이미지와 같이 선택한 노드를 하나씩 깔끔하게 배치합니다.

자동 배치를 사용하기 전에
노드 그래프를 정리합니다.

자동 배치를 사용한 후
노드 그래프를 정리합니다.

다음 항목은 자동 배치 옵션을 추가합니다. 또한 정의 Alt+A 이 옵션의 바로 가기 키로

def _autoplace():

n = nuke.selectedNodes()

for i in n:

nuke.autoplace(i)

t=nuke.toolbar("Extras")

t.addCommand("Auto&place", "_autoplace()", "Alt+a")

메뉴 또는 도구 모음 옵션을 정의하려면

메뉴 또는 도구 모음 옵션을 정의하려면

1.   아직 그렇게하지 않았다면, menu.py 플러그인 경로 디렉토리에 있습니다. 플러그인 경로 디렉토리에 대한 자세한 정보는 다음을 참조하십시오. 기즈모, NDK 플러그인 및 Python 및 Tcl 스크립트로드.
2.   를 엽니 다 menu.py 텍스트 편집기에서 파일을 작성하고 다음 형식으로 항목을 추가하십시오.

menubar=nuke.menu("MenuType")

m=menubar.addMenu("&NewMenu")

m.addCommand("&NewItem", "PythonCode", "Shortcut", icon="IconName", index=#)

바꾸다 MenuType 메뉴 또는 툴바 유형으로 항목을 추가하려는 경우 :

Nuke 응용 프로그램 기본 메뉴 표시 줄에 항목을 추가합니다.

Animation 애니메이션 버튼의 메뉴에 항목을 추가합니다 모든 패널과 곡선 편집기의 오른쪽 클릭 메뉴에

Properties 속성 패널의 마우스 오른쪽 버튼 메뉴에 항목을 추가합니다.

Node Graph 노드 그래프의 오른쪽 클릭 메뉴에 항목을 추가합니다.

Nodes 기본 툴바에 항목을 추가합니다.

Viewer 뷰어의 마우스 오른쪽 버튼 메뉴에 항목을 추가합니다.

Pane 컨텐츠 메뉴에 항목을 추가합니다. Custom.

바꾸다 NewMenu 메뉴 이름으로. 기존 메뉴 이름을 사용하면 기존 메뉴에 새로운 옵션이 추가됩니다. 기본 메뉴 표시 줄 및 도구 모음에 옵션을 추가 할 수도 있습니다.

바꾸다 NewItem 메뉴에 추가하려는 기본 항목으로당신은 어떤 문자 앞에 & 키보드 단축키 트리거로 표시합니다.

바꾸다 PythonCode 관련 파이썬 코드로 (보통 nuke.createNode) 및 필요한 경우 메뉴 옵션을 호출 할 기즈모, 일반 Python 스크립트 또는 플러그인 파일의 이름을 사용하십시오. 사용하기 쉽도록 참조 된 모든 파일을 플러그인 경로 디렉토리에 배치하십시오.

플러그인 경로 디렉토리에 대한 자세한 정보는 다음을 참조하십시오. 기즈모, NDK 플러그인 및 Python 및 Tcl 스크립트로드.

원하는 경우 교체 할 수도 있습니다 PythonCode 파이썬 호출 가능. 이는 메뉴 항목이 호출 될 때가 아니라 시작시 스크립트의 오류에 대한 정보를 얻는 이점이 있습니다. 람다 함수 사용의 예는 다음을 참조하십시오. 실시 예 3.

바꾸다 Shortcut 예를 들어 키보드 단축키가있는 Alt+A, Ctrl/Cmd+A 또는 Shift+A. 그 편지 a 혼자 소문자를 나타냅니다 a. F1 기능 키 1을 나타냅니다. 당신은 결합 할 수 있습니다 Shift, Ctrl/Cmd , Alt 필요한 경우 키. 원하는 경우 사용할 수도 있습니다 #A 대표하다 Alt+A, ^A 대표하다 Ctrl/Cmd+A, +A 대표하다 Shift+A.

노트 :  키보드 단축키를 지정하면 기존 단축키를 덮어 쓸 수 있습니다. 예를 들어 바로 가기를 할당하면 Ctrl/Cmd+O 새 메뉴 항목에 대해서는 더 이상 파일을 여는 기본 목적으로 사용되지 않습니다. 그러나 바로 가기는 주 메뉴 표시 줄, 도구 모음, 사용자가 만든 도구 모음 및 새 메뉴 항목을 추가 할 메뉴에서만 덮어 씁니다. 즉, 뷰어에서 동일한 바로 가기를 재설정하지 않고 노드 그래프에 바로 가기를 추가 할 수 있습니다. 그러나 주 메뉴 표시 줄 또는 도구 모음에서 동일한 바로 가기를 재설정하지 않으면 노드 그래프에 바로 가기를 추가 할 수 없습니다.

바꾸다 IconName 메뉴 아이콘으로 사용하려는 .png (또는 .xpm) 이미지의 이름으로이 이미지는 Nuke 플러그인 경로 디렉토리. 크기는 24 x 24 픽셀이어야합니다.

바꾸다 # 메뉴 또는 도구 모음에서 항목의 위치를 나타내는 숫자와 함께. 색인 키워드를 사용하지 않으면 메뉴 또는 도구 모음 끝에 항목이 추가됩니다.

팁:  다음과 같이 addCommand 호출에 메뉴 이름을 넣을 수도 있습니다.
nuke.menu ( "MenuType"). addCommand ( "NewMenu / NewItem", "PythonCode ("name ")")

실시 예 1

다음 항목은라는 새로운 메뉴와 옵션을 만듭니다 Custom > Cue Render 메뉴 막대에서. “cue_render”라는 기즈모를 삽입합니다. 항목은 또한 정의 Ctrl+R 기즈모의 키보드 단축키로

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("&Cue Render", "nuke.createNode('cue_render')", "Ctrl+R")

실시 예 2

기즈모를 트리거하는 메뉴 항목으로 기본 도구 모음에서 새 메뉴를 만드는 방법에 대한 자세한 내용은 아래 예를 참조하십시오. 사용자 정의 메뉴 및 도구 모음 정의.

실시 예 3

다음 항목은 메뉴 및 옵션이라는 Custom > Filters > Blur 메뉴 막대에서. 선택 Blur 블러 노드를 삽입합니다.

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("Filters/Blur", "nuke.createNode(\"Blur\")" )

람다 함수를 사용하여 동일한 작업을 수행 할 수도 있습니다.

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("Filters/Blur", lambda: nuke.createNode("Blur") )

이런 식으로 백 슬래시를 사용할 필요가 없습니다.