WIRE 시뮬레이션

Wire 시뮬레이션이란 무엇이며 후디니에서 어떻게 구현되는지 알아보자.

Posted: July 25, 2019

Version: Houdini 17.5


Wire 시뮬레이션이란?

DOP_wire_1.jpg

와이어처럼 줄 또는 선 형태를 가진 물체의 운동을 나타내는 다이나믹이다.

 

다음과 같은 상황들이 Wire 시뮬레이션에 포함될 수 있다.

  • 고무줄이 늘어났다 줄었다 하는 모습

  • 나뭇가지들이 바람에 흔들리는 모습

  • 캐릭터의 동작에 따라 머리카락이 출렁이는 모습


Wire 시뮬레이션 기본구조

후디니 Wire 시뮬레이션의 기본 골격은 다음과 같다.

Wire 오브젝트가 어떤 힘을 받을 경우, Wire 솔버가 그 힘을 계산하여 오브젝트를 움직인다.

Wire Object, Wire Solver 노드

Wire Object, Wire Solver 노드


Wire 시뮬레이션 구현하기

다이나믹을 하기위해 /obj 경로에 DOP Network 노드를 하나 만든다.

만들어진 'dopnet1' 노드 안쪽 Dynamics 레벨로 들어간다.

DOP_rbd_3.jpg

TAB 메뉴를 이용해 Wire Object DOP, Wire Solver DOP 노드를 하나씩 만든다.

만들어진 'wireobject1' 과 'wiresolver1' 노드를 다음과 같이 연결한다.

Output Flag 를 맨밑에 있는 'output' 노드로 지정해준다.

DOP_wire_3.jpg
DOP Network 안에 자동으로 생성되는 Output DOP 노도는 최종 시뮬레이션의 결과를 하드디스크에 저장해주는 기능을 한다. 실무에서는 거의 사용하지 않으므로 가볍게 생각하도록 하자.

 

씬 뷰에 나타난 나뭇가지는 'wireobject1' 노드의 SOP Path 기본값이 나뭇가지이기 때문이다.

 

이 SOP Path 속성값에 여러분들이 원하는 어떤 오브젝트도 올 수 있다.

DOP_wire_4.jpg

 

현재 기본골격인 오브젝트와 솔버가 있지만, 플레이를 해도 나뭇가지는 아무 변화가 없다.

그것은 나뭇가지를 움직이게 만드는 외부힘이 존재하지 않기 때문이다.

 

이번에는 외부힘으로서 중력 대신에 바람을 만들어보자.

TAB 메뉴를 이용해서 Wind Force DOP 노드를 한개 만들어준다.

DOP_wire_5.jpg

만들어진 ‘windforce1’ 노드를 'wiresolver1' 과 'output' 노드 사이에 연결해 준다.

DOP_wire_6.jpg

'windforce1' 노드의 파라미터 창을 다음과 같이 수정한다.

Velocity 속성에서 바람이 부는 방향을 X,Y,Z 축별로 설정할 수 있다.

Velocity 속성에서 바람이 부는 방향을 X,Y,Z 축별로 설정할 수 있다.

후디니 화면 밑쪽 Playbar 에 있는 Play 버튼을 클릭해서 플레이 해본다.

이때 플레이버튼 밑에 있는 Real Time Toggle 버튼을 눌러서 리얼타임으로 플레이 한다.

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

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

 

'windforce1' 노드의 Velocity 가 (0, 0, 1) 이기 때문에 플레이 해보면 나뭇가지가 Z 방향으로 날라간다.

다이나믹을 플레이 할 때는 반드시 프레임 번호가 1인 지점에서 시작하도록 한다.

 

이번에는 바람이 +Z 방향과 -Z 방향으로 왔다갔다하게 만들어 보자.

'windforce1' 노드의 Velocity 속성값을 다음과 같이 수정한다.

DOP_wire_9.jpg

 

Cosine 함수에 의해서 Velocity Z 속성값이 -1부터 1까지 왔다갔다하게 된다.

하지만 플레이 해보면 이전과 동일하게 +Z 방향으로만 날아간다.

그 해답은 많은 DOP 노드들이 공통적으로 가지고 있는 Default Operation 속성에서 찾을 수 있다.


Wire 시뮬레이션 마무리하기

Default Operation 속성값이 'Set Initial' 이면 프레임 1에서의 값이 변하지 않고 계속 지속된다.

즉, 프레임 1에서 cos($F*5) 의 값 0.996195 가 시뮬레이션 내내 그대로 지속된 것이었다.

위처럼 익스프레션을 실제 숫자로 확인하고자 할때는 파라미터 이름을 클릭해 준다.

위처럼 익스프레션을 실제 숫자로 확인하고자 할때는 파라미터 이름을 클릭해 준다.

'windforce1' 노드의 Default Operation 속성값을 'Set Always' 로 바꾼다.

비로소, 위의 익스프레션 cos($F*5) 가 매 프레임마다 적용되어 나뭇가지가 왔다갔다 하게된다.

나뭇가지가 랜덤하게 기울면서 움직이는 이유는 와이어 오브젝트 특성에서 기인한다. 점의 위치와 연결되어 있는 상태에 따라 팽창과 수축이 일어나고 공기 저항력도 다르게 받기 때문이다.