unity-网格编程06

207 阅读1分钟

既然已经完成了一个三角形的那么我们参照之前的,再写一个三角形,并把这个面片拼凑成一个四边形,那么直接参照之前的代码就好了,还有为了方便看出来,稍微的调整第二个三角形的位置. `using System.Collections; using System.Collections.Generic; using UnityEngine;

//脚本对于组件的依赖 [RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]

public class SimpleProceduralMesh : MonoBehaviour { private void OnEnable() {

    Mesh mesh = new Mesh()
    {
        name = "Procedural Mesh"
    };

    //3个顶点
    mesh.vertices = new Vector3[] {
        Vector3.zero ,
        Vector3 .right ,
        Vector3 .up ,
        new Vector3 (1.1f,0),
        new Vector3 (1.1f,1.1f),
        new Vector3 (0,1.1f)
    };
    //顶点的渲染顺序
    mesh.triangles = new int[] {
        0,2,1,
        5,4,3
    };
    //模型发现朝向
    mesh.normals = new Vector3[] {
        Vector3 .back,
        Vector3 .back,
        Vector3 .back,
        Vector3 .back,
        Vector3 .back,
        Vector3 .back

    };
    //模型UV
    mesh.uv = new Vector2[] {
        Vector2 .zero,
        Vector2.right,
        Vector2.up ,
        new Vector3 (1.1f,0),
        new Vector3 (1.1f,1.1f),
        new Vector3 (0,1.1f)
    };

    mesh.tangents = new Vector4[] {
        new Vector4(1f,0f,0f,-1f),
        new Vector4(1f,0f,0f,-1f),
        new Vector4(1f,0f,0f,-1f),
        new Vector4(1f,0f,0f,-1f),
        new Vector4(1f,0f,0f,-1f),
        new Vector4(1f,0f,0f,-1f)
    };

    GetComponent<MeshFilter>().mesh = mesh;
    //Material Mat = GetComponent<MeshRenderer>().material = new Material(Shader.Find("Standard"));
    //Mat.mainTexture = Resources.Load<Texture2D>("base-map");
    
}

} `

那么再次运行unity程序:

image.png