Mesh 클래스는 오브젝트의 메시 지오메트리에 대한 기본 스크립트 인터페이스입니다. 배열을 활용하여 삼각형, 버텍스 위치, 노멀, 텍스처 좌표를 나타내며 메시 생성에 도움이 되는 기타 유용한 프로퍼티 및 함수를 제공합니다.
메시 데이터는 Mesh Filter 컴포넌트를 사용해 오브젝트에 연결됩니다(지오메트리를 표시하려면 오브젝트에도 MeshRenderer가 필요함). 이 컴포넌트는 익숙한 GetComponent 함수를 사용하여 액세스할 수 있습니다.
using UnityEngine;
public class ExampleScript : MonoBehaviour
{
MeshFilter mf;
void Start()
{
//if this gameObject has a MeshFilter, mf will reference the component
mf = GetComponent<MeshFilter>();
}
}
메시 오브젝트에는 버텍스와 관련 데이터(노멀, UV 좌표)의 프로퍼티와 삼각형 데이터에 대한 프로퍼티가 있습니다. 버텍스는 어떤 순서로도 제공될 수 있지만, 노멀과 UV의 배열은 모든 인덱스가 버텍스에 대응하도록 정렬되어야 합니다(예: 노멀 배열의 요소 0은 버텍스 0에 대한 노멀을 제공). 버텍스는 오브젝트의 로컬 공간에 있는 지점을 나타내는 Vector3s입니다. 노멀은 방향을 나타내는 정규화된 Vector3s로, 다시 로컬 좌표로 표시됩니다. UV는 Vector2s로 지정되지만, Vector2 유형에는 U와 V라는 필드가 없으므로 각각 X와 Y로 전환해야 합니다.
삼각형은 버텍스 배열의 인덱스 역할을 하는 정수 3개로 지정됩니다. 삼각형을 나타내기 위해 특수 클래스를 사용하지 않고, 배열은 단순한 정수 인덱스 리스트입니다. 각 삼각형에 대해 3개씩 그룹을 이루므로 처음 3개의 요소는 첫 번째 삼각형을 정의하고 다음 3개의 요소는 두 번째 삼각형을 정의합니다. 삼각형의 중요한 세부 사항은 모서리 버텍스의 순서입니다. 어느 모서리에서 시작하든 상관없지만 삼각형의 보이는 바깥 표면을 내려다볼 때 모서리가 시계 방향으로 돌아가도록 배열해야 합니다.
Mesh 클래스에는 원시 메시 버텍스와 인덱스 버퍼 데이터로 작업할 수 있는 저수준 고급 API도 있습니다. 이는 최대 성능이나 최소한의 메모리 할당이 필요한 상황에서 유용합니다.