Unity 메쉬 사용 가이드

Unity에서는 메쉬를 사용하여 3D 오브젝트의 형상을 정의할 수 있습니다. 이 문서에서는 C# 스크립트와 함께 메쉬를 사용하는 방법을 간단하게 설명하고, 예제를 통해 이해를 돕겠습니다.

메쉬 클래스란?

메쉬 클래스는 3D 오브젝트의 지오메트리에 대한 기본적인 스크립트 인터페이스입니다. 이 클래스는 삼각형, 버텍스 포지션, 노멀, 텍스처 좌표 등을 배열로 표현합니다.

주요 프로퍼티 및 함수

  • 버텍스(Vertex): 객체의 로컬 공간에서 점을 나타내는 Vector3 배열입니다.
  • 노멀(Normal): 로컬 좌표에서 방향을 나타내는 정규화된 Vector3 배열입니다.
  • UV 좌표: Vector2 타입으로 텍스처 좌표를 나타내며, 각 요소는 XY로 변환되어야 합니다.
  • 삼각형: 버텍스 배열에서 인덱스를 지정하는 정수의 3배수로 정의됩니다.

메쉬 데이터 접근하기

메쉬 데이터는 MeshFilter 컴포넌트를 통해 오브젝트에 추가됩니다. 이 컴포넌트는 MeshRenderer를 필요로 하며, GetComponent 함수를 사용하여 접근할 수 있습니다.

예제 코드

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    MeshFilter mf;

    void Start()
    {
        // 게임 오브젝트에 MeshFilter가 있으면 mf가 해당 컴포넌트를 참조합니다.
        mf = GetComponent<MeshFilter>();    
    }
}

메쉬 데이터 추가하기

메쉬 오브젝트에는 버텍스와 관련된 데이터(노멀 및 UV 좌표) 프로퍼티가 있습니다. 버텍스는 특정 순서로 제공되지만, 노멀과 UV 배열은 각각의 인덱스에 대응해야 합니다.

고급 메시 API

또한, 메쉬 클래스는 원시 메시 버텍스와 인덱스 버퍼 데이터에 접근할 수 있는 저수준 고급 API를 제공합니다. 아래는 주요 메소드입니다.

메소드 설명
Mesh.SetIndexBufferParams 인덱스 버퍼의 크기와 포맷을 설정합니다.
Mesh.SetVertexBufferParams 버텍스 버퍼의 크기와 포맷을 설정합니다.
Mesh.SetSubMesh 인덱스 버퍼의 토폴로지 및 범위를 설정합니다.

참고 자료

자세한 정보는 다음을 참고하세요: - 메시의 구조 - 메시 스크립팅 클래스 레퍼런스

결론

이 가이드를 통해 Unity에서 메쉬를 사용하는 기본 개념을 이해하셨기를 바랍니다. 메쉬는 3D 게임에서 물체의 형상을 정의하는 데 중요한 역할을 합니다. 직접 실습해보며 다양한 활용 및 응용 예제를 시도해 보세요!