본문 바로가기
3Ds Max Script

맥스 스크립트로 피라미드를 쌓아봅시다.

by 대마왕J 2023. 7. 7.

역시 책에 있는 예제를 제맘대로 해석해서 만들어 봅니다. 책 좋네요 특히 예제가. 
우선 최종 결과물은 이런걸 만들 생각입니다. 차곡차곡차곡 쌓아 올라가면서 점점 박스가 작아지고, 최고로 작아지면 끝나는 그런... 

 

그럼 우선 박스를 만들수 있어야 겠지요. 

어떻게 만드는지 모르겠으니, Listener에서 보고 베낍시다. 
Listener를 켜고 박스를 드래그로 대충 만들어 보면 아래와 같은 메시지를 뱉어냅니다. 
이히히 보고 베껴야지 ChatGPT가 따로없네

Box pos:[0,0,0]  width:50 length:50 height:5 wirecolor:yellow

라고 써줬습니다. 선택하는(isSelected) 는 필요없으니까 삭제해줬고, 색 바꾸는건 역시 Listener 가 
$.wireColor = color 225 198 87 이런 힌트를 뱉어줘서 참고해서 써줬습니다. 

그리고 실행하면 당연히 이렇게

박스가 잘 찍힙니다. 50 50 에 높이가 5인 박스입니다.

이제 이걸 여러 개 찍을 수 있게 해야겠죠. 그것도 높이가 각각 다르게.

While 문을 사용해 봅시다. for 문으로 해도 되겠군요 근데 이번에는 While 문으로.. 
일단 아래와 같이 하면...
X 가 10에서 시작해서 점점 1씩 줄어드니까 10개가 같은 자리에서 생기겠군요

x = 10

while x>0 do
(
	Box pos:[0,0,0]  width:50 length:50 height:5 wirecolor:yellow
	x -= 1
)

네입 잘 만들어 졌습니다. 근데 진짜 제자리에 만들어져 있으니 이건 뭐.. 진짜 쓸모없네. 

그래서 이번엔 위로 올라가면서 찍히게 해보겠습니다 

x = 10
boxZpos = 0

while x>0 do
(
	Box pos:[0,0,boxZpos]  width:50 length:50 height:5 wirecolor:yellow
	x -= 1
	boxZpos += 5
)

올 생각한대로 쉽게 되는군요. 뭐 프로그램이 다 거기서 거기지 (?) 

이번엔 위로 올라가면서 점점 작아지게 하고, 면적이 일정 이하가 되면 그만두게 해야겠어요 

x = 10
boxZpos = 0
boxwidth = 50 
boxlength = 50

while x>5 do
(
	-- 키보드에 esc 눌리면 빠져나오게 
	if keyboard.escPressed do exit
	
	Box pos:[0,0,boxZpos]  width:boxwidth length:boxlength height:5 wirecolor:yellow
	x -= 1
	boxZpos += 5
	
	-- 매번 박스 가로 세로가 5씩 줄어들게 
	boxwidth -= 5
	boxlength -= 5
	
	-- 면적계산 
	x = boxwidth * boxlength
	
)

for문으로도 할 수 있겠는데 특정한 조건이 되었을때 튕겨나오는 거면 while 문이 좋겠네요 

반응형

'3Ds Max Script' 카테고리의 다른 글

특정 문자 치환하기  (0) 2023.07.12
Break Point  (0) 2023.07.11
맥스 스크립트로 구구단을 출력해 봅시다  (2) 2023.07.07
Scripting Editor  (0) 2023.07.07
MaxScript Listener  (0) 2023.07.06

댓글