반응형
쿼드, 평면, 큐브의 정점의 개수는 몇 개일까?
정점의 개수는 Mesh Filter의 mesh에서 vertices의 개수를 구하면 알 수 있다.
빈 오브젝트를 추가하고 NumOfMesh.cs에 정점의 정보를 볼 수 있도록 오브젝트를 할당하자.
NumOfMesh.cs는 아래와 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NumOfMesh : MonoBehaviour
{
public GameObject[] go;
void Start()
{
foreach(GameObject g in go)
{
Mesh mesh = g.GetComponent<MeshFilter>().mesh;
Debug.Log(g.name + " : " + mesh.vertices.Length);
}
}
}
결과는 아래와 같다.
쿼드는 정점이 4개, 평면은 121개, 큐브는 8개가 아닌 24개가 된다.
Shading Mode를 Shaded Wireframe으로 변경하자.
쿼드의 정점은 4개였다. 4개의 정점이 삼각형 2개로 이루어져 있다.
와이어 프레임에서 보이듯이, 평면은 하나의 덩어리가 아니라 쿼드의 집합이다.
쿼드가 10 x 10으로 있으므로 정점이 121개가 필요하다.
하지만 큐브를 겉으로 보면 8개의 정점이 필요하지만 유니티에서는 24개의 정점으로 큐브를 만든다.
쿼드 하나가 4개이므로 4 x 6 = 24개가 되는 것이다.
필요하다면 정점이 8개를 가진 큐브를 Procedural Mesh로 만들 수도 있다.
하지만 DirectX나 OpenGL은 색상이나 질감을 구현하는 경우 큐브당 24개의 정점이 필요하다. (링크 참조)
따라서 유니티의 정점의 개수는 직관적이지 않을 수 있다.
각 정점의 좌표 정보를 출력하고 싶다면, 아래 코드를 참고하자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NumOfMesh : MonoBehaviour
{
public GameObject[] go;
void Start()
{
foreach(GameObject g in go)
{
Mesh mesh = g.GetComponent<MeshFilter>().mesh;
Debug.Log(g.name + " : " + mesh.vertices.Length);
int index = 0;
foreach (Vector3 v in mesh.vertices)
{
Debug.Log(index + " : " + v);
index++;
}
}
}
}
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 절차적 메시로 정다각형, 원 만들기 (Make Regular Polygon, Circle with Procedural Mesh) (0) | 2022.10.31 |
---|---|
유니티 - 삼각형 두 개와 쿼드 비교하기 (Compare Two Triangles and Quad) (0) | 2022.10.31 |
유니티 - 절차적 메시의 양면 렌더링 (Double Sided Rendering with Procedural Mesh) (0) | 2022.10.30 |
유니티 - 절차적 메시 기준점 설정하기 (Setting Offset with Procedural Mesh) (1) | 2022.10.30 |
유니티 - 절차적 메시로 삼각형 그리기 (Make Triangle with Procedural Mesh) (0) | 2022.10.30 |
댓글