안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘부터 본격적(?)으로 맥스 스크립트를 이용하여 뷰포트 상에서 작업해 보겠습니다.
우선 가장 기본적인 오브젝트인 박스를 만들도록 하겠습니다.
아! 참고로 오늘부터는 MAXScript Listener와 Script editor창의 스샷은 특별한 경우가 아니면 생략하겠습니다.
여러분의 맥스 창에서 직접 입력하여 확인해 보도록 하세요.
우선 박스를 하나 만들어 보도록 하겠습니다.
다음과 같이 입력하여 실행해 보세요.
1
|
box()
|
cs |
자 위 이미지와 같이 박스가 만들어졌나요?
박스 만드는 거 생각보다 어렵지 않습니다.
박스의 상태를 한본 확인해 봅시다.
우선 위치 값이 월드 축 기준으로 X : 0, Y : 0, Z : 0이네요.
그리고 회전 값도 월드 축 기준으로 X : 0, Y : 0, Z : 0 값을 가지고 있습니다.
크기는 Length : 25, Width : 25, Height : 25 인 정사각형이고,
박스의 세그먼트들도 1로 되어 있습니다.
아주 평범한 박스 하나입니다.
그 이유는 box()라는 명령어가 기본적인 박스를 만들으라는 명령이기 때문입니다.
그럼 박스에 몇 가지 설정을 더해 보도록 해봅시다.
이전에 만든 박스는 지우고 다시 다음과 같이 쓴 다음 실행해 봅시다.
1
|
box length:10 width:30 height:50
|
cs |
()가 없어지고 뒤에 여러 가지가 붙었습니다.
length:10 width:30 height:50이라고 적었습니다.
어디서 많이 본 단어입니다.
박스 오브젝트를 선택하고 Modify탭을 선택하면 박스의 parameters에 있는 값입니다.

다른 값들에 대해서 더 알아보도록 하겠습니다.
.lengthsegs 정수 기본값: 1
.widthsegs 정수 기본값: 1
.heightsegs 정수 기본값: 1
기존에 만든 박스는 지우고 다시 한번 다음과 같이 쓰고 실행해 봅시다.
위와 같은 결과가 나왔나요?
방금 적었던 옵션은 각 면의 세그먼트를 결정하는 옵션이었습니다.
이렇게 오브젝트를 생성할 때 입력할 수 있는 여러 가지 값을 Parameters(파라미터)라고 합니다.
그런데 꼭 오브젝트를 생성할 때만 파라미터를 넣을 수 있는 것은 아닙니다.
기존의 박스를 삭제하고 다음과 같이 입력한 다음 실행해 봅시다.
1
|
myBox = box()
|
cs |

아까 처음에 박스를 만들었던 방법하고 비슷합니다.
다만 만든 박스를 myBox라는 변수에 넣었네요.
이전에도 설명한 것 같지만 변수는 맥스의 오브젝트도 저장할 수 있습니다.
물론 우리가 눈으로 보고 있는 박스 이미지 자체를 저장하는 것은 아니고, 눈에 보일 수 있게 화면 뒤에 있는 박스의 파라미터들을 저장하고 있는 것입니다.
게임의 '저장'처럼 지금 상황의 모든 값들을 저장하는 것이지 게임 화면 이미지를 저장하는 것은 아닙니다.
다음 줄에 다음과 같은 내용을 이어서 써봅시다.
2
|
myBox.length = 30
|
cs |
여기서 잠깐!!
맥스 스크립트 에디터 상에서 'Tools>Evaluate All'이나 단축키로 'Ctrl + E'를 하면 1번 라인도 실행이 돼서 박스가 두 개 만들어집니다.
이럴 때는 1줄만 실행해야 하는데요.
'Tools>Evaluate Line / Selection'이나 단축키로 'Shifr + Enter'를 하면 됩니다.
단축키에는 없지만 저는 키패드의 엔터를 사용합니다.
스크립트를 블록 지정하면 블록 지정된 부분만 실행이 되고 블록 지정을 하지 않으면 커서가 있는 라인만 실행합니다.(은근히 편한 기능입니다.)
라인 실행으로 2번 라인만 실행해 봅시다.
약간 길쭉해져 보이네요. ㅎㅎ
좀 더 바뀐 게 눈에 띄게 수정을 팍팍해볼까요?
다음 라인에 이어서 적어 봅시다.
3
4
5
6
|
myBox.height = 70
myBox.lengthsegs = 5
myBox.widthsegs = 10
myBox.heightsegs = 2
|
cs |
자 이상하게 생긴 박스가 완성됐습니다.
박스의 파라미터로 또 뭐가 있는지 궁금해질 때가 있습니다.
1
|
showProperties myBox
|
cs |
이렇게 입력하면 맥스 스크립트 리스너에서
.height : float
.length : float
.lengthsegs : integer
.width : float
.widthsegs : integer
.mapcoords : boolean
.heightsegs : integer
.realWorldMapSize : boolean
false
이런 식으로 출력을 해줍니다.
여기 나오는 것은 아까 설명드린 방식으로 값을 조정할 수 있습니다.
주전자 오브젝트도 같은 속성을 가지고 있을까요?
한번 확인해 봅시다.
1
2
|
myTeapot = teapot()
showProperties myTeapot
|
cs |
이런 식으로 주전자를 만들고 속성을 확인해 보면
.smooth : boolean
.radius : float
.segs : integer
.mapcoords : boolean
.body : boolean
.handle : boolean
.spout : boolean
.lid : boolean
.realWorldMapSize : boolean
false
이렇게 다른 값들이 나오게 됩니다.
아직 스크립트로 오브젝트를 조절하는 것이 어색할 테니 여러 가지 기본 오브젝트를 가지고 테스트를 해보세요.
오늘은 맥스 스크립트로 기본오브젝트를 만들고 속성을 변경하는 것에 대해 얘기해 보았습니다.
슬슬 맥스 스크립트의 장점이 보이기 시작하셨나요?
다음에는 기본 오브젝트의 Transform에 대해서 알아보도록 하겠습니다.
'맥스스크립트 기초' 카테고리의 다른 글
오브젝트의 Transform (4) (0) | 2019.07.17 |
---|---|
오브젝트의 Transform (3) (3) | 2019.07.16 |
오브젝트의 Transform (2) (0) | 2019.07.15 |
오브젝트의 Transform (1) (2) | 2019.07.14 |
맥스스크립트의 알아두면 좋은 것 (0) | 2019.07.12 |
반복문(while) (3) | 2019.07.10 |
반복문(for) (8) | 2019.07.09 |
제어문(case) (5) | 2019.07.07 |