Lesson 5: Flip 시뮬레이션

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


Flip 시뮬레이션이란?

물과 같이 액체로 이루어진 물체의 운동을 나타내는 다이나믹이다.

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


Flip 시뮬레이션은 다름 아닌 파티클(POP) 시뮬레이션이다.

하지만 Flip 에서는 기본적으로 파티클 입자간의 상호작용이 가능하다.

즉, 파티클끼리 충돌하며 서로 밀어내거나 합쳐지기 때문에 좀 더 사실적인 시뮬레이션이 된다.

게다가 POP 다이나믹에서 쓰이는 여러가지 노드를 Flip 에도 적용할 수 있다는 장점이 있다.

이러한 이유로 Flip 시뮬레이션 속도는 POP 시뮬레이션보다 일반적으로 느리다.


Flip 시뮬레이션 기본구조

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

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




Flip 시뮬레이션 구현하기

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

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



TAB메뉴를 이용해서 Flip Object DOPFlip Solver DOP 을 하나씩 만든다.



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

Output Flag 를 'flipsolver1' 으로 지정해준다.



씬 뷰에 박스 모양의 파랑색 구슬들(파티클) 이 나타난다.

이는 'flipobject1' 파라미터에서 [Initial Data] 탭의 'SOP Path' 기본값이 박스이기 때문이다.



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

자동적으로 오브젝트 내부 공간에 파티클이 채워져 준비가 될 것이다.



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

그것은 파티클을 움직이게 만드는 외부힘이 존재하지 않기 때문이다.


외부힘을 더하기 위해 중력을 만든다.

다음과 같이 Gravity Force DOP 을 만들어서 'flipobject1' 과 'flipsolver1' 노드 사이에 연결해 준다.



플레이를 해 보면 구슬들이 중력으로 인하여 아래로 떨어지는 것을 볼 수 있다.



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

다이나믹을 플레이 할 때는 반드시 프레임 1부터 시작하도록 한다.



충돌(Collision) 오브젝트 만들기

파티클이 충돌할 평면을 만들기 위해 다이나믹 레벨에서 Ground Plane DOP 을 하나 만든다.

다음과 같이 그리드 모양의 평면 오브젝트가 나타난다.

만들어진 'groundplane1' 노드의 Output Flag 를 클릭해야 평면 오브젝트를 볼 수 있다.


자, 그럼 어떻게 파티클 (flipobject1) 을 바닥 (groundplane1) 에 충돌하게 만들 수 있을까?

Merge DOP 노드를 만든 후, 다음과 같이 연결해 준다.

만들어진 'merge1' 노드의 Output Flag 를 켜준다.

'merge1' 노드의 Relationship 속성으로 인해 그 인풋으로 오는 오브젝트들을 충돌관계에 넣고있다.

Affector Relationship 속성으로 인해 파티클은 바닥에 충돌하지만 바닥은 파티클의 영향을 받지 않는다.



Flip 시뮬레이션 마무리하기

현재 파티클과 바닥 오브젝트가 원점에 겹쳐서 위치하고 있다.

'groundplane1' 의 Position Y 값을 조절하여 바닥을 충분히 파티클 아래쪽으로 내려 준다.



다시 시뮬레이션을 플레이 해 보자.

파티클이 바닥에 충돌하면서 넓게 퍼져 나아가는 모습을 확인할 수 있다.

시뮬레이션중 구슬 색깔은 각 파티클이 움직이는 속도에 따라서 변하도록 되어있다.