【Shader】网格 Mesh


1. 网格 Mesh

Mesh指的就是模型的网格,它决定物体的表面形状。一个模型的表面是有多个三角形彼此相连组成的。(也有其他的类型)美术的建模就可以理解成建网格。

为什么三角形呢?
两点成线,三点成面。三角形是最基础的面包,并且三角形有更广泛的适用性。Mesh是构成这些三角面所需要的信息集合
Alt
图片来源:Unity手册—Meshes

2. Mesh的组成

这篇文章,Mesh组成只看前三项:顶点数据,拓扑和索引。
Alt

  • Vertices 顶点集合:存储的是构成网格面的全部的点
  • Topology 拓扑类型:储存一个类型信息。拓扑指图形表面结构的组成方式。比如三角形
  • Indices 索引集合:指每个三角面顶点的索引,储存了构成网格三角面的顶点索引

2.1 Vertex Data

顶点数据,包含了顶点的位置,法线,切线,颜色,纹理坐标等属性.

Position:顶点在3D世界中一个vector3类型位置信息
Normal:法线,垂直于该顶点三角面的三维向量,只有方向没有大小。法线的方向就是顶点三角面朝外的方向。在Unity中新建一个Plane,Y轴绿色箭头的方向就是该平面的法线方向。
在这里插入图片描述
Tangent:切线,是一条垂直于法线的向量,由于垂直于法线的向量有无数条,所以切线最终有UV坐标来决定方向。
Texture coordinates (UVs):UV坐标即纹理坐标,是一个二位坐标系统。模型网格除了有xyz三维坐标外,还有一个二维UV坐标。U和V分别代表顶点在Texture水平和垂直方向上的采样坐标。这些坐标通常位于(0,0)和(1,1)之间。分别表示最左下角和最右上角。是Texture映射到模型表面的依据。模型顶点会依据UV坐标对Texture进行采样。

2.2 Topology

拓扑类型
Unity提供了五种拓扑类型,三角形,四边形,线条,虚线,点阵。其中三角面是最常用的。

2.3 Index data

索引数据
索引数据取决于拓扑类型。三角面储存的就是0,1,2。四边形则是0,1,2,3。该索引数值对应的是顶点数据的下标。

索引的绕序 指的是这些顶点在面上的排列顺序。
在这里插入图片描述
图片来源:Unity手册
如上图所示,索引1,2,3是有顺序的,相当于当前视角的顺时针,因此它表示这个三角形是正面,反之三角形索引4,5,6是逆时针的则表示该三角戏是背面的。默认下,Unity会渲染正面剔除背面。
由于这些顺序就会导致法线的方向不同,这也是美术常常遇到的因为法线反转而导致渲染效果出错的原因。

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/126769829