본문 바로가기
개발/Unity

유니티 - 절차적 메시로 정점이 8개인 큐브 만들기 (Make 8 Vertices Cube with Procedural Mesh)

by 피로물든딸기 2022. 11. 6.
반응형

Unity 전체 링크

 

유니티 큐브의 정점의 개수를 출력하면 24개임을 알 수 있다.

 

큐브를 8개로 정점으로 만들면 어떻게 되는지 알아보자.

 

ProceduralCube8.cs는 정점을 8개만 만들고 나서 시계방향으로 각각의 면에 삼각형을 두 개씩 만들어주었다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))]
public class ProceduralCube8 : MonoBehaviour
{
    Mesh mesh;
    Vector3[] vertices;
    int[] triangles;

    void Start()
    {
        mesh = GetComponent<MeshFilter>().mesh;
        setMeshData();
        createProceduralMesh();
    }

    void setMeshData()
    {
        Vector3 v0 = new Vector3(+0.5f, +0.5f, +0.5f);
        Vector3 v1 = new Vector3(-0.5f, +0.5f, +0.5f);
        Vector3 v2 = new Vector3(-0.5f, -0.5f, +0.5f);
        Vector3 v3 = new Vector3(+0.5f, -0.5f, +0.5f);
        Vector3 v4 = new Vector3(-0.5f, +0.5f, -0.5f);
        Vector3 v5 = new Vector3(+0.5f, +0.5f, -0.5f);
        Vector3 v6 = new Vector3(+0.5f, -0.5f, -0.5f);
        Vector3 v7 = new Vector3(-0.5f, -0.5f, -0.5f);

        vertices = new Vector3[] {
            v0, v1, v2, v3, v4, v5, v6, v7
        };

        triangles = new int[] { 
            0, 1, 3, 1, 2, 3,
            1, 4, 2, 4, 7, 2, 
            4, 5, 7, 5, 6, 7, 
            5, 0, 6, 0, 3, 6, 
            5, 4, 0, 1, 0, 4, 
            3, 2, 6, 6, 2, 7
        };
    }

    void createProceduralMesh()
    {
        mesh.Clear();
        mesh.vertices = vertices;
        mesh.triangles = triangles;
        mesh.RecalculateNormals();
    }
}

 

빈 오브젝트에 아래와 같이 컴포넌트와 스크립트를 추가하자.

 

이제 실제 큐브와 비교해보자. 

정점 하나가 면 3개의 노멀 벡터를 저장할 수 없기 때문에 라이팅 연산이 제대로 계산되지 않는 것을 알 수 있다.

 

따라서 유니티 큐브는 정점이 24개가 필요하다.

8 vertices cube

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

반응형

댓글