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

[Unreal] 이펙트 에셋 표준화 가이드 (Guide)

by Minkyu Lee 2025. 10. 29.

 

개요

텍스처, 메시, 머티리얼, 나이아가라, 블루프린트 등 다양한 애셋의 모범 사례(Best Practice)를 소개한다.

에셋의 기본값 설정은 장기적인 프로젝트의 건전성과 유지보수 편의성에 정말 중요한 요소다.

 

1. 애셋의 일관성(Consistency) 유지

2. 재사용성(Reusability) 극대화

3. 팀원 간의 원활한 협업

 

영상

https://youtu.be/l2qBJ4gGksA

 

결론

텍스처 : 방향성 통일

메시 : 방향성, 피벗, 스케일, UV 확인용 머티리얼, 버텍스 컬러 통일

머티리얼 : 그룹화, 주석, 패딩넘버 사용

나이아가라 : 그룹화, 패딩넘버 사용

 

 

타임라인별 요약

 

1. 텍스처

 

[00:01:17 - 00:11:05] 텍스처 애셋 표준화 가장 먼저 텍스처의 표준화

  • 방향성 (Directionality): 파티클 효과 등에 사용되는 방향성이 있는 텍스처(예: 화염, 총구 화염)는 기본적으로 'Y축 위쪽(Y-up)'을 향하도록 임포트해야 합니다 [01:42, 01:47]. 이는 파티클이 속도 방향으로 정렬될 때(Velocity Aligned) 기본값이 Y축이기 때문입니다 [01:56]. 이렇게 표준화하면, 머티리얼에서 텍스처를 다른 것으로 교체할 때(예: Muzzle flash 1을 Muzzle flash 2로) 방향성 문제없이 즉시 교체할 수 있습니다 [02:17, 03:43]. 만약 텍스처가 옆을 향하고 있다면 [02:56], 이 기본 설정을 활용할 수 없어 비효율적입니다.

(좌) 추천 텍스처 방향 / (우) 비추천 텍스처 방향

 

  • 1D 타일링: 트레일(trail) 효과처럼 한 방향으로 타일링되는 텍스처는 기본적으로 '수평(Horizontal)'으로 임포트해야 합니다 [04:20]. 만약 수직으로 임포트하면 [04:32], 다른 수평 텍스처와 일관성이 깨집니다. 머티리얼에서 'Swizzle' 노드를 사용하면 UV를 90도 회전하는 것이 거의 비용이 들지 않으므로(0 인스트럭션) [05:02, 05:32], 모든 1D 타일링 텍스처를 수평으로 통일하는 것이 좋습니다.

(좌) 추천 텍스처 방향 / (우) 비추천 텍스처 방향

 

Swizzle 노드 활용법

 

밉레벨 체크 : 가장자리 문제 없는지

 

  • 중심 정렬: 플레어(flare)처럼 중심점이 중요한 텍스처는 반드시 텍스처의 정중앙에 위치해야 합니다 [06:35, 06:44].

 

  • 2D 타일링: 노이즈 텍스처처럼 타일링이 되어야 하는 텍스처는 반드시 심리스(seamless)하게 타일링되도록 제작되어야 합니다 [07:36, 07:44].

 

  • 그라디언트(Gradients): 그라디언트 텍스처 역시 수평 또는 수직으로 방향을 통일해야 합니다 [09:26, 09:34]. 하지만 최근에는 텍스처를 임포트하는 대신 '커브 아틀라스(Curve Atlas)'나 에디터의 '컬러 커브(Color Curves)' 기능을 사용하는 것이 좋습니다 [09:57, 10:04].

그라디언트 텍스처 역시 수평으로 통일을 권장한다.

그리고 요즘은 그라디언트 텍스처 자체를 사용할 필요가 없다.

커브아틀라스를 사용하면 된다. 또는 최신 버전의 경우는 더 좋은 기능도 들어왔다.

커브 아틀라스 생성법

 

좌우 통일이 되지 않아 혼란스러운 에셋의 예시

 

2. 메시

[00:11:05 - 00:20:12] 메시 애셋 표준화 VFX 메시는 여러 이펙트에서 재사용되는 경우가 많으므로 [11:13, 11:21] 표준화가 중요합니다.

  • 방향성 (Directionality): 모든 VFX 메시는 일관된 '앞' 방향을 가져야 하며, 영상에서는 X축을 표준으로 제안합니다 [11:37, 12:04].

 

  • 피벗 (Pivot Point): 피벗의 위치 또한 일관되어야 합니다

권장하는 피봇 위치

 

  • 스케일 (Scale): 공유되는 모든 VFX 메시는 일관된 기본 크기(예: 1x1x1 유닛)로 임포트되어야 합니다 [13:13, 14:06]. 어떤 메시는 2배 크고 [13:39], 어떤 메시는 170배 크다면 [14:59] 메시를 교체하며 작업할 때 매번 스케일을 재조정해야 하는 번거로움이 생깁니다.

스케일이 1인데 모두 사이즈가 다른 문제

 

만약 특수한 용도(예를 들어 쇼크웨이브)의 메시 제작시, 별도 규격을 정할수도 있다.

하지만 해당 용도의 모든 에셋 역시 방향과 크기는 별도 설정된 값으로 일관되어야한다. (언제든지 쉽게 교체 가능하도록)

 

  • UV 확인: 임포트된 메시의 UV가 올바른지 확인하기 위해, 기본적으로 UV 그리드 디버그 머티리얼을 할당하여 확인하는 습관을 들여야 합니다 [15:52, 17:00].

왜곡돼있는지 확인하려면 사각형 패턴만 있어도 충분하다.

사용된 텍스처 형태 참고

 

  • 버텍스 컬러 (Vertex Colors): 매우 중요합니다. VFX 메시는 항상 버텍스 컬러를 포함하여 임포트해야 합니다 [17:12, 17:54]. 특히 실린더나 평면의 '딱딱한 외곽선(hard edges)'을 부드럽게 페이드 아웃 시키기 위해 버텍스 알파나 컬러를 칠해두는 것이 좋습니다 [18:00]. 이는 텍스처 마스크를 사용하는 것보다 훨씬 저렴한(cheapest) 방법입니다 [19:09, 19:15].

대부분의 VFX용 메시는 엣지를 숨기려고 노력한다.

그런데 굳이 매번 텍스처를 사용해서 비용을 낭비할 필요가 없다. 그래서 항상 버텍스 컬러를 사용한다.

가장자리에 검은색 그라데이션을 칠한다.

버텍스 컬러 디버깅용 재질 구성

 

버텍스 컬러 디버깅 적용시

 

  • 요약: 메시는 일관된 방향(X축), 일관된 크기, 그리고 기본 버텍스 컬러가 적용된 상태여야 합니다 [19:22].

 

3. 머티리얼

[00:20:12 - 00:45:27] 머티리얼 그래프 표준화 기존 파라곤 애셋의 머티리얼을 예시로, 그래프를 정리하는 모범 사례를 보여줍니다.

  • 정리 (Cleanup): 연결되지 않은 노드들은 'Clean Up' 툴을 사용해 삭제합니다 [21:47, 21:56]. 테스트용 로직은 그래프에 남겨두지 말고 'Developers' 폴더 내의 테스트 머티리얼로 복사해둡니다 [22:05, 22:11].

Clean Up으로 미연결 노드 모두 삭제

 

테스트 또는 백업은 디벨롭 폴더 사용

 

  • 정렬 (Alignment): 노드를 가지런히 정렬합니다. 단축키 Shift + W/A/S/D로 정렬을 맞추는 것이 유용합니다 [22:48].

  • 주석 (Comments): 간단한 머티리얼이라도 C 키를 눌러 주석 박스를 추가하고 설명을 적는 것이 좋습니다 [23:59, 24:05].

 

  • '블랙 박스' 피하기: 노드 내부의 기본값을 수정하는 것을 피해야 합니다. 예를 들어, TextureCoordinate 노드 내부의 UV Tiling 값을 0.8로 수정하면 [24:49, 24:52], 그래프 외부에서는 이 정보가 숨겨져(hidden) 파악하기 어렵습니다.

좋지 않은 예

 

  • 파라미터 이름: 가장 중요한 부분 중 하나입니다. I, L, param, scale_1 과 같은 의미 없는 이름은 재앙입니다 [30:27, 33:00]. Intensity 대신 Intensity_World_Position_Offset처럼 명확하고 구체적인 이름을 사용해야 합니다 [30:44, 30:56].

 

  • 파라미터 그룹: 파라미터를 'Parameter Groups'로 묶어 정리합니다 (예: World Position Offsets 그룹) [34:09, 34:18].

추천하는 예시

 

접두사나 접미사를 붙이지 않으면 제작하다가 이름이 겹쳐서 값을 수정해버리는 불상사가 일어날 수 있다.

 

  • 숫자 간격: 중요한 팁으로, 01, 02, 03 대신 10, 20, 30 처럼 숫자 사이에 간격을 둡니다 [53:36, 53:44]. 이렇게 하면 나중에 15 Detail Normals 처럼 중간에 새 그룹을 추가할 때 모든 그룹의 번호를 재설정할 필요가 없습니다 [54:02, 54:08].

강사의 경우 텍스처샘플은 반드시 01_Textures 라고 지정하는 등 프로젝트 내에서 일관되게 그룹을 설정한다.

아래 그림에선 00으로 설정함.

 

  • 명명된 리루트 (Named Reroutes): 복잡한 머티리얼은 Named Reroute 노드를 적극 활용합니다 [39:57]. 예를 들어, Emissive 로직을 한 섹션에서 모두 계산한 뒤 Emissive_Output이라는 이름의 명명된 리루트 노드로 출력하고 [40:04], 최종 아웃풋 핀에서는 이 노드를 이름으로 참조하여 연결합니다 [40:41]. 이는 그래프를 기능별로 '구획화(Compartmentalize)'하여 가독성을 극도로 높여줍니다 [41:18].

 

  • 와이어 정리: 일반 리루트 노드(더블 클릭)를 사용해 와이어를 정리하고 [42:25], 와이어가 서로 교차하지 않도록 합니다 [43:04]. Add, Multiply는 연산 순서가 상관없으므로 와이어가 꼬일 이유가 없습니다 [43:18].

 

4. 나이아가라

[00:45:27 - 00:50:17] 나이아가라 시스템 표준화 머티리얼과 동일한 원칙이 적용됩니다 [45:36].

  • 지리적 레이아웃: 연관된 이미터끼리 그룹화하여 배치합니다 [45:48]. 한정된 2D 화면 공간을 UV 레이아웃처럼 효율적으로 사용하여 낭비되는 공간을 줄여야 가독성이 높아집니다 [46:13, 47:54].

  • 사용자 파라미터: 나이아가라의 사용자 파라미터가 많아지면 [48:32], 'Edit Hierarchy' 기능을 사용해 카테고리를 만듭니다 [48:45, 48:51].

 

  • 계층 구조 넘버링: 머티리얼 그룹과 마찬가지로 00 Color, 01 Size 처럼 숫자를 붙여 정렬 순서를 제어하고 일관성을 유지합니다 [49:04, 49:10].

 

최종 팁

[00:57:15 - 01:01:07] 마지막 팁: 카메라 북마크 및 결론

  • 가장 유용한 팁 (카메라 북마크): 많은 사람들이 사용하지 않는 언리얼의 유용한 기능으로 '카메라 북마크'를 소개합니다 [58:02].

 

  • 사용법: 레벨 뷰포트에서 원하는 뷰를 잡고 Ctrl + 1, Ctrl + 2 등을 눌러 위치를 저장합니다 [58:24, 58:32].

 

  • 이유: 이렇게 하면 다른 팀원이나 미래의 자신이 해당 레벨을 열었을 때, 문서를 읽을 필요 없이 숫자키 1, 2, 3을 눌러 레벨의 주요 관심 지점(Points of Interest)을 즉시 확인할 수 있습니다 [58:38, 59:00].

댓글