안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 제가 필요해서 만드는 오브젝트의 하이드와 박스 모드를 쉽게 하는 스크립트를 만들겠습니다.
최근 작업중에 특정 오브젝트를 숨기거나 보이게 하고, 박스 모드로 토글 하는 작업을 많이 하게 됐습니다.
물론 맥스에는 기본 기능으로 Layer를 사용하여 오브젝트의 상태를 컨트롤 할 수 있는데요.
같은 성질의 오브젝트를 묶더라도 그 안에서 하이드와 박스모드를 따로따로 가야 할 경우가 있습니다.
이렇게 저렇게 얘기 해도 사실 저의 작업 방식 때문에 이번 이야기를 하게 됐습니다.
제가 생각하는 작동 방식은
1 오브젝트 하나 또는 복수개 선택한다.
2 'Hide' 버튼을 누르면 각각의 오브젝트를 확인하며 Hide 상태이면 Unhide, Unhide 상태이면 Hide로 바꿉니다.
3 'Box' 버튼을 누르면 각각의 오브젝트를 확인하며 Box Mode 상태이면 Mesh Mode, Mesh Mode 상태이면 Box Mode로 바꿉니다.
입니다.
간단한 기능이니 생각보다 쉽게 끝날것 같습니다. ㅎㅎㅎ
우선은 대화창으로 진행할것이기 때문에 대화창 기본 형태를 만들겠습니다.
1
2
3
4
5
|
rollout hideBoxMode_Rollout "Hide/Box Mode"
(
)
createdialog hideBoxMode_Rollout
|
cs |
'Hide'와 'Box' 버튼을 두 개 만들겠습니다.
1
2
3
4
5
6
|
rollout hideBoxMode_Rollout "Hide/Box Mode"
(
button hide_btn "Hide" width:70 pos:[5, 5]
button box_btn "Box" width:70 pos:[85, 5]
)
createdialog hideBoxMode_Rollout
|
cs |
위와 같이 나온다면 외형은 다 만들었습니다.
우선 'Hide' 버튼을 먼저 작업하겠습니다.
하나의 오브젝트를 선택했을때 선택한 오브젝트가 Hide상태인지 아닌지를 확인해서 각각의 상태에 따라 반대되도록 하겠습니다.
다음과 같이 추가하여 확인해 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
rollout hideBoxMode_Rollout "Hide/Box Mode"
(
button hide_btn "Hide" width:70 pos:[5, 5]
button box_btn "Box" width:70 pos:[85, 5]
on hide_btn pressed do
(
if($.isHidden == true) then unhide $
else hide $
)
)
createdialog hideBoxMode_Rollout
|
cs |
8번 라인의 내용은 '선택한 노드의 isHidden(숨김)이 맞으면 숨김을 해제하고
9번 라인의 내용은 8번라인의 반대를 뜻합니다.
<node>.isHidden Boolean default: false
해당 노드의 숨김을 확인하여 숨겨졌으면 true를 아니면 false를 표시합니다.
자세한 내용은 여기서 확인할 수 있습니다.
이제 오브젝트 하나를 만들고 선택한 다음 버튼을 눌러보면 '숨겨졌다 / 보였다'를 반복합니다.
저는 숨김 상태에서 오브젝트를 선택할 때 'Schematic View'를 주로 사용하기 때문에 오브젝트가 숨겨져 있어도 선택을 하는 데는 문제가 없긴 합니다.
스크립트의 핵심인 숨김과 보임이 잘 작동하는 것을 봤으니 for문을 사용하여 여러 개의 노드를 선택했을 때 적용되도록 수정하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
|
.....
on hide_btn pressed do
(
selectNode = (selection as array)
for i = 1 to selectNode.count do
(
if(selectNode[i].isHidden == true) then unhide selectNode[i]
else hide selectNode[i]
)
)
.....
|
cs |
이렇게 수정하고 오브젝트를 두 개 이상 만들고 숨김과 보임을 다르게 하여 'Hide'버튼을 눌러보면 정상적으로 작동합니다.
복수개의 노드에서 숨김과 보임이 잘 작동하네요.
오늘은 Hide만 작업하고 다음 시간에 Box Mode에 대해서 이야기하겠습니다.
다음 시간에 뵙겠습니다.
'맥스스크립트 심화' 카테고리의 다른 글
배치스크립트 2 (2) | 2021.06.27 |
---|---|
배치스크립트 1 (2) | 2021.06.27 |
Edit poly, Editablepoly, Edit Mesh, Editable Mesh 확인하고 분기나누기. (1) | 2021.05.12 |
오브젝트의 하이드와 박스모드 쉽게하기(2) (0) | 2021.05.11 |
파일머지 편하게하기(8) (0) | 2021.05.03 |
파일머지 편하게하기(7) (0) | 2021.04.30 |
파일머지 편하게하기(6) (0) | 2021.04.29 |
파일머지 편하게하기(5) (0) | 2021.04.28 |