'인스턴스'란 사전적 의미에서 '경우, 사례'를 뜻한다.  


프로그래밍에서는 '복제'라는 의미를 갖는다. 3D S/W에서는 프로그래밍과 동일한 의미로 사용한다. 쉽게말해 '복제기능'정도로 이해하면 되겠다. 그리고 CG에 있어 인스턴스를 사용하는 상황은 주로 '대규모 전투씬 or 군집체(균, 곤충떼 등..)'와 같은 경우다. 가령, 특정 동작을 하고있는 모델링을 3~4개 만들어서 파티클에 매칭시키는 식이다.


영화나 애니메이션에서, 대규모 전투씬을 연출할 때 인스턴스가 주로 사용이 된다. 아래의 장면에서는 golaem이란 플러그인을 사용했으며, 인물을 제외한 뒤쪽의 병사들이나 괴물들은 거의 폴리곤을 복제한 파티클이다.



기본적으로 golaem역시 파티클 인스턴스에 기반한 플러그인이다. 이번 포스팅에서는 n파티클을 활용한 인스턴스의 원리에 관해 알아보자.


1 배경 만들기

임시로, 산 모양을 모델링하고, ball타입의 emitter를 생성한다. 산 모델링은 ncloth -> passive collider를 적용한다.



2 특정 모양의 모델링 생성

특정 모델링이라 생각하고, 사각형, 사각뿔, 토러스, 구를 생성한다. 생성한 4개의 모델링은 파티클들에 적용할 예정이다.



3 instance 실행

파티클들을 변경할 폴리곤 매시를 하나 선택하고, instance의 옵션을 클릭한다.


nParticle shape1이 인스턴스 노드로 사각형 폴리곤과 연결이 되면, 아래처럼 모든 n파티클들이 박스 폴리곤으로 변한다.




4 애니메이팅

원본이라 할 수 있는 박스 폴리곤의 각도를 조절하면, 모든 파티클들도 함께 움직인다. 


만일 n파티클의 크기가 너무 커서, 박스 폴리곤들이 보이지 않는다면 particle shape노드에서 투명도를 아래와 같이 조절할 수 있다.




5 다수 폴리곤 & 인스턴스화

여러개의 폴리곤을 모두 인스턴스화 하려면, 동시에 선택을 한 상태에서 파티클과 함께 instance를 실행한다. 이후 션에서 cycle을 sequential로 설정하고, cycle step을 프레임으로 변경한다. (프레임당 인스턴스 변화)


여기서 중요한 부분은, cycle start와 age부분이다. 만일 파티클의 나이가 계속 바뀐다면, 4개의 폴리곤 매시들의 사이클이 계속 변경될 수밖에 없다. 따라서 age를 particle id 고유번호로 지정해버리고, 시작점에도 파티클 id를 그대로 지정해준다. 


떨어지는 파티클에 회전을 가하고 싶다면, 아래처럼 파티클의 compute rotation기능을 활성화한다.이후, instance속성에서 해당 instancer를 선택해주고, rotation에 'rotationPP'를 선택해주면, 파티클들이 rotation compute탭의 수치값에 따라서 회전하는 장면을 얻을 수 있다.



만일 위의 폴리곤들이 사탕이나 젤리와 같은 모델링이라면, 제품이 쏟아지는 식의 광고를 만들 수 있다.