본문 바로가기
이펙트 (FX)/이펙트 팁 : Unreal

[Unreal/Houdini] Rigid Cross-Section VAT 방식 소개 (Vertex Animation Texture)

by Minkyu Lee 2026. 2. 26.

 

소개

'단면 기반 리지드 바디(Rigid Cross-Section) VAT' 방식은 전통적인 Soft Body 방식(모든 정점의 위치를 굽는 방식)과 달리,

각 단면(Cross-section)을 하나의 개별적인 '조각(Piece)'으로 취급하여 Rigid Body VAT로 처리하는 기교를 말한다.

동일한 용량으로 훨씬 더 많은 데이터를 담을 수 있는 최적화 기법이다.

 

방법

이하 내용은 원문을 AI를 이용해 분석하고 추론한 워크플로우이므로, 개괄적인 흐름만 참고바람


1. 지오메트리 준비 (단면 분리)

이 기법의 핵심은 Sweep 노드로 만들어진 전체 메쉬를 정점 단위가 아닌, 루프(Loop) 단위의 리지드 바디로 쪼개는 것입니다.

  • Sweep Node 설정: Sweep 노드에서 각 단면이 별도의 프리미티브 그룹이나 ID를 갖도록 합니다. (보통 Generate UVs 옵션에서 V 좌표가 단면의 인덱스 역할을 할 수 있습니다.)
  • Connectivity Node: Class를 Primitive로 설정하여 각 단면(Ring)별로 고유한 class 어트리뷰트를 생성합니다.
  • Transform SOP (핵심): 각 단면의 중심점(Centroid)을 계산하고, 해당 단면의 모든 정점을 그 중심점에 "상대적"으로 정렬해야 합니다. 하지만 VAT 노드가 이를 자동으로 처리하게 하려면 각 단면을 Packed Primitive로 변환하는 것이 가장 깔끔합니다.

2. 데이터 구조 최적화 (Rigid Body 방식 적용)

전통적인 Rigid Body VAT는 보통 부서지는 조각(Fractured pieces)을 위해 사용되지만, 여기서는 **'텐타클의 마디'**를 조각으로 간주합니다.

  • Assemble SOP: 각 단면을 Packed Geometry로 팩킹합니다. 이때 Name 어트리뷰트가 각 단면마다 고유하게 부여되어야 합니다.
  • 애니메이션: 이제 이 팩킹된 단면들에 애니메이션을 줍니다. Sweep의 대상이 되는 Curve가 움직이면 팩킹된 단면들도 그 위치와 회전값을 따라가게 됩니다.

3. Labs VAT ROP 설정 (Export)

SideFX Labs의 VAT (Vertex Animation Texture) 노드를 사용하여 다음 설정을 적용합니다.

주요 세팅:

  1. Method: Rigid Body Dynamics (Packed Prim)을 선택합니다. (Soft Body가 아님에 주의하세요!)
  2. Input Geometry: 애니메이션이 완료된 팩킹된 단면들을 연결합니다.
  3. Export 설정:
    • Num of Pieces: 단면의 개수가 곧 조각의 개수가 됩니다.
    • Texture Size: 단면 내의 정점 개수(5개든 20개든)는 텍스처 크기에 영향을 주지 않습니다. 오직 단면의 개수(Pieces) x 프레임 수가 텍스처 크기를 결정하므로 매우 경제적입니다.

4. 엔진(Unity/Unreal)에서의 구현 및 장점 활용

이 방식이 'Unorthodox(비정통적)'라고 불리는 이유는 쉐이더 단에서의 처리 때문입니다.

  • 재사용성: 동일한 단면 애니메이션 데이터(텍스처)를 가지고, 런타임에서 다른 모양의 단면(삼각형, 원형, 별모양 등)을 가진 메쉬에 적용할 수 있습니다. 쉐이더는 각 정점이 어느 '단면 ID'에 속하는지만 알면 해당 단면의 위치/회전 값을 텍스처에서 읽어와 적용하기 때문입니다.
  • LOD: 거리에 따라 단면의 정점 수를 줄인 낮은 폴리곤 메쉬를 사용해도, 단면의 중심점 데이터는 동일하므로 애니메이션이 깨지지 않고 완벽하게 유지됩니다.

요약: 작업 흐름(Workflow)

  1. Curve 생성 및 애니메이션.
  2. Sweep으로 메쉬 생성 시 각 루프별로 고유 ID 부여.
  3. 각 루프를 Packed Primitive로 변환.
  4. Labs VAT ROP에서 Rigid Body 모드로 익스포트.
  5. 엔진 쉐이더에서 uv 혹은 color 어트리뷰트를 통해 각 정점이 몇 번째 단면에 속하는지 매핑.

5개의 정점을 가진 단면이나 35개의 정점을 가진 단면이나 텍스처 비용은 동일하게 유지하면서 훨씬 효율적인 최적화가 가능

 

원문

Another case for unorthodox VAT usage.
When exporting animated extruded geometry from Houdini (for example using a Sweep node), the obvious choice would be Soft Body VAT.
But there’s another approach.
Instead of baking data per vertex, you can treat each cross-section as a rigid body and bake the data per section.
This means the animation is stored per cross-section rather than per vertex.

Pros:
 - smaller VAT textures
 - cross-section complexity doesn’t matter (5 sides or 20 – same cost)
 - easy LOD creation
 - animation can be reused with different geometry

The video compares Soft Body VAT and Rigid Cross-Section VAT — both using the same data budget.
With Soft Body VAT, you could have either 5 tentacles or 35 using the same data budget when applying this technique.

 

https://www.linkedin.com/posts/mariusz-skrzypczynski-b7342710_another-case-for-unorthodox-vat-usage-when-activity-7432477430369423361---gg?utm_source=share&utm_medium=member_desktop&rcm=ACoAABk3tEsBkVq_EfV71xom-zHlSEEOyhb9Pbs

 

Another case for unorthodox VAT usage. When exporting animated extruded geometry from Houdini (for example using a Sweep node),

Another case for unorthodox VAT usage. When exporting animated extruded geometry from Houdini (for example using a Sweep node), the obvious choice would be Soft Body VAT. But there’s another approach. Instead of baking data per vertex, you can treat each

www.linkedin.com

 

댓글