unity里的3D物体也是由点、线、面组成的。As we all know,模型最基本的面是三角面,而三角面也有法向,一个Cube挂有Transform、Mesh Filter、Mesh Renderer、Box Collider等组件。
其中Mesh Filter(网格过滤器)用于存储顶点信息,Mesh Renderer(网格渲染器)用于网格渲染显示物体。
上图中正方体的ABCD面是由面ABC和面ACD两个三角面组成的,法线垂直于面ABCD,连接顺序A->B->C,A->C->D。这样一个正方形面就显示在场景里了。
举一反三,画正方体就把其6个面全绘制出来并正确朝向,就成功绘制一个Cube了。
掌握基本原理就可以绘制其他的复杂几何体了:
using System.Collections.Generic;
using UnityEngine;
public class DrawSomething : MonoBehaviour
{
MeshFilter mf;
List<Vector3> lv = new List<Vector3>();
List<int> li = new List<int>();
void Start()
{
mf = GetComponent<MeshFilter>();
Mesh mesh = new Mesh();
mesh.vertices = lv.ToArray();//顶点数据
mesh.triangles = li.ToArray();//连接顺序
mf.sharedMesh = mesh;
}
}
2D平面的也没问题