Unity简单的Mesh绘图(一):绘图

 Unity的Mesh绘图其实并不难,简单的来说就是,就是用N个三角形绘制成为你想要的图形。
  1. 顶点与排序

    其原理也是非常简单的,我用一幅图给大家展示一下:
    Unity简单的Mesh绘图(一):绘图_第1张图片
    在这里,大家也是一目了然了,我标注的三个点,就是三角形的三个顶点,但是我这里是一个平面坐标,我们需要的顶点是立体坐标,然后的,就是排序了,顺时针排序是正面出图,逆时针是反面出图。
    Unity简单的Mesh绘图(一):绘图_第2张图片
    我之前犯过的误区(也可能是本人比较傻比),简单的说说,顺时针就是以abc为例子,逆时针也就是cba啦,顶点的顺时针逆时针只和正反面有关系,和其他完全的,一丁点的关系都没有的,还有一点,画圆和画比较多顶点的图的时候,必须要把顶点坐标捋清思路,不然会影响到后面的贴图。直接上代码了。

    public static class TakeVandT {
    /// 
    /// 画等腰三角形
    /// 
    /// 长度
    /// 高度
    /// 
    public static Vector3[] TakeTVertex(float Length,float height)
    {
        //这里是三角形的三个顶点,可调节长短
        Vector3[] rec = new Vector3[] { new Vector3(0, 0, 0), new Vector3(Length/2, height, 0), new Vector3(Length, 0, 0) };
        return rec;
    }
    /// 
    /// 获取三角形排序
    /// 
    /// 
    public static int[] TakeTSort()
    {
        //排序
        int[] rec = new int[] { 0, 1, 2 };
        return rec;
    }
}

我把方法写成了静态,这样方便读取


 public Material met;
    // Use this for initialization
    void Start () {
        Mesh mesh=gameObject.AddComponent().mesh;
        MeshRenderer mere = gameObject.AddComponent();
        mere.material = met;
        mesh.vertices = TakeVandT.TakeTVertex(10,5);
        mesh.triangles = TakeVandT.TakeTSort();
    }
    // Update is called once per frame

这一段代码是生成用的
  1. 生成效果

    Unity简单的Mesh绘图(一):绘图_第3张图片

画三角形完成了那么按理可得画正方形以及各种图形的方法了(后面我会贴代码出来)

  • 贴UV
    贴UV的最大难题就是UV的顶点问题,现在我来讲解一下我最近学习到的顶点相关知识。
    Unity简单的Mesh绘图(一):绘图_第4张图片
    那么从这张图上面我们可以看到我画的四个顶点(画的丑,请见谅)可以知道(0,0)点事在左下角的,然后UV贴图和上面的画图有很大的关联,UV的V2顶点坐标生成和上面的V3顶点坐标其实是相对应的

你可能感兴趣的:(Unity简单的Mesh绘图(一):绘图)