Modifier(1) Bend
안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
어떤 내용을 이야기할까 고민하다가 Modifier에 대해서 이야기를 하도록 하겠습니다.
제 직군상 Modifier를 사용할 일이 거의 없기는 하지만, 3D Max를 사용한다면 거의 모든 직군이 Modifier를 사용할 것 같아 간단하게 들여다보겠습니다.
우선은 실린더를 하나 만들고 높이는 70에 높이를 7칸으로 나누도록 하겠습니다.
다음과 같이 입력하고 실행해 봅시다.
|
1
2
3
|
myCylinder = Cylinder()
myCylinder.height = 70
myCylinder.heightsegs = 7
|
cs |

위와 같이 실린더가 만들어졌나요?
방금 만든 실린더의 더 많은 옵션은 showProperties 함수를 사용하면 됩니다.
|
1
|
showProperties myCylinder
|
cs |
(이미 myCylinder라는 변수를 설정했기 때문에 변수의 값을 변경하거나 맥스를 끄기 전까지는 처음 만든 값이 유지됩니다. 그렇기 때문에 스크립트 에디터를 지우고 새로 작성해도 에러가 없이 실행이 됩니다.)
저의 까막 득한 기억 속에 처음 배운 Modifier는 아마 Bend였던 것 같습니다.
Band는 오브젝트에 기즈모를 씌워서 이리 구부리고 저리 구부리는 것으로 기억합니다.
스크립트로 만들어서 값을 조정해 봅시다.
(저도 처음 쓰는 Modifier라 공부하면서 쓰겠군요. ㅎㅎ)
다음과 같이 이어서 작성하여 블록을 지정하고 실행해 줍시다.
|
4
|
addModifier myCylinder (bend())
|
cs |
원래 'addModifier myCylinder bend()'이라고 작성했는데 addModifier의 인자의 수가 2개 필요한데 3개가 있다며 오류가 났습니다.
Modifier를 지칭하는 함수들이 내부에서 결괏값 두 개를 반환하나 봅니다.
그래서 그 두 개의 값을 하나의 값으로 취급하기 위해 괄호를 하였습니다.

밴드의 값들을 변경해 볼까요?
세부 값들을 조정하는 방법을 모르겠으니 맥스 스크립트 헬프에게 물어봅시다.
(맥스 스크립트 주소는 공지의 '알아두면 좋은 것!'에 있습니다.)

클릭해서 원하는 내용이 있는지 찾아봅시다.
속성(Properties) 부분의 내용에 궁금한 것들이 나왔습니다.
<Bend>.angle Float default: 0.0 -- animatable
<Bend>. angle는 소수 값을 갖고 기본으로 0.0이 세팅되며 애니메이션이 가능하다는군요.
<Bend>.direction Float default: 0.0 -- animatable
<Bend>. direction 은 소수 값을 갖고 기본적으로 0.0이 세팅되며 애니메이션이 가능하다는군요.
<Bend>.axis Integer default: 2
<Bend>. axis는 정수 값을 갖고 기본적으로 2로 세팅됩니다.
정수 값의 의미는 다음과 같습니다.
0- X, 1- Y, 2- Z
<Bend>.limit Boolean default: false
<Bend>. limit는 불 값을 갖고 기본적으로 false를 갖습니다.
<Bend>.upperlimit Float default: 0.0 -- animatable, alias: Upper_Limit
<Bend>. upperlimit 은 소수 값을 갖고 기본적으로 0.0이 세팅되며 애니메이션이 가능하다는군요.
<Bend>.lowerlimit Float default: 0.0 -- animatable, alias: Lower_Limit
<Bend>.lowerlimit 은 소수 값을 갖고 기본적으로 0.0이 세팅되며 애니메이션이 가능하다는군요.
그 외에도 속성이 더 있으니 확인해 보시기 바랍니다.
그런데 <Bend>는 무엇일까요?
myCylinder를 뜻하는 걸까요?
myCylinder를 뜻하는 것은 아닙니다.
Modifier에서 myCylinder에 스택으로 올라간 Bend를 말하는 것입니다.
다음과 같이 이어서 작성하여 블록을 지정하고 실행해 줍시다.
|
5
|
myCylMod = myCylinder.modifiers[#bend]
|
cs |
적은 내용을 확인해보면 myCylinder에 적용된 modifiers 중에서 bend인([#bend])인 modifier를 찾아 변수 myCylMod에 저장하라입니다.
변수는 오브젝트에 적용된 modifier도 저장이 가능합니다.
'myCylinder.modifiers[#bend]'가 '<bend>'인 것입니다.
'myCylinder.modifiers[#bend]'가 저장된 'myCylMod'도 '<bend>'인 것입니다.
그럼 배운 속성을 한번 써먹어 봅시다.
아까 만든 실린더의 속성 값을
Angle : 30
Direction : 15
Axis : X
Limit : True
Upperlimit : 35
Lowerlimit : 25
이렇게 만들겠습니다.
다음과 같이 이어서 작성하여 한 줄씩 차례로 실행해 봅시다.
|
6
7
8
9
10
11
|
myCylMod.angle = 30
myCylMod.direction = 15
myCylMod.axis = 0
myCylMod.limit = true
myCylMod.upperlimit = 35
myCylMod.lowerlimit = 25
|
cs |

위와 같은 결과가 나왔나요?
Bend의 하위 옵션들도 있지만 그 부분은 여러분들이 직접 연구하면서 확인해 보시기 바랍니다. ㅎㅎ
오늘은 Modifier의 Bend에 대해서 배워 봤습니다.
Modifier는 워낙 내용이 많기 때문에 모두를 설명하지는 않겠습니다.
너무 어려운 것들도 초반에 배우면 혼란만 생길 수 있으니 간단한 것들과 그나마 제가 알고 있는 것들에 대해서 이야기하겠습니다.
오늘의 내용은 Modifier를 생성하고 사용하는 맛 베기를 본 것이고, 다음으로는 Modifier를 지우거나 내가 원하는 Modifier가 존재하는지 확인하는 등의 Modifier자체 속성에 대해서 이야기하도록 하겠습니다.