
개요
상호작용 파괴가 가능한 VAT 구성 방법을 알려주는 영상을 소개한다.
영상
https://www.youtube.com/watch?v=xzb-PuOXZC0&ab_channel=Houdini
프로젝트 파일
https://www.sidefx.com/tutorials/games-workshop-tech-track/
Games Workshop: Tech Track | SideFX
Recently, SideFX held a games workshop which involved a full day of hands-on Houdini training. These recordings from the Tech Artist track are now available for you to go through at your own pace. These lessons cover a range of topics from grooming to Pyth
www.sidefx.com
내용
후디니(Houdini)와 언리얼 엔진(Unreal Engine)을 사용하여 파괴 가능한 유리벽을 제작하는 과정을 상세히 다루는 튜토리얼입니다. 특히, 버텍스 애니메이션 텍스처(Vertex Animation Textures, VAT) 기술을 조건부로 제어하는 고급 FX 기법에 중점을 둡니다. 플레이어의 공격과 같은 특정 조건에 반응하여 동적으로 부서지고, 시간이 지남에 따라 다시 복구되는 인터랙티브한 환경 에셋을 만드는 것이 핵심 목표입니다.
타임라인별 상세 요약
[00:00:11 - 00:07:17] 1단계: 후디니(Houdini)에서 파괴 시뮬레이션 및 데이터 준비
영상은 후디니에서 파괴될 유리벽 모델을 준비하는 것으로 시작합니다. 먼저, 12개의 개별 벽으로 구성된 메쉬를 불러와 각각에 고유한 이름 속성을 부여합니다. 이후, 유리 조각이 깨지는 형태를 만들기 위해 파쇄(Fracturing) 작업을 진행합니다. 'Glass Fracturing' 도구를 사용하여 자연스러운 파편을 생성하되, 불필요하게 작은 조각들이 생기지 않도록 'Chipping' 옵션은 비활성화합니다.
핵심은 파괴된 조각들의 데이터를 언리얼 엔진에서 제어할 수 있도록 가공하는 것입니다. 이를 위해 다음과 같은 속성들을 버텍스 컬러와 포인트 속성에 저장합니다.
- 내/외부 구분: 유리 조각의 깨진 단면(내부)은 파란색, 원래 표면(외부)은 검은색 버텍스 컬러를 적용하여 [02:33] 언리얼에서 두 부분의 재질을 다르게 표현할 수 있도록 합니다.
- 강도 및 활성화 시점 제어: 각 유리면에 붉은색 버텍스 컬러를 그러데이션 형태로 다르게 적용하여 [03:30] 파괴 애니메이션의 강도나 시작 시점을 제어하는 데이터로 활용합니다.
- RBD 시뮬레이션: 강체 동역학(Rigid Body Dynamics, RBD) 시뮬레이션을 설정하여 유리 조각들이 중력에 의해 자연스럽게 떨어지고 흩어지도록 만듭니다 [04:47]. 이때 각 조각에는 무작위 속도와 회전 값이 부여됩니다.
- '반경' 속성 생성: 각 조각의 중심으로부터의 거리를 기반으로 '반경(radius)'이라는 포인트 속성을 새로 생성합니다 [05:31]. 이 값은 나중에 언리얼 엔진에서 애니메이션이 시작되는 순서를 제어하는 중요한 키가 됩니다.
마지막으로, 'Labs Vertex Animation Textures' 노드를 사용하여 시뮬레이션 데이터를 텍스처 파일로 추출합니다 [06:23]. 위치와 회전 정보를 담은 기본 VAT 텍스처와 함께, 애니메이션의 첫 번째 프레임 정보와 '반경' 속성값을 알파 채널에 포함한 특수한 VAT 텍스처를 별도로 내보냅니다 [06:53].
[00:07:18 - 00:17:38] 2단계: 언리얼 엔진(Unreal Engine)에서 마스터 머티리얼 설정
언리얼 엔진으로 넘어와 후디니에서 추출한 텍스처 파일들을 임포트합니다. 이제 이 데이터들을 해석하고 시각적으로 구현할 마스터 머티리얼을 제작합니다.
- 기본 VAT 설정: 'VAT Rigid Bodies' 노드를 사용하여 텍스처에 저장된 위치 및 회전 정보를 월드 포지션 오프셋과 노멀 맵에 연결하여 [07:30] 애니메이션의 기초를 만듭니다.
- 재질 분리 및 제어: 후디니에서 설정한 버텍스 컬러를 읽어와, 파란색으로 칠해진 내부 단면과 검은색의 외부 표면에 각각 다른 색상이나 재질 속성을 적용할 수 있도록 설정합니다 [08:01].
- 애니메이션 동적 제어: '시간(Time)' 노드와 '속도(Speed)' 파라미터를 조합하여 [10:18] 애니메이션이 실시간으로 재생되고 반복되도록 만듭니다. 여기서 핵심은 후디니에서 저장한 붉은색 버텍스 컬러 값을 애니메이션의 진행 상태와 연결하여 [09:15] 각 유리면이 순차적으로 파괴되거나 재구성되도록 제어하는 것입니다. 또한, 각 패널이 재구축될 때 시간차를 두기 위해 약 40프레임 정도의 오프셋 값을 추가하여 [10:58] 순차적으로 복구되는 효과를 구현합니다 [14:00].
- 충돌 설정: 정확한 물리적 상호작용을 위해 충돌 지오메트리를 설정합니다. 후디니에서 'ucx' 접두사를 붙여 내보낸 원본 정적 메쉬를 [16:28] 언리얼이 충돌체로 인식하도록 한 뒤, VAT가 적용된 메쉬의 충돌 설정으로 복사합니다 [17:10].
[00:17:39 - 00:21:30] 3단계: 블루프린트를 이용한 인터랙티브 파괴 시스템 구현
마지막으로, 블루프린트를 사용하여 플레이어의 공격에 반응하는 인터랙티브 시스템을 구축합니다.
- 동적 머티리얼 인스턴스: 블루프린트에서 실시간으로 머티리얼의 파라미터 값을 변경할 수 있도록 'Dynamic Material Instance'를 생성합니다.
- 렌더 타겟 활용: 투사체가 벽에 부딪히는 순간, 해당 위치 정보(UV 좌표)와 게임 시간을 '렌더 타겟(Render Target)'이라는 특수한 텍스처에 기록하는 로직을 설정합니다 [18:21].
- 조건부 애니메이션 실행: 블루프린트는 매 프레임 렌더 타겟을 확인하여, 이전에 공격받지 않은 새로운 지점에 충격이 감지되었을 때만 VAT 애니메이션을 실행하도록 제어합니다 [20:33]. 즉, 이미 깨진 곳을 다시 공격해도 아무런 변화가 일어나지 않도록 합니다. 렌더 타겟에 기록된 충돌 시간과 위치 정보를 이용하여 [20:52] 정확한 지점에서부터 파괴 애니메이션이 시작되도록 만듭니다.
이러한 과정을 통해, 단순히 재생되는 시뮬레이션이 아니라 플레이어의 행동에 따라 각 유리 조각이 고유한 속성을 가지고 파괴되고, 설정된 로직에 따라 다시 재구축되는 매우 동적이고 상호작용이 가능한 파괴 가능한 벽 에셋이 완성됩니다.
'이펙트 (FX) > 이펙트 팁 : Unreal' 카테고리의 다른 글
| [Unreal/Niagara] 나이아가라 디버거 사용법 (0) | 2025.08.19 |
|---|---|
| [Unreal/Houdini] 지면과 상호작용하는 VAT 강의 소개 (Terrain Adaptive Vertex Animation Texture) (0) | 2025.08.19 |
| [Unreal/Houdini] 상호작용 VAT 관련 아티클 소개 (Vertex Animation Texture) (0) | 2025.08.19 |
| [Unreal] 텍스처 익스포트 기능 만들기 (스크립팅된 에셋 액션) (1) | 2025.08.15 |
| [Unreal] 스크립팅된 에셋 액션 만들기 (Scripted Asset Actions) (0) | 2025.08.15 |
댓글