본문 바로가기
개발/Unity

유니티 - 메시의 정점 개수 구하기 (The Number of Vertices in the Mesh)

by 피로물든딸기 2022. 10. 30.
반응형

Unity 전체 링크

 

쿼드, 평면, 큐브의 정점의 개수는 몇 개일까?

정점의 개수는 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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글