1. Flock Simulation with POPs - Preview :
파티클 시뮬레이션을 우리가 원하는 형태로 움직이도록 셋업하는 과정을 보여주는 예제입니다.
이번 예제에서는 POP Network을 기반으로 POP VOP을 많이 사용하게 될 예정입니다.
파티클을 다루는데 자주 사용되고 유용한 노드들로 구성되어 있습니다.
조만간 본 강좌로 뵙겠습니다.
그럼 다를 열공하세요~!
후디니 버전: H18.5
2. Flock Simulation with POPs - POP Attract & POP Curve Force
본 강의에 앞서 후디니 18.5에 비슷한 기능을 하는 POP 노드들 몇 개를 소개하고자 합니다.
기존에 빌드업 되어 있는 시스템을 사용할 시에 장단점도 알 수 있고,
또한 본 강의를 들을 때도 개념 잡는데 도움이 될 것 같아서 준비를 해보았습니다.
Houdini 18.5
3. Flock Simulation with POPs - Part 1
주제: 본 강좌의 전반적인 셋업 순서와 개념 설명 + Particle Emission의 속도 셋업
본 강좌의 파티클 시스템은 4단계로 구성되어 있습니다.
이에대한 개괄적인 설명을 도입부에 진행하여 초보자들에게 자칫 혼동 될 수 있는 여지를 조금이라도 줄이고자 했습니다.
이번 회의 주요 이슈는 파티클을 생성하는 과정에서 POP VOP노드들을 사용하여 초기 속도를 셋업하는 과정입니다.
여기에 사용되는 VOP 노드들은 많이 사용되는 것들이기 때문에 앞으로의 강좌들을 이해하는데 많은 도움이 되리라 생각됩니다.
주요 노드들: POP Network, POP VOP, Parameter VOP, Ramp Parameter VOP
Houdini 18.5
4. Flock Simulation with POPs - Part 2
주제: 파티클 Goal Velocity 생성하기
파티클이 생성되고 어디를 향해 나아갈지 지정해 주는 벡터 즉 속도를 셋업하는 과정을 설명하는 내용입니다.
파티클 기반의 Flock 시뮬레이션에서 가장 핵심적인 부분이므로 잘 연구해 보시기 바랍니다.
특히, Goal Vector를 어떻게 셋업하는지 잘 숙지해 두면 나중에 다른 분야에서도 활용 할 기회가 많으리라 생각됩니다.
주요 노드들: Get Attribute VOP, Subtract VOP, Length VOP
5. Flock Simulation with POPs - Part 3
주제: Moving up along with path lines to the goals
이 예제에서 포인트 클라우드를 사용하는 이유:
파티클은 매 프레임 마다 위치가 바뀌고 그때마다 path를 따라 움직이는데, 이때 path의 tangent 값을 필요로 한다.
따라서, 파티클은 매번 이동한 위치에서 주변의 line 포인트들이 갖고 있는 tangent 값들을 취합해서 자신의 다음 위치이동에 적용하게 된다.
그렇기 때문에 매 프레임마다 line들의 포인트들을 취합하기 위해 포인트 클라우드 기능이 필요한 것이다.
추가적으로 상기해야 할 중요한 점은, 일반적으로 후디니는 두 오브젝트가 있고 그들의 포인트들을 vex expression을 통해 활용할때, 일대일, 즉 포인트대 포인트로 계산하는게 기본이다.
그런데 지금의 상황처럼, 첫 번째 오브젝트의 포인트 하나에 대해 두 번째 오브젝트의 여러 포인트들을 묶어서 계산해야하는 경우는 기본 셋업으로는 거의 불가능하다.
그래서 이런 경우를 위해 포인트 클라우드를 사용하게 되는 것이다.
포인트 클라우드 익스프레션: *위의 VEX Expression을 기준으로 이해하기.
아래 그림에서 파티클 포인트(P; 작은 연두색 원 안의 파티클 하나)를 기준으로 일정 거리(큰 연두색 원)에 있는 path line의 포인트들(PC; 빨간 원 안의 포인트들)은 메모리에 pcopen을 통해 저장된다.
그리고 저장된 라인 포인트들의 N 값들은 pcfilter를 통해 평균값을 계산하고 그 값을 파티클 P의 N 값으로 넘겨준다.
여기서 라인 포인트들의 N은 우리의 경우 라인 곡선의 tangent 값을 의미한다. (동영상 강좌 참조)
파티클 포인트(P)는 이렇게 넘겨 받은 벡터 N 값을 위치 이동하는데 활용한다.
메모리에 저장된 포인트들은 다음 파티클 포인트를 계산하기 전에 pcclose을 통해 모두 클린업한다.
따라서 point wrangle은 이러한 계산을 각각의 파티클에 대해서 실행하기 때문에, 만약 파티클 갯수가 300개면 매 프레임 마다 300번을 위의 포인트 클라우드 기능들을 계산해야하는 것이다.
주요 노드 및 기능들: Point Wrangle, Point Cloud Functions(pcopen, pcfilter and pcclose)
후디니 버전: Houdini 18.5
6. Flock Simulation with POPs - Part 4
주제: Flying away particles with noise patterns
파티클이 날아갈때 일정한 패턴으로 날아가는 것을 피하기 위해 노이즈 패턴을 속도에 가미하는 내용입니다.
우리는 여기서 세 종류의 노이즈 패턴을 적용할 예정인데,
그 기준은 사용하기 쉽고 직관적이면서도 실용적인 성격을 토대로 선택하게 되었습니다.
후디니 버전: Houdini 18.5
노이즈 패턴 분석
1. Noise Pattern 1 (NP1): Normal veclocity
Goal point의 Normal vector에 노이즈 패턴 (Attribute Noise 노드 활용)을 적용하고,
그 노멀을 파티클의 속도에 적용한다.
2. Noise Pattern 2 (NP2): Anti-Aliased Flow Noise
AAFlowNoise의 Amp와 Roughnss로 노이즈 패턴 조절
3. Noise Pattern 3 (NP3): Ramp Parameter
Ramp의 인풋 값을 파티클 ID의 랜덤 값으로 넣고,
램프 그래프에 노이즈 패턴을 수동으로 디자인하는 형태
노이즈 패턴(NP) 교합:
(P+NP2) * NP3 + NP1 => Particle Velocity
*Note: P = Particle Position
예를들어 위의 경우, 새의 날개짓을 6개의 프레임으로 루핑(looping)이 되도록 만들었고, 이 애니메이션 파일을 각각의 파티클에 첫 프레임으로 픽업할때 랜덤하게 집도록 하는 것이다.
그렇게 되면 날개짓의 시작 점이 서로 offset이 되어 자연스럽게 보이게 된다.
여기서 더 나아가, 날개짓의 애니메이션을 좀 더 세분화 해서 위의 6개에서 12개정도로 하면 더욱 자연스러운 모션을 연출할 수 있을 것이다.
7. Flock Simulation with POPs - Part 5
주제: Assign a bird object with flying animation sequence to particles.
여기서의 주요 관건은
1) 파티클에 새를 적용할때 새의 날게짓들이 서로 달라야하고,
2) 각 객체들의 크기나 색등이 조금씩 다양화 해야한다는데 있다.
1. 새 날개짓의 애니메이션 Offset
새의 날개짓을 a sequence of animation 파일로 만들어서
각 파티클들에 적용할때 랜덤하게 적용되도록 하는 것이다.
2. 새의 사이즈 다양화
NOTE: 후디니에서는 파티클의 움직이는 방향과 인스턴트 또는 카피 되는 오브젝트의 +Z 방향이 일치되도록해야한다.
새들이 파티클에 적용될때 두 개의 다른 방법을 영상에서 소개하고 있다.
2-1) Copy Stamp 방식
이 방법은 전통적인 방법으로써 그동안 널리 쓰여왔다.
그리고 최근에는 카피 대신에 Instance (Stamp > Pack Geometry Before Copying)로 파티클에 적용되는 옵션도 가미되었다.
그러나 인스턴스로 하게 되면 몇가지 제한사항들이 있기 때문에 이에대서는 유의를 해야한다.
2-2) For-Each Point 방식
위의 copy stamp방식보다는 사용하기가 다소 까다롭고 복잡하지만,
활용성 측면에서 유리하기 때문에 요즘 많이 사용하는 방식이다.
기본 컨셉은 foreach_begin과 forach_end block 사이에 노드들을 배치하게 되면,
파티클 각각의 점에 대하여 블록 안의 노드들이 적용되면서 루핑하게 되는 것이다.
< Time Shift노드에서 프레임을 랜덤으로 픽업 >
< foreach point를 사용해서 애니메이션 파일을 랜덤하게 픽업하는 과정>