Version: 2018.2
Unity에서 사실적인 비주얼 만들기
Unity에서 렌더링 설정 준비

Unity용 에셋 준비

첫 번째 단계는 에셋을 원하는 작업에 맞는 포맷으로 변환하는 것입니다. 특히 3D 모델링 애플리케이션(3ds Max, Maya, Blender, Houdini)에서 Unity로 이동하는 적합한 워크플로를 설정하는 작업은 매우 중요합니다. 3D 모델링 애플리케이션에서 Unity로 임포트할 에셋을 익스포트하는 경우 다음 사항을 고려해야 합니다.

스케일 및 단위

프로젝트 스케일과 선호하는 측정 단위는 실제 같은 씬을 만드는 데 매우 중요한 역할을 합니다. 많은 “실제” 설정에서 1 Unity 단위 = 1m(100cm)를 사용하는 것이 좋습니다. 많은 물리 시스템이 이 단위 크기를 사용하기 때문입니다. 자세한 내용은 아트 에셋 베스트 프랙티스 가이드를 참조하십시오.

3D 모델링 애플리케이션과 Unity 간에 일관성을 유지하려면 임포트한 게임 오브젝트의 스케일과 크기를 항상 확인해야 합니다. 3D 모델링 애플리케이션은 FBX 익스포트 구성의 단위 및 스케일 설정을 보유하고 있습니다(해당 3D 모델링 소프트웨어의 설명서에서 구성 팁 참조). 일반적으로, Unity로 임포트할 때 스케일을 일치시키는 가장 좋은 방법은 툴을 센티미터 단위로 설정하고 자동 스케일로 FBX를 익스포트하는 것입니다. 하지만 새 프로젝트를 시작할 때는 단위 및 스케일 설정을 항상 확인해야 합니다.

익스포트 설정을 빠르게 확인하려면 3D 모델링 애플리케이션에서 단순한 1x1x1m 큐브를 만든 후 Unity로 익스포트하십시오. 그런 다음 Unity에서 1x1x1m 크기의 기본 큐브(게임 오브젝트(GameObject) > 3D 오브젝트(3D Object) > 큐브(Cube))를 만드십시오. 이 큐브를 스케일 레퍼런스로 사용하여 임포트한 모델과 비교할 수 있습니다. 인스펙터에서 트랜스폼(Transform) 컴포넌트의 스케일(Scale) 프로퍼티를 1,1,1로 설정했을 때 두 큐브가 동일하게 보여야 합니다.

Maya 및 3ds Max에서 임포트한 큐브와 Unity에서 생성한 큐브를 사용한 스케일 비교
Maya 및 3ds Max에서 임포트한 큐브와 Unity에서 생성한 큐브를 사용한 스케일 비교

참고:

  • Maya 및 3ds Max는 마지막으로 연 파일에 따라 기본 단위를 오버라이드할 수 있습니다.
  • 3D 모델링 애플리케이션은 작업 영역의 여러 단위를 내부 단위 설정으로 표시할 수 있으므로 혼동을 일으킬 수 있습니다.
3ds Max에서 표시 및 내부 단위의 차이
3ds Max에서 표시 및 내부 단위의 차이

기준점 스케일 모델

플레이스홀더가 있는 씬을 차단하거나 지오메트리를 스케치할 때 기준점 스케일 모델을 설정하면 도움이 됩니다. 만들고자 하는 씬에 적합한 기준점 스케일 모델을 선택하십시오. Spotlight Tunnel 샘플 씬의 경우 파크 벤치를 사용합니다.

기준점 스케일 모델 역할을 하는 벤치
기준점 스케일 모델 역할을 하는 벤치

실제와 완전히 똑같은 비율을 씬에서 사용할 필요는 없습니다. 기준점 스케일 모델을 사용하면 게임 오브젝트 간에 스케일 일관성을 간단하게 유지할 수 있습니다. 비율이 과장된 씬을 구성하는 경우에도 마찬가지입니다.

텍스처 출력 및 채널

텍스처 내 정보는 머티리얼에 추가되었을 때 적합한 결과를 제공하도록 올바른 정보를 포함해야 합니다. Photoshop, Substance Painter 등의 텍스처 작성 소프트웨어를 정확하게 설정하면 일관적이면서도 예측 가능한 텍스처를 출력할 수 있습니다.

다음은 Substance Painter가 Unity 스탠다드 불투명 머티리얼에 사용할 수 있는 텍스처를 출력하도록 만들기 위해 사전 설정한 구성의 예입니다.

Unity 스탠다드 머티리얼의 텍스처 할당은 다음과 같습니다.

익스포트용 출력 맵 Unity 스탠다드 셰이더 머티리얼의 할당
$textureSet_Albedo Assigned to Albedo.
$textureSet_MetallicAOGloss 메탈릭 및 오클루전에 할당되었습니다. 평활도 소스가 메탈릭 알파로 설정되었습니다.
$textureSet_Normal 노멀 맵 슬롯에 할당되었습니다.

참고: 여러 채널을 단일 텍스처(예: MetallicAOGloss)에 패킹하면 AO(앰비언트 오클루전)를 별도 텍스처로 익스포트하는 것보다 텍스처 메모리를 더 절약할 수 있습니다. 이는 Unity 스탠다드 머티리얼로 작업하는 가장 좋은 방법입니다.

텍스처를 생성할 때는 알파 채널을 혼동하지 않는 것이 중요합니다.아래 예에서는 PNG 파일의 투명도가 Photoshop에서 작성하는 데 혼란을 줄 수 있음을 보여줍니다. 이는 Photoshop이 PNG 알파 채널을 취급하는 방식(외부 플러그인을 사용하지 않음) 때문입니다. 이 경우 소스 텍스처 파일 크기가 문제 되지 않는다면 전용 알파 채널이 포함되면서도 압축되지 않은 32비트 TGA를 선택하는 것이 더 좋습니다.

위에 표시된 투명 PNG 파일은 Photoshop에서 만들어졌으며 알파 채널이 검정색 값으로 전달되었습니다. 전용 알파 채널이 포함된 TGA는 예상된 값을 보여줍니다. 위에서 볼 수 있듯이 스탠다드 셰이더 머티리얼에 할당된 각 텍스처가 알파 채널의 평활도 데이터를 읽으면 PNG 텍스처의 머티리얼 평활도는 갑작스럽게 반전되는 반면, TGA 텍스처의 머티리얼 평활도는 정상으로 표시됩니다.

노멀 맵 방향

Unity는 다음의 해석을 이용하여 탄젠트 스페이스 노멀 맵을 읽습니다.

  • 빨간색 채널 X+ : Right
  • 녹색 채널 Y+ : Up

예를 들어, 3ds Max Render to Texture 노멀 맵은 기본적으로 녹색 채널 Y+를 Down 으로 출력합니다. 이로 인해 Y축을 따라 표면 방향이 반전되고, 조명을 비출 때 유효하지 않은 결과가 생성됩니다. 노멀 맵 방향을 확인하려면 오목하게 들어간 면이 있는 단순한 평면(아래 예에서 가운데 그림)을 만들고 평평한 평면으로 베이크하십시오. 그런 다음 식별 가능한 방향에 광원을 배치하여 베이크된 노멀 맵을 Unity의 평면에 할당한 후 반전되는 축이 있는지 확인하십시오.

빨간색 및 녹색 채널 출력에 기반한 유효한 노멀 맵과 그렇지 않은 노멀 맵 비교
빨간색 및 녹색 채널 출력에 기반한 유효한 노멀 맵과 그렇지 않은 노멀 맵 비교

축 설정에 대한 자세한 설명은 3D 모델링 애플리케이션의 설명서를 참조하십시오.


  • 2018–04–19 일부 편집 리뷰를 거쳐 페이지 게시됨
  • 실제 같은 시각 요소 만들기 베스트 프랙티스 가이드가 Unity 2017.3에 추가됨
Unity에서 사실적인 비주얼 만들기
Unity에서 렌더링 설정 준비