이것 저것 개발하고 만들어보기
article thumbnail

 

 

 

 

 

Expression 이란?

 

수학의 수식이나 오브젝트의 파라미터를 통해 애니메이션을 컨트롤하고 구축해나가는 기능중 하나입니다.

 

 

 

 

3D MAX 의 Expression 기능은 Script Controller 기능과 비슷한 개념이긴 하나,

 

Script Controller 보다 훨씬 속도가 빠르고 사용하기 간편함에 있습니다.

 

단점으로는 Expression 이 Script Controller 보다 기능이 적다는 점이 있습니다.

 

 

 

 

 

 

 

 

 

 

 

Expression 기능을 이용하는 가장 간단한 방법은 Assign Controller에서 접근하는 것 입니다.

 

커브 에디터나 다른 컨트롤러 창에서 이 옵션을 적용하는 방법도 있지만,

 

지금은 제가 사용하기 가장 간편한 방법으로 접근하였습니다.

 

 

 

 

 

 

 

우선 Position 에서 Position Expression 를 클릭하면 사진과 같은 창이 뜹니다. 

 

Expression 의 최대 특징은 마치 코딩처럼 변수와 상수를 활용하여 오브젝트의 애니메이션을

 

수학적으로 제어가능함에 그 의미가 있습니다.

 

 

 

 

 

 

Expression 가 적용된 오브젝트의 Expression 란에 아무 숫자를 입력해주면

 

오브젝트의 위치가 이동하는 것을 알 수 있습니다.

 

기즈모를 통해 수동으로 이동하려 해도 이동하지 않고 오로지 Expression 창의

 

Expression 란에 입력에 의한 변화만 생깁니다.

 

 

 

 

 

기본적으로 Position은 X,Y,Z 값을 가집니다.

 

[] 안에 존재하는 ,(쉼표) 와 숫자는 해당 좌측부터 순서대로 X Y Z 값을 의미합니다.

 

사진에서 20값을 입력한 자리가 X값에 해당됨으로 포지션이 0,0,0 기준 X축으로 약 20만큼 이동한걸 알 수 있습니다.

 

 

 

 

 

 

 

 

다만 Position 값은 언제나 X, Y, Z로 구분됨으로 쉼표 구분 없는

 

단일 숫자를 입력할 경우 다음과 같은 오류가 발생합니다

 

특정 값을 넣어줄려면 Position 의 자료형인 [ X, Y, Z ] 형식에 맞춰서 값을 입력해 주는것이 좋습니다.

 

 

 

 

 

 

 

 

 

Expression 의 또다른 특징은 코딩을 하듯이 변수를 이용하는 것 입니다.

 

Expression 에는 두가지 자료형이 있는데 단일 값을 가지는 Scalar 와

 

XYZ 값을 동시에 가지는 Vector 자료형이 있습니다.

 

 

 

Name 에 변수가 될 임의의 이름을 아무렇게 지어주고, Scalar, Vector 자료형 을 선택한 뒤에

 

Create 버튼으로 변수를 만들어 주면 사용이 가능한 상태로 Scalars 나 Vectors 탭에 등록이 됩니다.

 

 

 

 

 

 

 

 

Scalars 에 등록된 변수를 더블클릭 해보면, 해당 변수의 값을 입력할 수 있는 창이 나타납니다.

 

이 창에 임의의 숫자를 입력하고 변수 이름을 Expression 탭에 X, Y, Z 아무데나 값에 입력시키면

 

사진과 같이 포지션이 변하는 것을 알 수 있습니다. 

 

 

 

 

 

 

 

 

 

Vector의 자료형인 변수는 Scalar 자료형인 변수와는 조금 다른점이 있습니다.

 

Vectors 에 등록된 변수를 더블클릭 하면 Scalar 변수와는 다르게 숫자 3개를 입력할수 있는 탭이 나옵니다.

 

이를 통해 알 수 있는 것은 Vector 변수의 자료형은 XYZ 좌표값을 모두 가진 변수로

 

이를 Expression 탭에 변수명을 입력만 해도 입력된 값을 토대로 작동합니다.

 

 

 

 

 

 

사진의 Vectors_00.y 는 변수의 Y값만 참조하겠다는 의미가 됩니다

 

 

Expression 에는 예약 변수라는 것 또한 존재합니다.

 

Function List 왼쪽에 존재하는 변수명의 이름들을 써주는 것으로 변수의 기능을 가져올 수 있습니다.

 

사진에 쓰인 F 라는 이름의 예약 변수를 Vectors_00.y 앞에 더해주면 Y축으로 오브젝트가 천천히 이동하는데,

 

이는 F=frames 의 예약 변수를 받아 프레임단위로 오브젝트가 움직이고 있는 뜻이 됩니다.

 

이를 활용하여 다양한 애니메이션 효과를 만들어 낼 수 있습니다.

 

 

 

 

 

 

 

Expression의 또다른 기능을 사용하기 위해

 

주전자와 Bend 모디파이어가 적용된 오브젝트를 준비합니다.

 

 

 

 

 

 

Assing to Controller 버튼을 클릭해서 목록이 뜨면 사각형 오브젝트의 이름을 찾고

 

해당 오브젝트에 적용되어 있던 Angle을 찾아 OK 버튼을 눌러 변수에 연결시켜 줍니다.

 

이제 Expose_Angle변수는 Bend 모디파이어의 Angle 값에 따라서 그 값이 변합니다.

 

 

 

 

Angle 값의 숫자 변화에 따라 주전자가 움직입니다.

 

 

Bend 모디파이어 Angle 값에 애니메이팅을 주면 Y축에 해당 변수를 입력했음으로

 

Y축 기준으로 주전자가 같이 움직입니다.

 

 

 

 

 

 

Expression 기능으로 링크없이도 언제든 오브젝트를 정렬시켜 줄 수 있습니다.

 

 

 

또한 모디파이어의 Angle 값을 받아서 변수값을 입력했듯 Vector 자료형의 변수도

 

XYZ 값을 기본으로 하는 모디파이어나 컨트롤러에 연결시켜 줄 수 있습니다.

 

사진처럼 아예 두 오브젝트의 포지션값도 정렬시켜 주거나,

 

 

 

 

 

 

 

튜브의 Y축 값을 주전자의 X축 값으로 연결시켰습니다.

 

 

특정 축의 값만 받아서 오브젝트를 반응시키기도 가능해집니다.

 

 

 

 

 

 

 

 

 

 

 

튜브에 비해 주전자가 한타이밍 늦게 따라옵니다.

 

 

Expression 에 Variable Parameters 란에 Tick Offset 이라는 값이 있습니다. 

 

Tick은 예약 변수의 T와 같이 TPS 라는 상수를 의미하며 1초당 틱 숫자를 의미합니다.

 

3D MAX 에서는 이 Tick은 1초에 4800Tick 을 의미합니다.

 

즉, Tick Offset이 +-4800이라면 해당 변수는 +-1초 뒤에 해당 변수의 값이 적용됩니다.

 

Tick Offset을 활용해서 한박자 늦게 따라오는 오브젝트들을 배치하여

 

잔상을 연출하는 등의 효과를 만들수도 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 문헌 : 캐릭터 셋업 테크닉 (저자: 이상원)

 

 

profile

이것 저것 개발하고 만들어보기

@Tintana'k