맥스스크립트 기초

오브젝트의 Transform (2)

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

안녕하세요.

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

오늘도 오브젝트의 Transform에 대해서 얘기해 보도록 하겠습니다.

순서(?)대로 한다면 회전이 먼저 나와야 할 것 같지만 크기를 먼저 이야기하겠습니다.

회전은 여러 가지 방식이 있기 때문에 다음에 이야기하겠습니다.

(귀찮아서 그런 건 아닙니다. ㅎㅎ)

 

우선은 늘 그렇듯 박스를 하나 만들겠습니다.(꼭 박스가 아니라도 부피를 나타낼 수 있는 오브젝트라면 가능합니다.)

 

1
myBox = box()
cs

 

 

 

예쁘게 만들어졌네요.

그다음엔 pos와 같이 scale값을 확인해 봅시다.

다음 내용을 이어서 적고 라인 실행을 합니다.

 

2
myBox.scale
cs

 

 

 

위 이미지와 같이 [1,1,1]이라고 나올 겁니다.

그런데 저번에 기본적으로 만들어진 박스는 Modify에서 확인할 경우 다음과 같은 크기가 된다고 했죠.

 

 

그렇다면 박스의 크기는 [25.0,25.0,25.0]이 scale로 확인할 때 [1,1,1]로 표기되는 걸까요?

한 번 확인해 봅시다.

다음 내용을 이어서 적고 라인 실행을 합니다.

 

3
myBox.length = 50
cs

 

이렇게 입력을 하셨다면,

 

 

Length값이 50으로 변경되면서 박스의 크기가 변했을 것입니다.

 

 

이 변경된 박스는 y축의 크기가 2배가 됐습니다.

즉 y값이 25에서 50으로 변경됐으니 1이 2로 되어야겠죠.

확인해 보도록 하죠.

다음 내용을 이어서 적고 라인 실행을 합니다.

 

4
myBox.scale
cs

 

 

 

아.. 생각과는 다르게 [1,1,1]로 나오네요.

이유는 맥스의 scale는 Length, Width, Height와는 직접적으로 관계가 없다는 이야기입니다.

scale는 '원래 만들어진 상태에서 얼마나 크기에 변형을 줄 것인가?'라는 의미이고,

그 원래라는 기본값은 Length, Width, Height으로 구성되어 있습니다.

Length, Width, Height값을 아무리 변경해도 scale에 서는 그 값을 기준으로 몇 배만큼 변경됐냐를 따지기 때문에 항상 [1,1,1]이 나오는 것입니다.

scale는 맥스 유저라면 익히 알고 있는 상단 스케일 아이콘과 관계가 있습니다. 

 

 

 

스케일은 백분율(%)로 표기되며 100%는 1로 표기됩니다.

정말로 그런지 확인을 해봅시다.

다음 내용을 이어서 적고 라인 실행을 합니다.

 

5
myBox.scale.z = 2
cs

 

 

이번엔 높이 값이 2배로 됐네요.

겉으로 보기엔 Length, Width, Height값을 변경하는 거나 scale을 변경하는 거나 그다지 차이점을 모르겠네요.

내부를 보도록 할까요?

 

 

Height(높이) 값이 바뀐 것은 없습니다.

그러면 스케일 값은 어떻게 바뀌었는지 확인해 보겠습니다.

 

 

Z값이 변경이 됐네요.

 

pos에서도 언급했듯이 Transform은 절대 변경과 상대 변경이 있습니다.

지금까지 얘기한 내용은 절대 변경에 대한 것이었고 상대 변경에 대한 것도 이야기해 봅시다.

 

지금까지 쓴 내용 밑에 다음 내용을 이어서 적고 라인 실행을 합니다.

 

1
scale myBox [1,1,2]
cs

 

 

높이 크기가 2배가 되었습니다.

나머지 x, y 축 값이 1인 이유는 scale는 배율(곱하기)을 사용하기 때문에 값이 변화가 없으려면 1을 넣어야 합니다.

(궁금하시면 0을 넣어 테스트해보세요)

그렇다면 다음과 같은 방법도 가능하겠죠.

다음 내용을 이어서 적고 라인 실행을 합니다.

 

1
myBox.scale.z *= 0.1
cs

 

 

 

위 이미지와 같이 나왔나요?

지금까지 적은 스크립트를 확인해 보도록 하겠습니다.

 

1
2
3
4
5
6
7
myBox = box()
myBox.scale
myBox.length = 50
myBox.scale
myBox.scale.z = 2
scale myBox [1,1,2]
myBox.scale.z *= 0.1
cs

 

처음 z축의 값은 1이었습니다.

5번 라인에서 2배를 키웠으니 z축의 값은 2입니다.

그리고 6번 라인에서 두배(상대적)로 키웠기 때문에 2 * 2 해서 z 축은 4가 됐습니다.

그 후에 7번 라인에서 z 축에 0.1을 곱했기 때문에 결과적으로 0.4가 됐습니다.

정말인지 scale를 확인해 봅시다.

다음 내용을 이어서 적고 라인을 실행해 보거나

 

8
myBox.scale.z
cs

 

 

 

scale아이콘을 클릭해서 값을 확인해 볼 수도 있습니다.

MaxScript Lestener에서 0.4가 나오거나 scale아이콘을 실행해서 40.0이 나올 것입니다.

 

오늘은 오브젝트의 Transform 중 크기에 대해 알아봤습니다.

위치를 확실히 짚고 넘어가셨다면 거의 같은 내용이라 쉬우셨을 겁니다.

다음은 오브젝트의 Transform 중 회전에 대해 이야기하겠습니다.

728x90
반응형

'맥스스크립트 기초' 카테고리의 다른 글

Color Values  (0) 2019.08.02
오브젝트의 옵션  (0) 2019.07.18
오브젝트의 Transform (4)  (0) 2019.07.17
오브젝트의 Transform (3)  (3) 2019.07.16
오브젝트의 Transform (1)  (2) 2019.07.14
기본 오브젝트 만들기  (1) 2019.07.12
맥스스크립트의 알아두면 좋은 것  (0) 2019.07.12
반복문(while)  (3) 2019.07.10