Unity Mesh(二) Mesh畫立方體Cube和八面體Octahedron

上一篇文章中是關於二維的平面圖形,這裏有個地方需要改進一下:


上一篇文章中每個方法中都有這麼兩句:




其實多餘了,沒我們可以直接在類名開頭加上這樣一句就可以了




是不是很方便啊,當時咋就那麼笨呢。


下面我們進入這篇文章的主題:


一.畫立方體

立方體其實也是由三角形組成的,立方體包含六個面,每個面上有兩個三角形,我們挨個畫出來就可以啦!


代碼如下:
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class Test3D : MonoBehaviour
{

    public Material mat;



    // Use this for initialization
    void Start()
    {

        DrawCube();

    }

    #region 畫正方體
    void DrawCube()
    {
        gameObject.GetComponent<MeshRenderer>().material = mat;

        Mesh mesh = GetComponent<MeshFilter>().mesh;
        mesh.Clear();

        //設置頂點
        mesh.vertices = new Vector3[]
        {   new Vector3(0, 0, 0),
            new Vector3(1, 0, 0),
            new Vector3(1, 1, 0),
            new Vector3(0, 1, 0),
            new Vector3(0, 1, 1),
            new Vector3(1, 1, 1),
            new Vector3(1, 0, 1),
            new Vector3(0, 0, 1),
        };
        //設置三角形頂點順序,順時針設置
        mesh.triangles = new int[]
        {
          0, 2, 1,
            0,3,2,
            3,4,2,
            4,5,2,
            4,7,5,
            7,6,5,
            7,0,1,
            6,7,1,
            4,3,0,
            4,0,7,
            2,5,6,
            2,6,1

        };
    }
    #endregion

}


結果如圖:



二.畫八面體


爲什麼要畫八面體呢,英文叫 Octahedron 這裏先提一下,這是對我們畫球體是有幫助的,八面體是柏拉圖體(Platnonic soild)中的一種,詳見維基百科的解釋。




同理,正八面體是八個面,八個三角形,我們挨個畫出三角形就可以了。

代碼如下:
#region 畫八面體
    void DrawOctahedron()
    {
        gameObject.GetComponent<MeshRenderer>().material = mat;

        Mesh mesh = GetComponent<MeshFilter>().mesh;
        mesh.Clear();

        //設置頂點
        mesh.vertices = new Vector3[] {
            Vector3.down,
            Vector3.forward,
            Vector3.left,
            Vector3.back,
            Vector3.right,
            Vector3.up
        };

        //設置三角形頂點順序,順時針設置
        mesh.triangles = new int[]
        {
            0, 2, 1,
            0, 3, 2,
            0, 4, 3,
            0, 1, 4,


            5, 1, 2,
            5, 2, 3,
            5, 3, 4,
            5, 4, 1

        };

    }
    #endregion


運行結果如圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章