MaxScript
3ds Max를 다루기 위한 C++ 기반의 스크립트 언어. Maya나 후디니 등 다른 프로그램에선 사용할 수 없기 때문에 Python을 사용하는 것이 더 범용적이다.
box() --생성된 box는 $Box001 이름을 갖는다.
ConvertTo $Box001 Editable_Poly --$Box001을 Editable Poly로 변환
select $Box001 --$Box001을 선택
subObjectLevel = 1 --Editable_Poly 1번 선택 모드인 Vertex 모드로 전환
$Box001.SetSelection #Vertex #{1..8} --Vertex 1번부터 8번까지 선택
$Box001.chamferVertices 10.0 --선택한 vertex에 chamfer를 10만큼 적용
MaxScript 명령어 참조 방법
1. Scripting Listener 참고하기
Box pos:[-12.8808,-14.2865,0] isSelected:on width:56.8897 length:28.0018 height:55.2531
clearSelection()
select $Box001
move $ [0,25.7776,0]
move $ [0,-11.1289,0]
select $Box001
actionMan.executeAction 0 "40020" -- Edit: Delete Objects
delete $
2. 3ds Max 2023 Developer Help 참고하기
MaxScript 언어 요소
변수
test_001 = 1
test_002 = 2 + 3
test_003 = 1.0
test_004 = "abcd"
test_005 = box pos: [0,0,0]
test_006 = [10, 10, 10]
print test_006
일반 프로그래밍 언어와 같이 변수 선언이 가능하다.
box()
ConvertTo $box001 Editable_Poly
select $box001
subObjectLevel = 1
$box001.SetSelection #Vertex #{1..8}
$box001.chamferVertices 10.0
앞서 사용했던 코드에 변수를 추가한다면 아래와 같이 쓸 수 있다.
변수를 선언함으로써 코드 가독성을 높일 수 있다.
a = box()
ConvertTo a Editable_Poly
select a
subObjectLevel = 1
a.SetSelection #Vertex #{1..8}
a.chamferVertices 10.0
if문
if 1 == 1 do
(
test_005 = box()
)
if 2 == 1 do
(
test_005 = box()
)
if 1 != 1 then
(
test_005 = box()
)
else if 1 == 1 then
(
test_005 = sphere()
)
else
(
test_005 = Capsule()
)
특이하게 if문 뒤에 do, then이 붙는다.
if문으로 아래의 예제처럼 만들 수 있다.
cTime = (currentTime as integer) / ticksPerFrame --현재 프레임을 구하는 코드
if cTime < 50 then
(
box pos : [cTime, 0, 0]
)
else
(
Sphere pos : [0, 0, cTime]
)
for문
for i in 1 to 10 do
(
Box pos : [i * 10, 0, 0] scale : [0.2, 0.2, 0.2]
)
for문은 in, to, do를 통해 초기화, 조건식, 변화식을 표현한다.
함수
function myFirstMaxScript =
(
for i in - 10 to 10 do
(
for j in - 10 to 10 do
(
Box pos : [i * 10, j * 10, 0] scale : [0.4, 0.4, 0.4]
)
)
select $*
Selected = $
for i in Selected do
(
randNumber = random 1 10
move i[0, 0, randNumber]
)
)
myFirstMaxScript()
위 함수 코드를 지워도 호출 및 실행은 가능하다.
myFirstMaxScript()
이제 위 개념을 토대로 아주 간단한 툴을 만들어보자.
--gui 코드
rollout test "MyFirstScript"
(
button btn01 "Make Boxes" pos: [5, 5] width : 130 helght : 24
on btn01 pressed do
(
myFirstMaxScript()
)
)
CreateDialog test width : 140 helght : 40
--함수
function myFirstMaxScript =
(
for i in - 10 to 10 do
(
for j in - 10 to 10 do
(
Box pos : [i * 10, j * 10, 0] scale : [0.4, 0.4, 0.4]
)
)
select $*
Selected = $
for i in Selected do
(
randNumber = random 1 10
move i[0, 0, randNumber]
)
)
'둥지 > DCC' 카테고리의 다른 글
[콕콕] Blender Add on (0) | 2024.05.04 |
---|