메시 콜라이더는 정확한 충돌을 위해 게임 오브젝트의 메시가 올바르게 설정되도록 요구합니다.
특정 설정 및 최적화에서는 메시의 읽기/쓰기를 활성화해야 합니다. 이 컨텍스트에서 ‘읽기/쓰기’의 의미에 대한 자세한 내용은 메시 API 프로퍼티 Mesh.isReadable
에 대한 기술 자료를 참조하십시오.
다음 상황 중 하나라도 해당되는 경우 메시에 대한 읽기/쓰기가 활성화되어야 합니다.
메시 읽기/쓰기를 활성화하려면 메시의 Mesh.isReadable
값이 true
여야 합니다. 에디터를 통해 이를 적용하려면 다음 단계를 따르십시오.
메시 콜라이더로 충돌을 계산하려면 물리 시스템이 메시의 지오메트리에 액세스할 수 있어야 합니다. ‘메시 쿠킹’은 3D 메시를 원본 포맷(예: FBX 또는 OBJ)에서 물리 시스템이 읽을 수 있는 포맷으로 변환하는 프로세스를 가리킵니다. 쿠킹 프로세스는 원시 메시 데이터를 가져와 공간 검색 구조체를 빌드하여 Unity가 물리 쿼리에 더 빠르게 응답할 수 있도록 합니다.
메시 쿠킹은 Import Settings(Import Settings > Model > Generate Colliders)에서 또는 런타임 시 트리거할 수 있습니다.
메시 쿠킹 프로세스 중에 Unity는 메시의 크기와 복잡도를 줄이기 위해 다양한 최적화를 적용할 수 있습니다(예: 중복 버텍스 제거, 겹치는 삼각형 병합, 지오메트리 단순화를 통한 삼각형 수 감소). 그러면 Unity는 최적화된 메시를 더 빠르고 효율적으로 로드하여 메모리 사용량을 줄이고 전반적인 성능을 개선할 수 있습니다.
어떤 최적화를 실행할지 제어하려면 메시 콜라이더의 Cooking Options 프로퍼티(C# 열거형 MeshColliderCookingOptions
에 해당)를 사용합니다. 사용할 수 있는 다양한 쿠킹 옵션에 대한 개요는 메시 콜라이더 컴포넌트 레퍼런스를 참조하십시오.
기본 Cooking Options는 에디터에서 쿠킹하고 런타임 시 다시 쿠킹하지 않는 모든 메시 콜라이더에 적합합니다. 또한 런타임 시 필요한 대부분의 메시 콜라이더(특히 한 번만 쿠킹해야 하는 크거나 복잡한 메시)에 적합합니다. 그러나 런타임 시 충돌 지오메트리를 빠르게 생성해야 하는 경우(예: 절차적 표면 또는 플레이어 동작에 따라 변형되는 메시 콜라이더) Cooking Options를 변경하여 콜라이더 생성 속도를 높여야 할 수 있습니다.
Unity가 런타임 시 생성하는 메시에 메시 쿠킹을 최적화하려면 데이터 청소 단계를 비활성화(Enable Mesh Cleaning 및 Weld Co-Located Vertices)할 수 있습니다. 하지만 데이터 청소 단계를 비활성화할 경우 해당 알고리즘이 청소할 데이터를 사용하지 않도록 메시 데이터의 유효성을 검사할 다른 방법이 있어야 합니다.
메모리 사용량을 줄이기 위해 Cook For Faster Simulation을 비활성화할 수도 있습니다.
Cooking Options를 변경할 때는 메시에 읽기/쓰기 권한을 적용해야 합니다. 이 방법에 대한 지침은 메시에 대한 읽기 및 쓰기 액세스 허용을 참조하십시오.
메시가 렌더링이 아닌 물리 계산을 위한 데이터만 제공해야 하는 경우(예: 보이지 않는 콜라이더)에는 메시의 노멀을 임포트할 필요가 없습니다. 노멀이 없는 메시는 더 적은 메모리를 요구하며 디스크 공간을 덜 사용합니다.
노멀을 비활성화하려면 다음 단계를 따르십시오.