맥스스크립트 심화

선택한 노드 Controller 변경하기(1)

스크립팅하는애님 2021. 4. 19. 19:18
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

이번에는 '선택한 노드 Controller 변경하기'를 알아보겠습니다.

물론 '맥스 스크립트 기본'에 'Constraints'으로 관련 설명을 드렸지만, 실제적으로 사용하는 방법에 대해서는 안 드린 것 같네요.(티스토리 내용이 많아져 찾지를 못했습니다. ㅎㅎㅎ)

그래서 이번 목표는 이전에 설명한 내용을 잘 다듬어 사용하기 편하게 해 보겠습니다.

 

우선 박스 오브젝트를 맥스 뷰포트에 만들어 보겠습니다.

 

 

해당 오브젝트를 선택해 'Assign Controller'를 확인해 보면 다음과 같이 나옵니다.

 

대부분 오브젝트는 이렇게 나옵니다.

 

위 내용을 'TCB'로 변경하는 것은 다음과 같습니다.

 

1
2
$.position.controller=TCB_Position()
$.rotation.controller=TCB_Rotation()
cs

 

1번 라인은 'Position'을 2번 라인은 'Rotation'을 'TCB'로 변경합니다.

그럼 다시 'Position'은 'Position XYZ'으로 'Rotaition'은 'Euler XYZ'로 바꾸기 위해서는 다음과 같이 입력하면 됩니다.

 

1
2
$.position.controller = Position_XYZ()
$.rotation.controller = Euler_XYZ()
cs

 

그냥 이렇게 써도 상관은 없지만 조금 더 편하게 쓰고 싶네요.

라디오 버튼은 사용해 사용하기 편하게 바꿔 보겠습니다.

UI를 사용하기 때문에 대화창의 기본형을 먼저 만들어 보겠습니다.

 

1
2
3
4
rollout controllerChange_Rollout "ControllerChange"
(
)
createdialog controllerChange_Rollout 
cs

 

 

이제 이거 만드는 스크립트는 따로 저장해두세요. ㅎㅎ

 

여기에 라디오 버튼과 일반 버튼을 만들어 주겠습니다.

 

1
2
3
4
5
6
rollout controllerChange_Rollout "ControllerChange"
(
    radiobuttons changeType_rbt "변경" labels:#("원래", "TCB")
    button run_btn "실행"
)
createdialog controllerChange_Rollout 
cs

 

 

 

라디오 버튼의 상태에 따라 '원래 Controller'와 'TCB Controller'를 오가도록 실행 버튼을 누르면 변경을 하도록 하겠습니다.

다음과 같이 이벤트를 추가하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rollout controllerChange_Rollout "ControllerChange"
(
    radiobuttons changeType_rbt "변경" labels:#("원래", "TCB")
    button run_btn "실행"
    
    on run_btn pressed do
    (
        if(changeType_rbt.state == 1) then
        (
            $.position.controller = Position_XYZ()
            $.rotation.controller = Euler_XYZ()
        )
        else
        (
            $.position.controller = TCB_Position()
            $.rotation.controller = TCB_Rotation()
            format "changeType_rbt.state = %\n" changeType_rbt.state
        )
    )    
)
createdialog controllerChange_Rollout 
cs

 

외형적으론 바뀐 게 없지만 이제 라디오 버튼에 따라 'Controller' 속성이 변경되는 것을 볼 수 있습니다.

 

하지만 사용하기에는 부족해 보이네요.

'Position'과 'Rotation'을 각각 별도로 변경할 수가 없고, 다른 녀석들도 좀 추가해서 더 쓰기 편했으면 좋겠습니다.

다음 시간에는 해당 내용에 대해서 이야기하도록 하겠습니다.

728x90
반응형