독학.NET

SOP 익스프레션

후디니 작업을 자동화시키며 편리성을 극대화할 수 있는 익스프레션에 대해 알아보자.

Posted: January 9, 2017
Version: Houdini 15

익스프레션(Expression) 은 무엇인가?

익스프레션은 후디니 안에서 사용되는 함수(Function)들의 모임이다.

Function 의 기본틀은 다음과 같이 입력과 출력이다.

 

a와 b를 입력으로 받은 함수 function( )은 연산결과를 출력한다.

이 때 a, b 는 그 함수의 인자라고 부른다.

 

다음은 대표적인 후디니 익스프레션들의 예이다.

abs( ), fit( ), min( ), max( ), smooth( ), opinputpath( ), nprims( ), sin( ), cos( ), tan( )

각각의 함수는 받는 인자의 개수도 서로 다르고 저마다 처리하는 기능도 다르다.

위의 예 이외에도 후디니 익스프레션의 종류는 굉장히 많다. 하지만 서두를 필요없이 차근차근 하나씩 알아가면 된다.


익스프레션의 사용예

네트워크뷰에서 TAB 메뉴를 이용하여 스피어 지오메트리를 생성한다.

'sphere' 이름을 가진 원구 오브젝트가 생성된다.

'sphere' 이름을 가진 원구 오브젝트가 생성된다.

 

이전 강좌에서 배웠던 후디니 변수 $F 를 여기에서 다시 사용해보자.

스피어 노드의 Translate Y 파라미터에 다음과 같이 '$F * -0.1' 을 넣는다.

Translate 파라미터는 오브젝트를 각 축(X,Y,Z) 으로 이동시키는 역할을 한다.

Translate 파라미터는 오브젝트를 각 축(X,Y,Z) 으로 이동시키는 역할을 한다.

 

타임라인의 플레이버튼을 클릭해 보자.

 

후디니 화면 우측 밑 Playbar 에 있는 Real Time Toggle 버튼을 눌러서 리얼타임으로 플레이 한다.

리얼타임이란 1초에 24프레임의 속도로 플레이 하는 것을 말한다.

리얼타임이란 1초에 24프레임의 속도로 플레이 하는 것을 말한다.

 

다음과 같이 스피어가 -Y 방향으로 계속 이동하는 것을 볼 수 있다.

그 원리는 다음과 같다.

후디니 변수는 다른 수들과 사칙연산이 가능하다.

프레임 1에서 $F * -0.1 = 1 * -0.1 = -0.1

프레임 2에서 $F * -0.1 = 2 * -0.1 = -0.2

프레임 10에서 $F * -0.1 = 10 * -0.1 = -1

프레임 100에서 $F * -0.1 = 100 * -0.1 = -10

 

여기까지는 이전 강좌에서 배웠던 것과 비슷하다.

이제 후디니 익스프레션 중에서 abs( ) 함수를 적용해 보자.

이번에는 스피어 Translate Y 속성값을 다음과 같이 수정한다.

 

'$F * -0.1' 는 그대로 있고 이를 abs( ) 함수가 그 인자로 쓰고 있다.

플레이 해보면 이번에는 스피어가 +Y 방향으로 계속 이동한다.

그 원리는 다음과 같다.

abs( ) 함수는 괄호안의 인자를 무조건 양수로 변환시킨다. 즉,

프레임 1에서 abs($F * -0.1) = abs(1 * -0.1) = abs(-0.1) = 0.1

프레임 2에서 abs($F * -0.1) = abs(2 * -0.1) = abs(-0.2) = 0.2

프레임 10에서 abs($F * -0.1) = abs(10 * -0.1) = abs(-1) = 1

프레임 100에서 abs($F * -0.1) = abs(100 * -0.1) = abs(-10) = 10

익스프레션을 반드시 후디니 변수($F) 와 함께 사용해야 할 필요는 없다. 예를 들어, abs(-10) 은 양수 10을 리턴한다. 다만, $F 는 프레임에 따라 그 값이 변하기 때문에 애니메이션 할 수 있다는 장점이 있다.