목록Houdini (52)
테드옹의 VFX

준비 단계 Type 단위로 나눈 후 비슷한 방식으로 하나하나 진행 - 시뮬레이션 영역을 Geometry로 정하여 simArea와 non-simArea로 나누기 위해 boolean fracture를 한다 (이 단계에서 for-each connected pieces와 compile block을 연계 활용하여 시간 단축) - simArea를 분리하여 main fracutre작업 (이후 모든 for-each는 그냥 compile block을 덛씌우기, foreach end에 Multithread when compiled 체크) - fracture가 완성되면 필요에 따라 proxy piece들에게 cluster지정 (rbd cluster SOP, 타입은 group constraints로) - 현실적인 모션을 위해..
1. point와 primitive의 수가 픽스 된다면 항상 rest attribute를 생성할 것 있으면 언제든 다용도로 활용할 수 있기 때문에 2. high resolution의 시뮬레이션을 진행할 때에는 cache simulation의 체크를 해제할 것 다음 프레임까지 메모리에 채워두면 머신이 뻗어버릴 정도의 작업은 아직까진 안해봤지만, 애초에 리얼타임 프리뷰를 할 일이 없으면 캐시 버튼을 켜둘 일이 없으니, 파이썬 혹은 hscript의 pre-render script로 체크해제 기능을 넣으면 될 것 같다. post-render script에 다시 켜놓게 설정하면 그만! 3. v@next_pos = @P + @v * @TimeInc;를 이용하면 다음 프레임에 이 파티클, 혹은 rbd가 어디에 있을 ..
보통 빈화면에서 시작할 땐 굳이 geometry노드의 transform을 쓰진 않지만, 혹시라도 이 방법이 나중에 쓰일 수도 있을 것 같아서 멤오 마야에서 받아온 매치무브 데이터를 후디니 상으로 불러오면 단위가 달라서 보통 geo노드에 0.01배 등 스케일 값을 조절하여 작업함. (그동안 그렇게 해왔다) 하지만 geo노드 자체에 world transform을 줘버리면 지오메트리의 P값은 바뀌지 않으면서 크기가 축소 된다. 이럴 때 vdb polygon같은 월드유닛을 기반으로 하는 노드를 사용하면 연산 자체가 무거워지고 결과 값이 달라짐 따라서, world transform이 아니라 object transform을 이용하는게 좋을 것 같다. 그래서 그냥 알렘빅을 불러온 다음, geo노드 안으로 들어가서 t..
후디니에서 smoke와 flip은 볼륨을 베이스로 하는 시뮬레이션이다 다만 다른 점이 있는데 1. flip은 파티클의 어트리뷰트를 볼륨으로 바꾸어 field들을 advection시킨 후, 변형이 된 field의 정보를 파티클에 다시 전달한 후 position업데이트를 한다. 2. smoke는 voxel이 베이스인 시뮬레이션으로, 파티클과는 연관이 없다 좌우지간 둘 다 유체 시뮬레이션이고, 솔버의 내부에는 veloicty 따위와는 비교도 안될 정도로 중요한 Non-divergent project라는 노드가 있다. 즉, divergent 값을 0으로 만드는 것. (이 과정에서 pressure필드를 만들고 divergent를 0으로 만드는 counteract작업을 한다) 키워드 Mass conservation..