728x90
반응형
안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
이번에는 '선택한 노드 Controller 변경하기'를 마무리 짓겠습니다.
이전 시간에 배운 내용은 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
rollout controllerChange_Rollout "ControllerChange"
(
radiobuttons changePos_rbt "Pos 변경" columns:1 labels:#("변경없음", "position XYZ", "TCB") pos:[5, 5]
radiobuttons changeRot_rbt "Rot 변경" columns:1 labels:#("변경없음", "Euler XYZ", "TCB") pos:[90, 5]
button run_btn "실행"
on run_btn pressed do
(
if(changePos_rbt.state == 2) then
(
$.position.controller = Position_XYZ()
)
else if(changePos_rbt.state == 3) then
(
$.position.controller = TCB_Position()
)
if(changeRot_rbt.state == 2) then
(
$.rotation.controller = Euler_XYZ()
)
else if(changeRot_rbt.state == 3) then
(
$.rotation.controller = TCB_Rotation()
)
)
)
createdialog controllerChange_Rollout
|
cs |
이전 시간과는 다르게 오브젝트를 조금 더 만들어 보겠습니다.
지금까지는 '$'라는 문자를 써서 현재 선택한 단일 오브젝트에만 적용하도록 했습니다.
지금부터는 단일 오브젝트가 아닌 현재 선택한 복수 오브젝트를 대상으로 적용되도록 해 보겠습니다.
'on run_btn pressed do'의 이벤트 핸들러를 수정해보겠습니다.
우선 '현재 선택된 오브젝트'는 다음과 같습니다.
selection as array
이것을 변수에 저장하면 해당 변수에 현재 선택된 오브젝트를 스크립트에서 쉽게 사용할 수 있습니다.
원본 스크립트의 8번과 9번 라인사이에 다음을 추가해줍니다.
1
|
selectAllOBJ = selection as array
|
cs |
지금은 실행해 봤자 달라진 부분은 없습니다.
오히려 이상한 결과가 나올 수 있으니 실행하지 말아 주세요.
다음으로 선택한 오브젝트를 for문으로 돌면서 해당 오브젝트의 내용을 변경하도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
rollout controllerChange_Rollout "ControllerChange"
(
radiobuttons changePos_rbt "Pos 변경" columns:1 labels:#("변경없음", "position XYZ", "TCB") pos:[5, 5]
radiobuttons changeRot_rbt "Rot 변경" columns:1 labels:#("변경없음", "Euler XYZ", "TCB") pos:[90, 5]
button run_btn "실행"
on run_btn pressed do
(
selectAllOBJ = selection as array
for i = 1 to selectAllOBJ.count do
(
if(changePos_rbt.state == 2) then
(
selectAllOBJ[i].position.controller = Position_XYZ()
)
else if(changePos_rbt.state == 3) then
(
selectAllOBJ[i].position.controller = TCB_Position()
)
if(changeRot_rbt.state == 2) then
(
selectAllOBJ[i].rotation.controller = Euler_XYZ()
)
else if(changeRot_rbt.state == 3) then
(
selectAllOBJ[i].rotation.controller = TCB_Rotation()
)
)
)
)
createdialog controllerChange_Rollout
|
cs |
이제 정상적으로 작동하는지 실행해 보겠습니다.
스샷으로는 보여 드리기가 애매 하지만 저는 잘 작동하고 있습니다. ㅎㅎㅎ
여러분이 더 필요한 기능이 있으시면 더 추가하여 사용하면 좋을 것 같습니다.
'선택한 노드 Controller 변경하기'는 여기서 마치겠습니다.
728x90
반응형
'맥스스크립트 심화' 카테고리의 다른 글
파일머지 편하게하기(4) (0) | 2021.04.27 |
---|---|
파일머지 편하게하기(3) (0) | 2021.04.26 |
파일머지 편하게하기(2) (0) | 2021.04.23 |
파일머지 편하게하기(1) (0) | 2021.04.22 |
선택한 노드 Controller 변경하기(2) (0) | 2021.04.20 |
선택한 노드 Controller 변경하기(1) (3) | 2021.04.19 |
actionMan을 이용한 대화상자(3) (0) | 2021.04.16 |
actionMan을 이용한 대화상자(2) (0) | 2021.04.15 |