맥스스크립트 심화

자식노드 선택(3)

스크립팅하는애님 2019. 9. 17. 16:15
728x90
반응형

안녕하세요.

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

오늘도 지난번에 이어서  자식 노드를 선택하는 방법을 이어서 진행하겠습니다.

 

오늘은 두 개 이상의 시작 노드를 처리하는 방법에 대해서 알아보겠습니다.

두 개 이상이라는 것은 같은 행동을 두 번 이상 한다는 것이죠.

그럴 경우에 for문이나 while문을 사용하면 될 것이라 예상할 수 있네요.

 

우선 지난번까지 작업한 스크립트를 열고 바이 패드를 하나 생성해 줍니다.

 

 

스크립트의

1번 라인이 하나의 오브젝트를 저장하도록 되어 있던 것을 여러 오브젝트가 들어올 수 있도록 배열 형태로 변경해줍니다.

 

1
selObj = selection as array
cs

 

다음으로 선택한 노드가 한 개 이상일 경우가 있기 때문에

7번과 8번 라인을 for문으로 감싸서 각각의 노드를 처리할 수 있도록 해줍니다.

 

1
2
3
4
5
for i = 1 to selObj.count do
(
    append childNode selObj[i]
    append selNode selObj[i]
)
cs

 

for문으로 오브젝트를 받아 오기 때문에 selObj[i]같은 형태로 사용해야 합니다.

 

지금까지 작업한 내용은 다음과 같습니다.

 

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
34
selObj = selection as array -- 수정 부분
childNode  = #()
nextChild = #()
selNode = #()
childNodeFlag = true
 
for i = 1 to selObj.count do -- 수정 부분
( -- 수정 부분
    append childNode selObj[i] -- 수정 부분
    append selNode selObj[i] -- 수정 부분
) -- 수정 부분
 
while(childNodeFlag == truedo
(
    if keyboard.escPressed do exit
        
    if(childNode.count != 0) then
    (
        for i = 1 to childNode.count do
        (
            for j = 1 to childNode[i].children.count do
            (
                append nextChild childNode[i].children[j]
                append selNode childNode[i].children[j]
                format "childNode[%].children[%] = %\n" i j childNode[i].children[j]
            )
        )
        childNode = nextChild
        nextChild = #()
    )
    else childNodeFlag = false
)
 
select selNode
 
cs

 

확인해 보시고 바이 패드의 노드를 두 개 이상 선택하고 실행해 봅시다.

이렇게 양쪽 어께를 잡아서 해보고,

 

대칭이 아닌 상태도 해보고,

 

선택한 자식을 선택해도 잘 되네요. ㅎㅎ

 

내용이 조금 짧은 느낌이 들지만 오늘은 여기서 마치도록 하겠습니다.

다음 시간에는 UI를 적용하여 사용하는 방법에 대해서 알아보겠습니다.

728x90
반응형

'맥스스크립트 심화' 카테고리의 다른 글

슬롯머신(2)  (0) 2019.09.24
슬롯머신(1)  (0) 2019.09.23
Selection Filter확장  (0) 2019.09.19
자식노드 선택(4)  (2) 2019.09.18
자식노드 선택(2)  (0) 2019.09.16
자식노드 선택(1)  (0) 2019.09.15
오브젝트의 선택(3)  (0) 2019.09.14
오브젝트의 선택(2)  (0) 2019.09.13