[유니티 최적화] 아트 에셋 베스트 프랙티스 가이드
Unity는 다양한 프로그램과 소스에서 텍스처 3D 모델을 지원합니다.
이 짧은 가이드는 여러분이 Unity 프로젝트에서 더 효율적으로 작동하는 에셋을 만들 수 있도록 도움을 주기 위해 Unity의 프로젝트 개발자와 게임 아티스트가 함께 작성하였습니다.
1. 스케일 및 단위
스케일 작업은 조명 시뮬레이션과 물리 시뮬레이션 모두에서 중요할 수 있습니다.
- 시스템과 프로젝트에서 사용하는 단위를 미터로 설정하여 소프트웨어가 Unity와 일관되게 작동하도록 해야 합니다.
- 시스템에 따라 다른 단위가 사용됩니다. 예를 들어 Max의 시스템 단위는 인치이고, Maya의 단위는 센티미터입니다.
Unity는 FBX를 임포트하고 네이티브 3D 모델링 소프트웨어 파일을 임포트하는 데 서로 다른 스케일을 사용합니다. FBX 임포트 스케일 설정을 확인하십시오. 예를 들어 Scale Factor = 1, Object Transform Scale = 1이 되도록 하려면 전용 파일 포맷 중 하나를 사용하고 Convert Units 옵션을 설정합니다.
- 확실하지 않다면 씬의 미터 큐브를 익스포트하여 Unity와 일치되게 해야 합니다. - 애니메이션 프레임 속도 디폴트는 패키지별로 다를 수 있습니다. 이 때문에 파이프라인 전체에 이 값(예: 30fps)을 일관되게 설정하는 것이 좋습니다.
2. 파일 및 오브젝트
- 씬의 오브젝트 이름을 쉽게 구별할 수 있도록 고유하게 지정해야 합니다. 이렇게 하면 프로젝트에서 특정 메시를 찾아 문제를 해결할 때 편리합니다.
- *()?"#$ 등의 특수 문자를 사용해서는 안 됩니다.
- 나중에 복제할 때 편리하도록 오브젝트와 파일에는 간단하지만 설명이 포함된 이름을 사용해야 합니다.
- 계층 구조는 되도록 간단하게 유지해야 합니다.
- 3D 애플리케이션과 관련한 큰 프로젝트에서는 작업 파일을 Unity 프로젝트 디렉토리 외부에 두는 것을 고려해야 합니다. 이렇게 하면 업데이트를 실행하고 불필요한 데이터를 임포트할 때 시간을 절약할 수 있습니다.
3. 메시
- 효율적인 토폴로지로 구축해야 합니다. 필요한 곳에만 폴리곤을 사용해야 합니다.
- 폴리곤이 너무 많으면 지오메트리를 최적화해야 합니다. 캐릭터 모델이 많으면 특히 다음을 통해 소스를 얻거나 빌드할 경우에는 아티스트가 지능적으로 최적화하거나 재구성해야 합니다.
- 3D 캡처 데이터
- 포저
- Zbrush
- 렌더링용으로 설계된 기타 고밀도 NURBS 패치 모델
- 건물, 조경, 건축물에서 폴리곤을 고르게 배치하면 조명을 적용하기가 쉬워지고 어색함을 방지할 수 있습니다.
- 아주 길고 가는 삼각형은 피해야 합니다.
오브젝트를 만드는 데 사용하는 메서드는 폴리곤의 수에 큰 영향을 줄 수 있습니다.
특히 메서드가 최적화되지 않았을 때 그렇습니다.
이 다이어그램에서 동일한 모양의 메시가 오른쪽에는 156개의 삼각형으로 이루어져 있고 왼쪽에는 726개의 삼각형으로 이루어져 있습니다.
726개라고 하면 폴리곤의 수가 많은 것처럼 들리지는 않겠지만, 한 레벨에서 40번 사용한다고 하면 실제로 엄청난 양을 절약할 수 있음을 알 수 있습니다.
처음에는 간단하게 시작해서 점차 세부 사항을 추가해 나가는 것이 좋습니다.
폴리곤은 있던 것을 제거하는 것보다 없던 것을 추가하는 것이 훨씬 쉽습니다.
4. 텍스처
텍스처를 2의 거듭제곱(예: 512x512 또는 256x1024)으로 작성하면 텍스처가 효율적인 상태가 되므로 빌드 시 다시 스케일링할 필요가 없습니다.
최대 4096x4096 픽셀을 사용할 수 있지만 여러 그래픽 카드와 플랫폼에서 사용할 수 있는 가장 높은 해상도는 2048x2048 픽셀입니다.
좋은 텍스처를 제작하는 전문가의 조언을 인터넷에서 찾아볼 수 있습니다.
간략한 아래 가이드라인을 통해서도 프로젝트에서 가장 효율적인 결과를 얻을 수 있습니다.
- .psd나 Gimp 파일 등의 고해상도 소스 파일은 Unity 프로젝트 외부에서 작업해야 합니다. 소스 파일에서 해상도를 낮추는 것은 언제든지 가능하지만 해상도를 높일 수는 없습니다.
- 씬에 필요한 텍스처 해상도 출력을 사용해야 합니다. 예를 들어, 최적화된 256x256 .png 또는 .tga 파일과 같은 파일을 저장해야 합니다. 텍스처가 표시되는 위치와 매핑 위치에 따라 결정하면 됩니다.
- 출력 텍스처 파일은 Unity 프로젝트에서 모두 같은 곳(예: \Assets\textures)에 저장해야 합니다.
- 저장하거나 익스포트하는 경우 3D 작업 파일이 동일한 텍스처를 참조하는지 확인해야 합니다.
- 텍스처에서 사용 가능한 공간은 활용하되 다른 머티리얼에서는 동일한 텍스처의 다른 부분이 필요할 수 있습니다. 끝까지 동일한 텍스처를 여러 번 사용하거나 로드할 수도 있습니다.
- 다른 셰이더가 필요한 알파와 요소가 있다면 텍스처를 분리해야 합니다. 예를 들어 왼쪽 하단의 단일 텍스처를 오른쪽 하단에 보이는 세 개의 작은 텍스처로 바꾸는 것이 좋습니다.
- 매끄럽게 반복되는 타일링 텍스처를 활용하면 공간을 반복할 때 더 높은 해상도를 사용할 수 있습니다.
- 비트맵에서 눈에 쉽게 띄는 반복 요소를 제거하되 대비를 만들어 내세요. 디테일을 추가하려면 데칼과 오브젝트를 사용하여 반복을 끝낼 수 있습니다.
- Unity는 출력 플랫폼에 맞게 압축을 진행하므로 소스가 정해진 해상도로 된 .jpg 파일이 아니라면 텍스처에는 무손실 포맷을 사용하는 것이 좋습니다.
- 사진에서 텍스처 페이지를 만들 때 페이지를 반복할 수 있는 개별 모듈 섹션으로 축소해야 합니다. 예를 들어 텍스처 공간을 사용하는 동일한 12개의 창은 필요하지 않습니다. 즉, 더 많은 픽셀 디테일을 가지는 하나의 창이 더 낫습니다.
5. 머티리얼
- 씬의 머티리얼을 정리하고 이름을 지정해야 합니다. 이렇게 하면 머티리얼을 임포트할 때 Unity에서 머티리얼을 훨씬 쉽게 찾고 편집할 수 있습니다.
- 다음 중 하나에서 Unity에 머티리얼을 생성하도록 선택할 수 있습니다.
<모델 이름> - <머티리얼 이름> 또는
<텍스처 이름> 이 중에서 원하는 것을 확인해야 합니다. - 네이티브 패키지의 머티리얼 설정은 Unity로 임포트되지 않습니다.
일반적으로 Diffuse Colour, Diffuse Texture, Names 는 지원됩니다.
셰이더 모델, 스페큘러, 노멀, 기타 보조 텍스처와 서브스턴스 머티리얼 설정을 인식하거나 임포트할 수 없습니다.
임포트 및 익스포트
Unity는 저장된 3D 애플리케이션 파일과 익스포트된 3D 포맷과 같이 두 가지 타입의 파일을 사용할 수 있습니다.
둘 중 어떤 것을 사용하느냐가 매우 중요할 수 있습니다.
자세한 내용은 모델 파일 포맷을 참고하십시오.