1. 简介
1. 基础理论
- 模型是由点和面构成的,每三个点构成一个三角面。
- 根据三个顶点排列的顺序,根据左手定则决定三角面的正反面
- 三角形序列是一组int数组,数组元素数量为3的倍数,表示三角形的顶点 对应的顶点ID
- Unity想要显示一个模型,必须在对象上挂载组件Mesh Filter(网格过滤器)与Mesh Renderer(网格渲染器)
- Vertex
- Normal
- UV
- Trangle(三角形序列)
- Unity允许使用Mesh类创建模型,并将创建的Mesh赋值给MeshFilter。
- 模型顶点列表 记录了所有顶点的位置信息; 三角形序列 决定了哪三个顶点会构成一个三角面。以左手定则决定面的正方向; UV坐标列表 决定了每个顶点对应UV纹理坐标的具体位置。三角面之间的UV值将通过三个顶点的UV值,以插值的方式确定面每个位置的的UV值;
一个正方形
MeshFilter filter;
void Start()
{
filter = GetComponent();
Mesh mesh = new Mesh();
mesh.name = "Mesh_01";
mesh.vertices = GetVertexs();
mesh.triangles = GetTriangles();
mesh.uv = GetUVs();
mesh.normals = GetNormals();
mesh.tangents = GetTangent();
filter.mesh = mesh;
}
// 设定顶点位置
Vector3[] GetVertexs()
{
return new Vector3[]
{
new Vector3(0, 0, 0),
new Vector3(1, 0, 0),
new Vector3(0, 1, 0),
new Vector3(1, 1, 0),
};
}
// 设定三角形序列
int[] GetTriangles()
{
return new int[]
{
0, 1, 2, 1, 3, 2
};
}
// 设定UV
Vector2[] GetUVs()
{
return new Vector2[]
{
new Vector2(1, 0),
new Vector2(0, 0),
new Vector2(1, 1),
new Vector2(0, 1),
};
}
// 设定顶点位置
Vector3[] GetNormals()
{
return new Vector3[]
{
new Vector3(0, 0, 1),
new Vector3(0, 0, 1),
new Vector3(0, 0, 1),
new Vector3(0, 0, 1),
};
}
// 设定顶点位置
Vector4[] GetTangent()
{
return new Vector4[]
{
new Vector4(-1, 0, 0, -1),
new Vector4(-1, 0, 0, -1),
new Vector4(-1, 0, 0, -1),
new Vector4(-1, 0, 0, -1),
};
}
动态创建指定尺寸的矩形
public int width, height;
MeshFilter filter;
private void OnDrawGizmos()
{
Start();
}
void Start()
{
filter = GetComponent();
Mesh mesh = new Mesh();
DrawMesh(mesh);
filter.mesh = mesh;
}
void DrawMesh(Mesh mesh)
{
mesh.name = "Mesh_02";
width = width > 0 ? width : 0;
height = height > 0 ? height : 0;
// 顶点列表
Vector3[] vertices = new Vector3[(width + 1) * (height + 1)];
Vector2[] uvs = new Vector2[(width + 1) * (height + 1)];
int[] triangles = new int[width * height * 2 * 3];
for (int y = 0; y = 1 ? XSize : 1;
YSize = YSize >= 1 ? YSize : 1;
ZSize = ZSize >= 1 ? ZSize : 1;
Radius = Radius
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?