# VFX

## 개요

VFX 오브젝트는 게임에 시각적 요소를 추가하여 몰입감과 생동감을 높이는 데 사용됩니다. 이펙트는 주로 Part, 캐릭터, 환경 등에 적용되며, 다양한 상황에서 게임 플레이의 재미를 극대화하는 데 기여합니다.

## VFX의 종류

<table><thead><tr><th width="194">VFX</th><th>설명</th><th>예시</th></tr></thead><tbody><tr><td>ParticleEmitter</td><td>입자를 생성</td><td>불꽃, 연기, 폭발, 마법, 물방울 등</td></tr><tr><td>Beam</td><td>두 점 사이를 연결</td><td>레이저, 전기, 에너지 빔 등</td></tr><tr><td>Trail</td><td>잔상(궤적) 효과</td><td>스피드 부스트, 마법 궤적, 총알 흔적 등</td></tr><tr><td>VFXPreset</td><td>총 27종의 효과가 사전 구성된 VFX 프리셋</td><td>Fire, Heal, Barrier, Dash 등</td></tr></tbody></table>

## ParticleEmitter

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-0456ebc40ddf77faf4f51e4f5135ead8151ea747%2Fparticle.webp?alt=media" alt=""><figcaption></figcaption></figure>

### 프로퍼티 구성

<table><thead><tr><th width="251">프로퍼티</th><th>설명</th></tr></thead><tbody><tr><td>Acceleration</td><td>가속도의 방향과 크기</td></tr><tr><td>Brightness</td><td>밝기</td></tr><tr><td>Color</td><td>입자의 색상</td></tr><tr><td>Light Emission</td><td>빛을 발산하는 정도</td></tr><tr><td>Orientation</td><td><p>회전 방향</p><ul><li>Facing Camera : 파티클이 항상 카메라(플레이어가 보는 방향)를 향하도록 정렬</li><li>Facing Camera World Up : 파티클이 카메라를 향하지만, 파티클의 "위쪽"은 항상 월드 좌표의 위쪽(Y축)을 유지</li><li>Velocity Parallel : 파티클이 이동하는 속도 벡터와 평행하게 정렬</li><li>Velocity Perpendicular : 파티클이 이동하는 속도 벡터에 수직으로 정렬</li></ul></td></tr><tr><td>Size</td><td>크기</td></tr><tr><td>Texture</td><td>파티클에 사용할 텍스처 Id (ovdrassetid://번호 형식)</td></tr><tr><td>Transparency</td><td>투명도</td></tr><tr><td>Drag</td><td>공기 저항</td></tr><tr><td>Enabled</td><td>활성화 여부</td></tr><tr><td>Emission Direction</td><td><p>생성되는 방향</p><ul><li>Top : 파티클이 위쪽으로 방출</li><li>Right : 파티클이 오른쪽으로 방출</li><li>Back : 파티클이 뒤쪽으로 방출</li><li>Left : 파티클이 왼쪽으로 방출</li><li>Bottom : 파티클이 아래쪽으로 방출</li><li>Front : 파티클이 앞쪽으로 방출</li></ul></td></tr><tr><td>Life Time</td><td>개별 입자가 생성된 후 사라지기까지의 시간</td></tr><tr><td>Rate</td><td>초당 생성되는 개수</td></tr><tr><td>Rot Speed</td><td>회전 속도</td></tr><tr><td>Rotation</td><td>초기 회전 각도</td></tr><tr><td>Speed</td><td>초기 속도</td></tr><tr><td>Spread Angle</td><td>파티클이 생성될 때의 각도 범위</td></tr><tr><td>Squash</td><td>파티클의 압축 효과</td></tr><tr><td>Flipbook Layout</td><td><p>텍스처 시트의 행과 열</p><ul><li>None : Flipbook 애니메이션 미사용</li><li>Grid 2x2 : 텍스처를 2x2 그리드로 분할</li><li>Grid 4x4 : 텍스처를 4x4 그리드로 분할</li><li>Grid 8x8 : 텍스처를 8x8 그리드로 분할</li></ul></td></tr><tr><td>Flipbook Framerate</td><td>애니메이션 텍스처의 프레임 속도</td></tr><tr><td>Flipbook Mode</td><td><p>텍스처 애니메이션의 모드</p><ul><li>Loop : 애니메이션이 처음부터 끝까지 반복적으로 재생</li><li>One Shot : 애니메이션이 한 번만 재생</li><li>Ping Pong : 애니메이션이 처음부터 끝까지 재생된 후, 반대로 끝에서 처음으로 재생</li><li>Random : 텍스처의 애니메이션 프레임을 무작위 순서로 재생합</li></ul></td></tr><tr><td>Flipbook Start Random</td><td>애니메이션이 임의의 프레임에서 시작되도록 설정</td></tr><tr><td>Shape</td><td><p>파티클이 생성되는 기본 모양</p><ul><li>Box : 파티클이 박스 형태의 영역에서 생성</li><li>Sphere : 파티클이 구체 형태의 영역에서 생성</li><li>Cylinder : 파티클이 원기둥 형태의 영역에서 생성</li><li>Disc : 파티클이 평평한 원반 형태의 영역에서 생성</li></ul></td></tr><tr><td>Shape in Out</td><td><p>파티클이 생성 및 소멸되는 과정에서의 이동 패턴을 설정</p><ul><li>Outward : 파티클이 설정된 Shape 영역 바깥 방향으로 방출</li><li>One : 파티클이 설정된 Shape 영역의 안쪽으로 향해 방출</li></ul></td></tr><tr><td>Shape Style</td><td><p>파티클 생성 시 모양 스타일을 설정</p><ul><li>Volume : Shape의 전체 부피에서 랜덤한 위치에서 생성</li><li>Surface : Shape의 표면에서만 생성</li></ul></td></tr><tr><td>LockedToPart</td><td>파티클이 부착된 객체가 움직일 때, 입자들이 함께 이동할지 여부</td></tr></tbody></table>

### 스크립트 기능

{% content-ref url="../../../development/api-reference/classes/particleemitter" %}
[particleemitter](https://docs.overdare.com/korean/development/api-reference/classes/particleemitter)
{% endcontent-ref %}

## Beam

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-3f633577d12ee74b7f58b8d502a247c4e5f53bac%2FBeam.gif?alt=media" alt=""><figcaption></figcaption></figure>

두 개의 Attachment 사이를 연결하는 오브젝트입니다. 시작점과 끝점을 지정하면 자동으로 연결되며, 레이저, 전기, 에너지 빔 같은 효과를 만들 때 사용됩니다.

### 프로퍼티 구성

<table><thead><tr><th width="251">프로퍼티</th><th>설명</th></tr></thead><tbody><tr><td>Color</td><td>Beam의 색상</td></tr><tr><td>Enabled</td><td>활성화 여부</td></tr><tr><td>Texture</td><td>Beam의 텍스처</td></tr><tr><td>Texture Length</td><td>텍스처 반복 길이</td></tr><tr><td>Texture Speed</td><td>텍스처 이동 속도</td></tr><tr><td>Transparency</td><td>투명도</td></tr><tr><td>Attachment 0</td><td>Beam의 시작점</td></tr><tr><td>Attachment 1</td><td>Beam의 끝점</td></tr><tr><td>CurveSize0</td><td>Attachment0과 함께 빔을 구성하는 배지어 곡선의 두 번째 제어점 위치를 정의</td></tr><tr><td>CurveSize1</td><td>Attachment1과 함께 빔을 구성하는 배지어 곡선의 세 번째 제어점 위치를 정의</td></tr><tr><td>Width 0</td><td>Beam의 시작 부분 너비</td></tr><tr><td>Width 1</td><td>Beam의 끝 부분 너비</td></tr><tr><td>Face Camera</td><td>빔이 항상 카메라를 향하도록 설정</td></tr></tbody></table>

### 스크립트 기능

{% content-ref url="../../../development/api-reference/classes/beam" %}
[beam](https://docs.overdare.com/korean/development/api-reference/classes/beam)
{% endcontent-ref %}

## Trail

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-e4e77993d061ebc8844c5a0a8172571ae8a50224%2FTrail.gif?alt=media" alt=""><figcaption></figcaption></figure>

물체가 이동할 때 남기는 잔상(궤적) 효과를 생성하는 오브젝트입니다. 검기 효과, 스피드 부스트, 마법 궤적, 총알 흔적 같은 효과를 만들 때 사용됩니다.

Trail은 Part와 같은 특정 오브젝트의 자식으로 설정하여, 해당 오브젝트의 움직임에 따라 효과를 표시할 수 있습니다.

### 프로퍼티 구성

<table><thead><tr><th width="251">프로퍼티</th><th>설명</th></tr></thead><tbody><tr><td>Color</td><td>Trail의 색상</td></tr><tr><td>Texture</td><td>Trail의 텍스처</td></tr><tr><td>Texture Length</td><td>텍스처 반복 길이</td></tr><tr><td>Texture Speed</td><td>텍스처 이동 속도</td></tr><tr><td>Transparency</td><td>투명도</td></tr><tr><td>Enabled</td><td>활성화 여부</td></tr><tr><td>Lifetime</td><td>Trail이 생성된 후 유지되는 시간(초 단위)</td></tr><tr><td>Width</td><td>기본 너비</td></tr><tr><td>Width Scale</td><td>너비가 시간에 따라 어떻게 변화하는지를 정의</td></tr><tr><td>Offset</td><td>Trail의 위치를 X, Y, Z 방향으로 조정</td></tr></tbody></table>

### 스크립트 기능

{% content-ref url="../../../development/api-reference/classes/trail" %}
[trail](https://docs.overdare.com/korean/development/api-reference/classes/trail)
{% endcontent-ref %}

## VFXPreset

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-4e697be8eeb73af9f8f1d17c26390a633f230586%2FVFXPresetPreview.gif?alt=media" alt=""><figcaption></figcaption></figure>

게임에서 자주 사용되는 불, 폭발, 배리어, 회복 등의 효과를 사전 정의된 이펙트 중 선택하여, 별도의 편집 없이 빠르게 시각적 연출을 표현할 수 있는 오브젝트입니다.

### 사용 방법

Level Browser에 VFXPreset을 배치하고 선택한 다음, 프로퍼티 패널에서 VFX Preset 속성을 찾아 표시한 버튼을 클릭하면 VFX Preset 선택 팝업이 표시됩니다.

VFX Preset 선택 팝업에서 Buff Zone, Trail 등 원하는 이펙트를 선택하면 해당 효과가 적용됩니다.

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2F3d9uM6P7gkhlUrywxfch%2Fimage.png?alt=media&#x26;token=587a889d-4b7b-4885-8664-5a1008b6fb4b" alt=""><figcaption></figcaption></figure>

### 프로퍼티 구성

<table><thead><tr><th width="251">프로퍼티</th><th>설명</th></tr></thead><tbody><tr><td>VFX Preset</td><td>표시할 VFX를 선택</td></tr><tr><td>Importance</td><td>VFXPreset의 중요도를 설정. Infinite Loop 여부와 조합하여 내부 Performance Type이 결정됩니다.</td></tr><tr><td>Color</td><td>VFXPreset의 색상</td></tr><tr><td>Size</td><td>VFXPreset의 크기</td></tr><tr><td>Transparency</td><td>VFXPreset의 투명도</td></tr><tr><td>Enabled</td><td>활성화 여부</td></tr><tr><td>Infinite Loop</td><td>재생 무한 반복</td></tr><tr><td>Loop Count</td><td>재생 반복 횟수</td></tr></tbody></table>

#### Importance와 Performance Type 매핑

Importance 값과 Infinite Loop 설정의 조합에 따라 내부적으로 아래와 같이 Performance Type이 결정됩니다.

<table><thead><tr><th width="200">Importance</th><th width="200">Infinite Loop</th><th>Performance Type</th></tr></thead><tbody><tr><td>Default</td><td>False</td><td>Default Burst</td></tr><tr><td>Default</td><td>True</td><td>Default Looping</td></tr><tr><td>Background</td><td>False</td><td>Background Burst</td></tr><tr><td>Background</td><td>True</td><td>Background Looping</td></tr><tr><td>Gameplay</td><td>False</td><td>Gameplay Burst</td></tr><tr><td>Gameplay</td><td>True</td><td>Gameplay Looping</td></tr><tr><td>Critical</td><td>-</td><td>Critical</td></tr></tbody></table>

### 스크립트 기능

{% content-ref url="../../../development/api-reference/classes/vfxpreset" %}
[vfxpreset](https://docs.overdare.com/korean/development/api-reference/classes/vfxpreset)
{% endcontent-ref %}

### VFXPreset 에셋 리스트

{% content-ref url="vfx/vfxpreset-asset-list" %}
[vfxpreset-asset-list](https://docs.overdare.com/korean/manual/studio-manual/object/vfx/vfxpreset-asset-list)
{% endcontent-ref %}

### VFXPreset 성능 최적화

{% content-ref url="../asset-and-resource-creation/vfxpreset-budget" %}
[vfxpreset-budget](https://docs.overdare.com/korean/manual/studio-manual/asset-and-resource-creation/vfxpreset-budget)
{% endcontent-ref %}

## Curve Editor가 지원되는 프로퍼티

Curve Editor로 편집할 수 있는 프로퍼티 옆에는 ... 버튼이 표시됩니다. 이 버튼을 클릭하면 **Curve Editor**가 열리며, 해당 프로퍼티의 값 변화를 그래프 형태로 직관적으로 조정할 수 있습니다.

<figure><img src="https://2697870212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fgit-blob-1a27062f3193424c858e6a5fdce1ed56c3bf0611%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
