메시 컴포넌트
머티리얼

메시

Meshes 는 3D 월드의 커다란 부분을 구성합니다. 몇몇 에셋 스토어 플러그인을 제외하고, Unity에는 모델링 툴이 포함되어 있지 않습니다. 그러나 Unity는 대부분의 3D 모델링 패키지와 상호운용성이 우수합니다. Unity는 삼각 또는 사각 폴리곤 메시를 지원합니다. Nurbs, Nurms, Subdiv 표면은 폴리곤으로 변환해야 합니다.

3D 포맷(3D formats)

Unity는 아래 두 종류의 파일에서 메시를 임포트할 수 있도록 지원합니다.

  1. .fbx 또는 .obj와 같은 익스포트된 3D 파일 포맷. 3D 모델링 소프트웨어를 통하여 다양한 소프트웨어가 임포트하고 수정할 수 있는 일반 포맷 파일을 익스포트할 수 있습니다.
  2. 3D Studio Max 또는 Blender에서 가져온 .max와 .blend 파일 포맷과 같은 3D 또는 DCC(디지털 콘텐츠 제작) 애플리케이션 전용 파일. 전용 파일은 이를 생성한 동일한 소프트웨어에서만 수정할 수 있습니다. 이는 먼저 전환하고 임포트하지 않는 이상 다른 소프트웨어가 직접 수정할 수 없습니다. 단, SketchUp의 .skp 파일은 예외로 SketchUp와 Unity에서 모두 읽기 가능합니다.

Unity는 두 파일 타입 모두 임포트하고 사용할 수 있으며, 각각 장단점이 있습니다.

익스포트된 3D 파일

Unity에서 읽기 가능한 파일 타입은 .fbx, .dae (Collada), .3ds, .dxf, .obj, .skp입니다. 3D 파일을 익스포트하는 방법에 대한 자세한 내용은 사용하는 3D 모델링 소프트웨어 문서를 참조하십시오.

장점:

  • Unity에 전체 모델을 임포트하는 대신 필요한 모델의 일부만 임포트할 수 있습니다.
  • 익스포트된 일반 파일은 보통 전용 파일에 비해 용량이 작습니다.
  • 익스포트된 일반 파일을 사용하는 것은 모듈 단위 접근 방식을 용이하게 합니다(예를 들어, 각 충돌 타입이나 상호 작용성에 따라 서로 다른 컴포넌트 사용).
  • Unity가 직접 지원하지 않는 소프트웨어를 통해서 생성된 파일을 임포트할 수 있습니다.
  • 익스포트된 3D 파일(.fbx, .obj)은 익스포트한 이후 3D 모델링 소프트웨어로 다시 임포트해서 파일 전체를 올바르게 익스포트했는지 확인할 수 있습니다.

단점:

  • 원본 파일에 변경사항이 있는 경우 모델을 수동으로 다시 익스포트해야 합니다.
  • 소스 파일과 Unity가 임포트한 파일의 버전이 동일한지 주의를 계속 기울여야 합니다.

3D 애플리케이션 전용 파일

Unity는 Max, Maya, Blender, Cinema4D, Modo, Lightwave, Cheetah3D 와 같은 DCC 소프트웨어에서 전용 파일을 임포트할 수 있습니다. 이렇게 가져온 파일은 임포트하는 동안 Unity가 .fbx 파일로 전환합니다.

장점:

  • 원본 모델의 변경사항을 Unity가 자동으로 임포트합니다.
  • 초기에는 간단합니다(다만 이후 개발에서는 복잡해질 수 있습니다).

단점:

  • Unity 프로젝트를 사용하는 모든 컴퓨터에 정품 소프트웨어를 설치해야 합니다.
  • Unity 프로젝트를 사용하는 모든 컴퓨터에 사용되는 소프트웨어의 버전이 동일해야 합니다. 상이한 버전을 사용하는 경우, 3D 모델을 임포트하는 동안 오류나 예기치 못한 동작이 발생할 수 있습니다.
  • 불필요한 데이터로 인해 파일 용량이 커질 수 있습니다.
  • 용량이 큰 파일은 Unity 프로젝트나 에셋을 임포트하는 시간을 늘리는데, 이는 Unity에 모델을 임포트하는 동안 DCC 소프트웨어를 백그라운드 프로세스로서 실행해야 하기 때문입니다.
  • Unity는 내부적으로 전용 파일을 .fbx로 임포트하는 동안 전환합니다. 이는 .fbx 데이터를 검증하고 문제를 해결하기 어렵게 합니다.

참고:.ma, .mb, .max, .c4d, .blend 파일로 저장된 에셋은 사용자의 컴퓨터에 해당 DCC 소프트웨어가 설치되지 않은 경우, 임포트할 수 없습니다. 이는 Unity 프로젝트에 작업하는 모든 컴퓨터에 올바른 소프트웨어를 설치해야 함을 의미합니다. 예를 들어, ExampleModel.mbMaya를 사용하여 생성하고 프로젝트에 복사한 경우, 프로젝트를 열기 위해서는 컴퓨터에 Maya가 설치되어 있어야 합니다.

직접 지원되는 3D 애플리케이션에 대한 가이드라인은 다음과 같으며 나머지는 대부분 위에 나열된 파일 타입을 익스포트할 수 있습니다.

텍스처

Unity는 지정된 검색 계획에 따라 임포트 시 메시가 자동으로 사용한 텍스처를 찾으려고 합니다. 먼저 임포터는 메시와 동일한 폴더, 또는 기타 상위 폴더에서 Textures라는 하위 폴더를 찾아봅니다. 찾을 수 없는 경우 프로젝트의 모든 텍스처를 모두 검색합니다. 전체 검색이 다소 느린 것도 문제지만 주 단점은 프로젝트에 이름이 같은 텍스처가 두 개 이상 포함될 수 있다는 것입니다. 이 경우 올바른 텍스처가 검색된다고 보장할 수 없습니다.

에셋 수준과 같거나 더 위에 있는 Textures 폴더에 텍스처를 저장해야 합니다.
에셋 수준과 같거나 더 위에 있는 Textures 폴더에 텍스처를 저장해야 합니다.

모델의 FBX 임포터 옵션

머티리얼 생성 및 할당

Unity는 임포트된 각 머티리얼에 다음 규칙을 적용합니다.

머티리얼 생성이 비활성화된 경우(즉__Import Materials__ 가 선택되지 않음) Default-Diffuse 머티리얼이 할당됩니다. 머티리얼 생성이 활성화된 경우 다음 작업을 수행합니다.

  • Unity는 Material Naming 설정에 따라 Unity 머티리얼의 이름을 선택합니다.
  • Unity는 해당 이름을 가진 기존 머티리얼을 찾으려고 합니다. 머티리얼 검색 범위는 Material Search 설정을 통해 정의됩니다.
  • Unity는 기존 머티리얼을 찾는 데 성공할 경우 해당 머티리얼을 임포트된 씬에 사용하고, 그렇지 않으면 새 머티리얼을 생성합니다.

콜라이더

Unity가 사용하는 두 가지의 주요 콜라이더 타입은 Mesh CollidersPrimitive Colliders 입니다. 메시 콜라이더는 임포트된 메시 데이터를 사용하는 컴포넌트로 환경 충돌에 사용할 수 있습니다. 임포트 설정에서 Generate Colliders 를 활성화하면 메시가 씬에 추가될 때 메시 콜라이더가 자동으로 추가됩니다. 이는 물리 시스템에서 정상적으로 인식됩니다.

오브젝트(예: 자동차)를 여기저기로 움직이는 경우 메시 콜라이더를 사용할 수 없습니다. 기본 콜라이더를 대신 사용해야 합니다. 이 경우 Generate Colliders 설정을 비활성화해야 합니다.

애니메이션

애니메이션은 씬에서 자동으로 임포트됩니다. 애니메이션 임포트 옵션에 대한 자세한 내용은 메카님 애니메이션 시스템에서 에셋 준비 및 임포트 섹션을 참조하십시오.

노멀 매핑 및 캐릭터

모델의 고차원 폴리곤 버전으로부터 생성된 노멀 맵이 포함된 캐릭터가 있는 경우, 게임 품질 버전을 180도의 Smoothing angle 로 임포트해야 합니다. 그러면 탄젠트 분할로 인해 조명에 이상하게 생긴 경계부분이 발생하지 않습니다. 이런 설정을 사용해도 계속 눈에 띄는 경계 부분이 있으면 Split tangents across UV seams 를 활성화해야 합니다.

그레이스케일 이미지를 노멀 맵으로 변환하는 경우에는 이에 대해 신경쓰지 않아도 됩니다.

Blendshapes

Unity는 BlendShapes(모프 타겟 또는 버텍스 수준 애니메이션이라고도 함)를 지원합니다. Unity는 .FBX(BlendShapes 및 컨트롤링 애니메이션)와 .dae(BlendShapes만)에서 익스포트된 3D 파일에서 BlendShapes를 임포트할 수 있습니다. Unity BlendShapes는 버텍스, 노멀 및 탄젠트에서 버텍스 수준 애니메이션을 지원합니다. 메시는 스킨과 BlendShapes의 영향을 동시에 받을 수 있습니다. BlendShapes를 통해 임포트한 모든 메시는(스킨 포함 여부와 관계없이) SkinnedMeshRenderer를 사용합니다. BlendShapes 애니메이션은 일반 애니메이션의 일부로 임포트됩니다. 즉, 간단히 BlendShape 가중치를 SkinnedMeshRenderer에서 애니메이션화합니다.

다음 두 가지 방법으로 BlendShape를 노멀과 함께 임포트할 수 있습니다.

  1. Normals 임포트 모드를 Calculate 로 설정합니다. 그러면 메시와 BlendShapes에서 노멀을 산출하는 데 동일한 로직이 사용됩니다.
  2. 스무딩 그룹 정보를 소스 파일로 익스포트합니다. 그러면 Unity가 메시 및 BlendShapes의 스무딩 그룹으로부터 노멀을 산출합니다.

BlendShapes에 탄젠트가 있게 하려면 Tangents 임포트 모드를 Calculate 로 설정해야 합니다.

힌트

  • 메시를 서로 최대한 병합해야 합니다. 메시가 머티리얼과 텍스처를 공유하도록 해야 합니다. 그러면 성능이 크게 향상됩니다.
  • Unity에서 오브젝트에 추가 설정(물리, 스크립트 또는 기타 개선점 추가)을 적용해야 하는 경우, 3D 애플리케이션에서 오브젝트의 이름을 올바르게 지정하여 많은 문제를 방지할 수 있습니다. 여러 개의 pCube17 이나 Box42 같은 이름의 오브젝트를 사용하여 작업해야 한다면 즐겁지 않을 수 있습니다.
  • 메시가 3D 앱의 월드 좌표계의 중심에 위치하도록 해야 합니다. 그러면 Unity에 메시를 더 쉽게 배치할 수 있습니다.
  • 메시의 버텍스가 컬러 요소를 가지지 않을 경우 Unity는 메시가 처음 렌더링될 때 올화이트 버텍스 컬러 배열을 메시에 자동으로 추가합니다.

Unity 에디터가 (3D 앱에 나오는 내용에 비해)너무 많은 버텍스 또는 삼각형을 표시함

이 현상은 정상입니다. 표시되는 내용은 렌더링을 위해 실제로 GPU로 전송되고 있는 버텍스/삼각형의 수입니다. 머티리얼이 버텍스 /삼각형을 두 번 전송하도록 요구하는 경우 이외에도 하드 노멀 및 비인접 UV 같은 요인은 버텍스/삼각형 수를 모델링 앱에 나오는 수보다 훨씬 더 많이 증가시킵니다. 3D 및 UV 공간에서 모두 심각형이 스트립을 형성하려면 서로 인접해야 하므로 UV 경계 부분이 있는 경우 스트립을 형성하려면 퇴화 삼각형을 만들어야 합니다. 이로 인해 버텍스/삼각형의 수가 증가합니다.

메시 컴포넌트
머티리얼