
개요
VAT 결과가 지면과 상호작용 되도록 하는 방법을 알려주는 튜토리얼을 소개한다.
지면에 파묻히는 현상을 해결할 수 있는 좋은 트릭이다.
내용
해당 영상
프로젝트 전체 영상 (파일은 제공하지 않는듯하다)
- 공식
https://www.sidefx.com/tutorials/lightning-strike-attack-fx/
Lightning Strike Attack FX | SideFX
Learn how to use Houdini, SideFX Labs tools, and Unreal Engine to create a complex and detailed lightning strike attack FX. The series features step by step breakdowns for the many different elements of this effect, including Unreal Niagara particle system
www.sidefx.com
- 유튜브 재생목록
https://youtube.com/playlist?list=PLXNFA1EysfYlBShtZsLf3vowOK6DBVoOJ&feature=shared
Lightning Strike Attack FX
Learn how to use Houdini, SideFX Labs tools, and Unreal Engine to create a complex and detailed lightning strike attack FX. The series features step by step ...
www.youtube.com
언리얼 엔진(Unreal Engine)에서 지형의 높낮이에 맞춰 Vertex Animation Texture(VAT)가 적용된 오브젝트가 자연스럽게 상호작용하도록 설정하는 고급 기술에 대한 튜토리얼입니다.
핵심은 렌더 타겟(Render Target)을 사용하여 지형의 깊이(높이) 정보를 텍스처로 추출하고, 이 정보를 머티리얼에서 활용하여 파괴되는 조각들이 지형의 경사나 굴곡에 정확히 맞춰 생성되도록 하는 것입니다.
이를 통해 평평하지 않은 지형에서도 파괴 시뮬레이션이 마치 해당 지형에서 실제로 일어나는 것처럼 보이게 하여 시각적 퀄리티를 극대화하는 방법을 다룹니다.
타임라인별 상세 요약
[00:00:00 - 00:04:13] 문제점 인식 및 렌더 타겟 카메라 설정 영상은 먼저 일반적인 VAT 파괴 시뮬레이션의 문제점을 보여주며 시작합니다. 평평한 바닥에서는 문제가 없지만, 경사로나 계단 같은 울퉁불퉁한 지형에서는 파괴된 조각들이 공중에 뜨거나 지형을 뚫고 들어가는 등 비현실적인 모습을 보입니다. 이 문제를 해결하기 위해, 지형의 높이 정보를 실시간으로 캡처하는 방법을 도입합니다.
- Scene Capture Component 2D 추가: 파괴될 오브젝트(영상에서는 기사 캐릭터)에 'Scene Capture Component 2D'를 추가합니다. 이 컴포넌트는 특정 시점에서 보이는 장면을 텍스처로 캡처하는 역할을 합니다.
- 카메라 위치 및 방향 설정: 캡처 컴포넌트를 지형 바로 위에 배치하고, 카메라가 정확히 바닥을 향하도록 90도 회전시킵니다 [02:38].
- 투영 모드 변경: 원근 왜곡을 없애고 정확한 높이 값을 얻기 위해 투영 모드를 'Perspective'에서 'Orthographic'으로 변경하고, Ortho Width 값을 조정하여 캡처할 영역의 크기를 설정합니다 [03:05].
- 캡처 소스 설정: 캡처 소스를 'SceneColor (HDR)'에서 'Scene Depth in R'로 변경합니다. 이렇게 하면 씬의 깊이(카메라로부터의 거리) 정보만 텍스처의 R 채널에 흑백으로 저장됩니다 [03:19].
- 렌더 타겟 생성 및 설정: 캡처한 깊이 정보를 저장할 'Render Target' 애셋을 새로 생성합니다. 텍스처 크기를 1024x1024로 설정하고, 가장 중요한 설정인 'Render Target Format'을 'RTF R32f'로 변경하여 32비트 부동소수점 정밀도로 깊이 값을 저장합니다 [03:41].
- 캡처 비활성화: 이 캡처 과정은 시뮬레이션 시작 시 단 한 번만 필요하므로, 블루프린트의 이벤트 그래프에서 'BeginPlay' 이벤트 이후에 캡처 컴포넌트를 비활성화(Deactivate)하여 불필요한 실시간 렌더링 부하를 줄입니다 [04:13].
[00:04:13 - 00:10:36] Houdini(후디니) 설정 이제 언리얼에서 사용할 VAT 데이터를 후디니에서 준비하는 과정입니다. 핵심은 오브젝트가 언제 파괴되기 시작하고 멈추는지를 프레임 단위로 정의하여 텍스처에 굽는 것입니다.
- 솔버 노드 활용: 솔버(Solver) 노드를 사용하여 애니메이션의 각 프레임마다 파괴 조각들의 속도(velocity)와 피벗(pivot) 위치를 계산합니다.
- 시작 및 정지 프레임 정의: startframe과 stopframe이라는 어트리뷰트를 생성합니다. 조각의 속도나 피벗 길이가 특정 임계값을 넘어서면 startframe이 기록되고, 반대로 속도가 매우 느려져 거의 멈추면 stopframe이 기록됩니다 [07:24]. 이 정보는 각 조각이 언제 애니메이션을 시작하고 멈춰야 하는지를 제어하는 데 사용됩니다.
- 데이터 텍스처화: 계산된 startframe과 stopframe 데이터를 'Vertex Animation Textures' ROP 노드를 사용하여 텍스처로 굽습니다(Bake). 이 텍스처는 언리얼 엔진의 머티리얼에서 각 픽셀(파티클)의 애니메이션 타이밍을 제어하는 데 사용됩니다 [08:24].
- VAT 익스포트: 최종적으로 VAT를 익스포트할 때, "Crop textures to first frame only" 옵션을 체크합니다. 이는 전체 애니메이션이 아닌 첫 프레임의 정보만을 사용하여, 언리얼에서 렌더 타겟의 깊이 정보와 결합해 동적으로 위치를 조절할 수 있도록 하기 위함입니다 [10:36].
[00:10:36 - 00:17:25] Unreal Engine 머티리얼 설정 후디니에서 익스포트한 데이터와 언리얼에서 캡처한 렌더 타겟을 머티리얼에서 조합하여 최종 결과를 만들어냅니다.
- 텍스처 임포트 및 설정: 후디니에서 생성된 VAT 텍스처(Position, Rotation, Start/Stop Frame 등)를 언리얼로 가져와 'Side Effects VAT HDR Textures'로 올바르게 설정합니다 [10:44].
- UV 좌표 보정: VAT는 일반적으로 UV 채널 2를 사용합니다 (TextureCoordinate 노드의 인덱스 1). 후디니와 언리얼 간의 V 채널(Y축) 좌표계 차이를 보정하기 위해, V값을 전체 프레임 수로 곱해줍니다 [11:30].
- 애니메이션 타이밍 제어: 보정된 UV를 사용하여 startframe과 stopframe 텍스처를 샘플링합니다. 이 값들은 애니메이션의 진행률(Progress)과 비교하여 각 조각이 움직여야 할 타이밍을 결정합니다.
- 깊이 정보 결합 (핵심): 앞서 생성한 렌더 타겟(지형 깊이 정보)을 머티리얼로 가져옵니다. 렌더 타겟의 픽셀 값과 캡처 카메라의 높이를 조합하여, 각 파괴 조각이 생성되어야 할 정확한 지형의 높이 값을 계산합니다. 이 값을 'Lerp'(선형 보간) 노드의 알파 값으로 사용하여, 조각의 원래 위치와 지형에 맞춰 조정된 위치 사이를 보간합니다. 이를 통해 조각들이 지형의 높이에 정확히 맞춰지게 됩니다 [12:45].
- 스케일 제어: If 노드를 사용하여 애니메이션 진행률이 startframe보다 클 때만 조각의 스케일을 1로 설정하고, 그 전에는 0으로 만들어 보이지 않게 처리합니다. 이를 통해 정해진 타이밍에 맞춰 조각들이 나타나도록 합니다 [15:43].
이러한 복잡한 과정을 통해, 최종적으로 파괴되는 오브젝트의 조각들이 경사진 지형이나 울퉁불퉁한 표면의 높낮이에 완벽하게 맞춰져 생성되고 애니메이션되는, 매우 사실적인 파괴 시뮬레이션이 완성됩니다. 영상은 평평한 바닥과 경사진 지형 모두에서 시뮬레이션이 시각적으로 올바르게 작동하는 것을 보여주며 마무리됩니다 [17:25].
'이펙트 (FX) > 이펙트 팁 : Unreal' 카테고리의 다른 글
| [Unreal/BP] MI 네이밍 자동화 스크립팅된 에셋 액션 만들기 (파일첨부) (0) | 2025.08.26 |
|---|---|
| [Unreal/Niagara] 나이아가라 디버거 사용법 (0) | 2025.08.19 |
| [Unreal/Houdini] 조건부 파괴가 가능한 VAT 강의 소개 (Conditional Vertex Animation Texture) (0) | 2025.08.19 |
| [Unreal/Houdini] 상호작용 VAT 관련 아티클 소개 (Vertex Animation Texture) (0) | 2025.08.19 |
| [Unreal] 텍스처 익스포트 기능 만들기 (스크립팅된 에셋 액션) (1) | 2025.08.15 |
댓글