TWA Houdini1/Starter & Particles

TWA 후디니 1 Particle_04 : 파티클에서 중력과 충돌 적용

yiss09 2023. 2. 3. 09:49

https://www.twahoudini.com/course/starterparticles1

 

HOUDINI1_ STARTER & PARTICLES

1️⃣ 후디니 작업을 위한 기본 프로세스 이론을 공부합니다. SOLVER 작동 개념을 훈련하고 PARTICLE 시스템을 구현합니다.

www.twahoudini.com

 


1. POP Force

 

POP Force를 추가해 Particle에 중력을 줄 수 있다. 이때 중요한 점은 POP Force의 위치가 반드시 POP Solve 상단에 위치해야 한다.

1. Force의 vector 값을 조정해 중력을 가할 방향과 그 세기를 정해준다.

2. 중력에 작용할 Noise의 세기를 Amplitude 값을 변경해 조절할 수 있다.

3. Swirl Size로 Noise의 구불구불함의 정도를 정해줄 수 있다.

 


2. POP Solver

 

POP Solver는 POP Source로부터 받은 정보를 POP Object에 적용시켜주는 기능을 한다. 이말은 즉슨 어떠한 효과를 Object에 주고 싶다면 반드시 POP Solver에 의한 계산 이전에 Source가 위치해야 한다. 따라서 POP Force, POP Wind와 같은 여러 Source들이 POP Solver 위에 위치하게 되는 것이다.

1. POP Solver에서는 이렇게 받아들인 정보들을 켜고 끄면서 쉽게 작동시킬 수 있다. 그 중 Intergrate Velocity를 끄게 되면 중력의 작용이 멈춰버리게 되어 왼쪽 사진과 같이 작동하게 된다.

2. Integrate Positions의 경우는 끄게 되면 속도 벡터가 사라지게 된다. 따라서 점이 한 자리에서 움직이지 않고 계속 생성되는 현상이 발생하게 된다.

 


3.POP Wrangle,  POP VOP

 

Geometry 단계에서와 같이 Dynamics 단계에서 Attribute Wrangle을 사용할 수 있는데, 그 역할을 하는 노드가 바로 POP Wrangle이다.

만약 변경하고 싶은 정보가 있다면, 쉽게 POP Wrangle에서 정의를 내려 변경해줄 수 있다.

위의 사진에서의 식은 중력의 힘을 조절할 수 있는 float값을 곱해주어 중력의 세기를 조절해준다.

 

또한 distance function을 활용하게 되면 거리에 따라 점점 더 강하게 작용하는 중력의 효과를 만들어낼 수 있다.

+ POP Wrangle과 마찬가지로 POP VOP 역시 사용할 수 있는데, 이 경우에도 Geometry 단계에서와 같은 방식으로 사용하면 된다.

 


4. Dynamics에서의 Merge

 

Dynamics에서의 Merge의 경우 Geometry 단계에서와의 차이가 있다.

바로 After Relationship의 존재이다.

Left Inputs Affects Right Inputs는 왼쪽 input은 오른쪽 input에 영향을 미친다는 내용이다. 즉 순서가 중요하다.

오른쪽 input으로 들어온 Particle에 관한 내용이 왼쪽 input의 groundplane에 의해  영향을 받게 된다. Particle이 groundplane에 닿게 되는 것이다.

 

3개의 input이 들어오는 경우에도 마찬가지이다.

Particle을 제외한 장애물의 역할을 하는 것들을 merge로 한번에 묶은 뒤 다시 merge하여도 되지만, 순서만 지킨다면 전부 한꺼번에 merge하여도 된다.

groundplane과 static object는 서로 거리가 있어 서로에게 영향을 끼치지 않는다.

 


5. Bounce, Friction

 

Groundplane은 Dynamics 안에서 사용되는 grid라고 보면 된다.

1. Object Name을 변경해 DOP Network node에서 Groundplane을 끄고 켤 수 있다.

2. Color를 변경할 수 있지만, DOP Network 바깥으로 나가면 효과가 사라진다.

3. Initial State에서는 Position, Rotation을 변경할 수 있다.

4. Bounce는 Points가 Groundplane에 닿았을 때 얼마나 튀어오를까에 대한 정보이다. 고난주간 5일차에서 했던 Bounce를 생각하면 된다.

5. Friction은 마찰력이다. Points가 Groundplane에 닿았을 때 마찰력에 의해 Points가 퍼지는 세기를 조절해줄 수 있다.

 

Friction의 수가 올라갈수록 Particle이 얌전해지는 것을 알 수 있다.


6. Static Object

 

Static Object는 충돌에 사용할 Object를 만들어준다.

1. Object Name을 변경할 수 있다.

2. SOP Path로 DOP Network 외부에서 생성된 Object를 불러와 충돌이 작용할 대상으로 사용할 수 있다.

3. Display Geometry를 켜게 되면 DOP Network 내부에서 SOP Path로 불러온 Object가 확인 가능해진다.

4. Physical에서는 Static Object에 작용할 힘들의 세기를 조절할 수 있다.

5. Collision Guide를 키게 되면 왼쪽의 사진과 같이 Particle이 직접적으로 충돌할 Guide line을 띄워준다.

6. 사진에서 설정되어 있는 Ray intersect 모드는 Static Object 자체에서 만들어주는 Guide line을 활용한다.

7. Uniform Divisions를 조절해 충돌할 Static Object의 퀄리티를 조절할 수 있다. 값이 높아지게 되면 퀄리티가 좋아진다는 장점이 있지만, 그만큼 용량이 커지게 되어 작업물이 무거워지게 된다.

8. Proxy Volume은 Volume의 정보를 불러와 사용한다. 아래에서 계속 설명하겠다.

 

1. Volume Sample mode로 변경할 경우, 외부에서 불러온 Volume 정보를 활용해 충돌할 Guide line을 생성하게 된다.

2. Proxy Volume으로 필요한 Volume의 정보를 불러 올 수 있다.

 

그러한 volume의 정보는 VDB form Polygons를 활용해 만들어지게 된다.

1. Voxel Size를 조절해 Volume의 퀄리티를 조절할 수 있다. 주의할 점은 파라미터를 이용해 조절하게 되면 값을 너무 줄였을 때 렉이 걸릴 수 있다. 침착하게 파라미터의 값을 직접 써주도록 하자.

2. Distance VDB는 표면을 따라 어느곳에 Volume이 있어야할지 나타내준다.

+ 만약 POP Network 외부에서 Guideline을 보고싶다면 Convert VDB에서 Volume을 Polygon으로 전환해주면 내부에서와 같은 모습으로 확인이 가능해진다.

* 앞으로 자주 써먹을 구조로 기억을 해두도록  하자!

 

1. 만약 Object에 $FF와 같이 변화를 주었을 때 Use Deforming Geometry를 체크해주어야 DOP Network에서 작동이 일어난다.

2. Use Object Transform은 Geometry node 자체에서의 Translate 변화에만 반응한다.

 


과제를 하느라 해가  뜨는줄도 몰랐다... 파티클에 빛나는 매터리얼을 어떻게 준 것인지 계속 연구하다가 결국 실패했다..ㅠ Light를 Geometry로 바꾸어서 point에 빛을 주는 방법도 사용해보았는데 답이 아니었다. 고민을 좀 더 해야겠다.