☝ 개요
- 3D Tool 에서 Mesh는 기본적으로 Vertex (점)으로 이루워졌음
그래서 런타임 중이나 Procedual Modeling를 하려면 기본적으로 점을 다룰줄 알아야한다.
그렇기에 면 하나를 만드는 과정을 정리하려고 한다.
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
public class MeshGeneration : MonoBehaviour
{
Mesh mesh;
Vector3[] vertices;
int[] triangels;
void Start()
{
mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
CreateShape();
UpdateMesh();
}
void CreateShape()
{
vertices = new Vector3[]
{
new Vector3(0,0,0),
new Vector3(0,0,1),
new Vector3(1,0,0),
new Vector3(1,0,1)
};
triangels = new int[]
{
0, 1, 2,
1, 3, 2
};
}
void UpdateMesh()
{
mesh.Clear();
mesh.vertices = vertices;
mesh.triangles = triangels;
mesh.RecalculateNormals();
}
}
빈 오브젝트를 만들어서 본 스크립터를 넣어서 플레이를 하면 면 하나가 만들어진다.
핵심은 메시에
mesh.vertices = vertices;
mesh.triangles = triangels;
에 버텍스와 면을 만들어주는 것이다.
void CreateShape()
{
vertices = new Vector3[]
{
new Vector3(0,0,0),
new Vector3(0,0,1),
new Vector3(1,0,0),
new Vector3(1,0,1)
};
triangels = new int[]
{
0, 1, 2,
1, 3, 2
};
}
이 메서드에서 Vector 값으로 점을 만들어주고,
그 점에 대한 위치로 면을 만들어준다.
이미지로 보자면
먼저 처음 new Vector3(0,0,0) 으로 점 하나를 만들어 주었다.
총 4개의 점을 만들어 준다.
점을 만들어 주었다면,
triangels = new int[]
{
0, 1, 2,
1, 3, 2
};
면을 만들어줄 포인트 지점을 잡아준다.
triangels = new int[]
{
0, 1, 2,
1, 3, 2
};
0 1 2 하나 1 3 2 하나를 만들어준다.
면은 삼각형 이기 때문에 사각형을 만들려면 두 개가 필요하다.
이렇게 하면 사각형 하나를 만들 수 있다.
추가적으로 만약 하나 면을 이렇게 만들 수도 있을 것이다.
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
public class MeshGeneration : MonoBehaviour
{
Mesh mesh;
Vector3[] vertices;
int[] triangels;
void Start()
{
mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
CreateShape();
UpdateMesh();
}
void CreateShape()
{
vertices = new Vector3[]
{
new Vector3(0,0,0),
new Vector3(0,0,1),
new Vector3(1,0,0),
new Vector3(1,0,1),
new Vector3(1,1,0),
new Vector3(1,1,1)
};
triangels = new int[]
{
0, 1, 2,
1, 3, 2,
2, 4, 3,
4, 5, 3
};
}
void UpdateMesh()
{
mesh.Clear();
mesh.vertices = vertices;
mesh.triangles = triangels;
mesh.RecalculateNormals();
}
}
굳! 👍
'Unity > 그래픽스프로그래밍' 카테고리의 다른 글
Unity PROCEDURAL TERRAIN _ 여러 개 점,면 만들어서 노이즈 맵으로 지형 만들기 (0) | 2022.10.10 |
---|---|
210715_ 그래픽스 프로그래밍(복습 및 시험) (0) | 2021.07.15 |
0510_ 알파 테스트와 컷 아웃 (0) | 2021.05.10 |
0507 _ 큐브맵 만들어서, 물체에 월드 노멀, 리플렉션 적용시기키 (0) | 2021.05.07 |
0507_Diffuse Warping 만들어보기 (0) | 2021.05.07 |