나만의 3dMax Script 만들기, 실제 활용법 정리
3dMax Script 만들기, 실제 활용법 정리
smvfx님과 moho님의 유튜브를 참조했습니다.
자세한 내용은 아래 영상을 참고하세요.
세부 코드는 일부 변형하여 응용했습니다.
https://www.youtube.com/watch?v=H030WBIfzF8
https://www.youtube.com/watch?v=z5k19xseD_U
1 스크립트 작성
2 스크립트 실행
3 버튼 메뉴 생성
4 매크로 스크립트 만들기
5. UI 세팅 및 사용
1. 스크립트 작성
Max 상단 메뉴 Scripting 에서 아래 2종류의 창을 띄움
1) MAXScript Listener... > 코드 작성과 실행을 동시에 해 볼 수 있는 창
2) MAXScript Editor... > 코드 작성과 저장, 실행을 하는 창
-여기에서 주로 editor 창을 사용할 예정
3) 코드 작성 예시
- 선택한 여러 오브젝트 피봇을 한 번에 "최하단" 정렬하는 기능
obj=selection as array
for items in obj do
items.pivot=[items.center.x,items.center.y,items.min.z]
해석:
1줄 = 선택한 복수의 오브젝트를 배열로 할당한다
2줄 = 아이템 개수만큼 반복하여 실행한다
3줄 = 아이템의 피봇을 z축 min으로 변경한다
2. 스크립트 실행
오브젝트를 선택한 상태로, 스크립트 에디터 창에 코드를 작성 후, 단축키를 누르면 바로 실행됨
단축키 : Ctrl + E
> 피봇 축이 모두 하단으로 바뀌었음
3. 버튼 메뉴 생성
1) 버튼 UI를 생성하는 기본 코드 양식
rollout 스크립트 명칭 "롤아웃 명칭"
(
button a "버튼명" width:너비
button b "버튼명" width:너비
button c "버튼명" width:너비
)
1) 스크립트 명칭 : 원하는 스크립트 명을 직접 기입함
2) 롤아웃 명칭 : 실제 롤아웃 화면의 이름을 직접 기입함
3) 버튼명 : 기능 실행할 각각의 버튼이름을 직접 기입함
4) 너비 : 버튼의 가로 폭을 숫자로 지정함
2) 버튼 적용 예시
- 3개의 버튼 (btn1~3)에 피봇 중앙, 하단, 상단 정렬할 이름을 지어서 기입
- 너비를 작성.
- 그 아래에 작성한 함수(fn)는 각 버튼의 기능을 정의했음
-- Pivot Change라는 이름으로 롤아웃을 명명함
rollout junscript "Pivot Change"
(
-- 3개의 버튼 UI를 생성함
button btn1 "center" width:80
button btn2 "bottom" width:80
button btn3 "top" width:80
-- 선택한 오브젝트를 중앙, 하단, 상단 정렬하는 명령을 3개의 case로 정의함--
fn movePivotTo mode =
(
obj = selection as array
for items in obj do
(
case mode of
(
1: items.pivot = [items.center.x, items.center.y, items.center.z]
2: items.pivot = [items.center.x, items.center.y, items.min.z]
3: items.pivot = [items.center.x, items.center.y, items.max.z]
)
)
)
-- 3개의 버튼을 누르면 각각 case가 실행되도록 정의함--
on btn1 pressed do
movePivotTo 1
on btn2 pressed do
movePivotTo 2
on btn3 pressed do
movePivotTo 3
)
-- 롤아웃을 생성함
createDialog junscript
- 스크립트 창에서 ctrl + E 누르면 롤아웃 버튼이 팝업됨
- 롤아웃 팝업 창의 이름 'Pivot Change'를 확인할 수 있음
- 각각의 버튼 명을 확인할 수 있음
- 각각의 버튼에 해당하는 기능이 실행됨을 확인할 수 있음
4. 예외처리
1) 선택된 객체가 없으면 알림창을 띄워주기
if obj.count == 0 then
messageBox "Select Some Objects" title:"Warning"
else
2) 롤아웃 중복 실행 방지하기
try (destroydialog junscript) catch()
3) 최종 코드 확인
-- 롤아웃 팝업 중복 방지 --
try (destroydialog junscript) catch()
-- Pivot Change라는 이름으로 롤아웃을 명명함
rollout junscript "Pivot Change"
(
-- 3개의 버튼 UI를 생성함
button btn1 "center" width:80
button btn2 "bottom" width:80
button btn3 "top" width:80
-- 선택한 오브젝트를 중앙, 하단, 상단 정렬하는 명령을 3개의 case로 정의함--
fn movePivotTo mode =
(
obj = selection as array
-- 선택한 오브젝트가 없을 경우 알림창 발생 --
if obj.count == 0 then
messageBox "Select Some Objects" title:"Warning"
else
for items in obj do
(
case mode of
(
1: items.pivot = [items.center.x, items.center.y, items.center.z]
2: items.pivot = [items.center.x, items.center.y, items.min.z]
3: items.pivot = [items.center.x, items.center.y, items.max.z]
)
)
)
-- 3개의 버튼을 누르면 각각 case가 실행되도록 정의함--
on btn1 pressed do
movePivotTo 1
on btn2 pressed do
movePivotTo 2
on btn3 pressed do
movePivotTo 3
)
-- 롤아웃을 생성함
createDialog junscript
4) 저장
- c드라이브에 나만의 스크립트 폴더를 만듬
- 이름.ms 확장자로 저장함
* 실제 사용될 Script는 작성 완료!
4. 매크로 스크립트 만들기
혼자서 사용할 때는 위처럼 만들어서 Customize메뉴에 UI세팅해서 사용해도 되는데,
타인이나 다른 컴퓨터 등에 새롭게 설치하거나 좀 더 쉽게 사용하기 위해 매크로 스크립트로 만들어주도록 함.
1) 매크로 스크립트 코드 기본 양식
macroScript 스크립트 가칭
category: "내 카테고리 명칭"
tooltip: "이 스크립트의 명칭"
buttonText: "롤아웃 버튼의 이름"
(
on execute do fileIn "스크립트 파일 경로"
)
2) 적용 예시
macroScript maxscript1
category: "Junscript"
tooltip: "PivotChange"
buttonText: "Pivot Change"
(
on execute do fileIn "C:\maxScripts\Junscript\pivotchange.ms"
)
3) 저장
- 스크립트 에디터에서 작성한 후,
- 이름을 입력하고 위와 같은 폴더에 저장
*위와 같이 2개의 .ms파일이 있어야 합니다. 하나는 매크로스크립트 파일이며, 하나는 실제 사용하는 스크립트 파일입니다. 위에서 설명한 바와 같이 매크로스크립트를 실행하여 해당 경로에 있는 스크립트를 다시 실행하는 방식입니다.
이걸 하나의 파일로 할 수도 있습니다. 다음 편에 나옵니다.
5. UI 세팅 및 사용
1) 맥스를 끄고 다시 켭니다. (혹은 다른 컴퓨터에서 설치 시 맥스를 새로 켭니다)
2) 맥스 화면위에 저장해놓은 "Junscript.ms"파일만 드래그앤드롭하여 놓습니다.
**여기에서 오류가 있다면 경로 설정에 문제가 있는 경우가 많습니다.
**자신이 만든 스크립트의 경로, 폴더와 파일명을 잘 확인하세요!!
**컴퓨터명칭이나 경로내 폴더이름, 파일이름에 한글이나 특수문자가 있으면 안됩니다.
이후는 일반적인 사용자 상단 커맨드 패널 Bar 설정 방식과 동일합니다.
3) 상단 메뉴에 Customize / User Interface 유저 인터페이스 메뉴 선택
4) Toolbars / Category 에서 "Junscript" 찾으면 일단 성공입니다
5) "Junscript"카테고리 안에 "PivotChange" 라는 툴팁이 있으면 또한 성공입니다.
- 오른쪽 New 버튼 눌러 새로운 툴바 하나 만든 후
- Name에 이름을 가칭을 입력하고 OK
6) 가칭의 바가 생성되면, Action 툴팁을 선택하여 Drag and Drop 하여 적용합니다
7) 바를 선택해서 이동시켜 상단 커맨드 패널에 드래그 앤 드롭하여 옮겨놓습니다.
8) 바를 누르면 롤아웃 버튼창이 활성화되는 것을 확인할 수 있습니다.
모든 오브젝트를 선택 후 한 번에 피봇 위치 이동이 잘 되면 성공입니다!!
BR.h