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 메뉴를 이용하여 스피어 지오메트리를 생성한다.
이전 강좌에서 배웠던 후디니 변수 $F 를 여기에서 다시 사용해보자.
스피어 노드의 Translate Y 파라미터에 다음과 같이 '$F * -0.1' 을 넣는다.
타임라인의 플레이버튼을 클릭해 보자.
후디니 화면 우측 밑 Playbar 에 있는 Real Time Toggle 버튼을 눌러서 리얼타임으로 플레이 한다.
다음과 같이 스피어가 -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 는 프레임에 따라 그 값이 변하기 때문에 애니메이션 할 수 있다는 장점이 있다.