Unity 매뉴얼: 메시 생성하기
이 문서는 Unity에서 C# 스크립트를 이용하여 메시를 생성하는 방법에 대한 내용을 담고 있습니다. 절차적 메시 생성을 통해 유연한 게임 오브젝트를 만들 수 있습니다. 이 매뉴얼에서는 사각형 메시를 만드는 방법에 대해 자세히 설명합니다.
메시란?
Unity에서 메시(Mesh)는 게임 오브젝트의 형태를 결정합니다. 메시를 생성하기 위해서는 버텍스(Vertices), 삼각형(Triangles), 노멀(Normals) 및 텍스처 좌표(UV)가 필요합니다.
기본 구성 요소
- 버텍스 배열: 메시의 꼭짓점을 정의합니다.
- 삼각형 배열: 메시의 표면을 형성하는 삼각형을 정의합니다.
- 노멀: 메시의 표면이 향하는 방향을 지정합니다.
- 텍스처 좌표: 텍스처가 어떻게 매핑되는지를 정의합니다.
1. 버텍스 설정
사각형의 버텍스를 설정합니다. 버텍스는 사각형의 위치를 정의하는 좌표입니다.
Vector3[] vertices = new Vector3[4]
{
new Vector3(0, 0, 0),
new Vector3(width, 0, 0),
new Vector3(0, height, 0),
new Vector3(width, height, 0)
};
mesh.vertices = vertices;
위의 코드에서 배열의 인덱스는 다음과 같은 순서로 설정됩니다:
인덱스 | x 위치 | y 위치 | z 위치 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | width | 0 | 0 |
2 | 0 | height | 0 |
3 | width | height | 0 |
2. 삼각형 설정
두 개의 삼각형으로 사각형을 구성합니다. 각 삼각형은 버텍스 배열의 특정 인덱스를 참조합니다.
int[] tris = new int[6]
{
0, 2, 1, // lower left triangle
2, 3, 1 // upper right triangle
};
mesh.triangles = tris;
3. 노멀 설정
노멀은 메시의 셰이딩을 위한 방향성을 제공합니다. 모든 노멀은 음의 z축 방향을 향하도록 설정합니다.
Vector3[] normals = new Vector3[4]
{
-Vector3.forward,
-Vector3.forward,
-Vector3.forward,
-Vector3.forward
};
mesh.normals = normals;
4. 텍스처 좌표 설정
메시의 각 버텍스에 대한 텍스처 좌표도 설정해야 합니다. 이는 텍스처가 어떻게 매핑될지를 정의하는 중요 요소입니다.
Vector2[] uv = new Vector2[4]
{
new Vector2(0, 0),
new Vector2(1, 0),
new Vector2(0, 1),
new Vector2(1, 1)
};
mesh.uv = uv;
최종 스크립트
위의 단계 모두를 포함한 최종 스크립트는 아래와 같습니다.
using UnityEngine;
public class QuadCreator : MonoBehaviour
{
public float width = 1;
public float height = 1;
public void Start()
{
MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();
meshRenderer.sharedMaterial = new Material(Shader.Find("Standard"));
MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
Mesh mesh = new Mesh();
Vector3[] vertices = new Vector3[4]
{
new Vector3(0, 0, 0),
new Vector3(width, 0, 0),
new Vector3(0, height, 0),
new Vector3(width, height, 0)
};
mesh.vertices = vertices;
int[] tris = new int[6]
{
0, 2, 1,
2, 3, 1
};
mesh.triangles = tris;
Vector3[] normals = new Vector3[4]
{
-Vector3.forward,
-Vector3.forward,
-Vector3.forward,
-Vector3.forward
};
mesh.normals = normals;
Vector2[] uv = new Vector2[4]
{
new Vector2(0, 0),
new Vector2(1, 0),
new Vector2(0, 1),
new Vector2(1, 1)
};
mesh.uv = uv;
meshFilter.mesh = mesh;
}
}
구현 방법
- Unity에서 새 C# 스크립트 생성 (Assets > Create > C# Script)하고
QuadCreator
로 이름을 지정합니다. - 위의 예제 코드를 스크립트에 복사 붙여넣기하고 저장합니다.
- Unity 에디터로 돌아와서 새 게임 오브젝트를 생성합니다 (GameObject > Create Empty).
- 인스펙터에서 "Add Component" > "Scripts" > "Quad Creator"를 선택합니다.
- 게임 오브젝트를 원하는 위치에 배치합니다.
- 플레이 모드를 시작하고 씬 또는 게임 뷰에서 사각형이 보이는지 확인합니다.
이렇게 하면 Unity에서 메시를 생성하고, 다양한 구성 요소를 활용한 사각형을 만들어낼 수 있습니다. 추가적인 질문이 있다면 언제든지 문의해 주세요!