Mesh,Mesh Filter和Mesh Renderer

在Unity Editor中查看Mesh

    Unity场景中的3D游戏物体的几何形状外观叫做mesh。在Unity Editor中,可以查看游戏物体的Mesh。其步骤如下:

    1. 在场景视图中,找到Draw mode下拉菜单,在场景视图的左上角,默认设置为Shaded


    2. 在下拉菜单中选择Wireframe,下图就是shader和material都去掉后的样子:


    Mesh是场景中3D游戏物体的骨骼,它是这个物体的几何元素。

    着色器(Shader)和材质(Material)告诉了Unity如何将3D物体的mesh从3D场景中绘制成屏幕上的2D图像。


    为了理解Mesh是如何工作以及它们是如何绘制的,知道它们的结构是很有帮助的。下图是场景中的一颗苹果拉近看的图:


    一个Mesh是一系列平面2D多边形组成的,这些多边形通过顶点(vertices,单数形式vertex)来定义,顶点是在3D空间中存储XYZ坐标值的点。mesh书里也包含了法线(normals),法线定义了组成mesh的多边形平面的朝向。顶点法线的方向会对表面的形状产生影响,比如让物体上某些面看起来是弯曲的,有些地方是平的,有点地方是凹陷的。Shader会根据法线的信息来渲染mesh,比如让mesh看起来就像是弯曲的样子,但实际上shader没有实际去改变mesh本身。比如上图中的苹果,从mesh角度来看,它是由许多个平坦的表面组成,但它的法线会是的其表面看起来很平滑。如下图所示:


    关于法线的概念,想要看更多,可以参考这里

    https://www.bilibili.com/read/cv14554092

Mesh Filter,Mesh Renderer组件

    在Unity Editor中,在场景中任意选择一个非empty的游戏物体,在其Inspector视图中会看到两个组件:Mesh Filter和Mesh Renderer。比如下图例子的一个胶囊体:


    Mesh Filter组件指向的是项目中对应的mesh数据。对于上述的胶囊体例子,之所以从mesh视图看它是一个胶囊体的形状,是因为mesh filter所用的mesh数据是这样的。我们可以强行将这个mesh数据换成项目中另一个物体的mesh数据。比如我们将其换成Sphere,此时即便游戏物体的名字还是显示Capsule,但其外观显示出来却是一个球体。


    Mesh Renderer组件则是用来指定这个mesh如何被绘制的地方。这个组件里有多个属性,但最重要的一个属性就是材质(materials)。

    材质和shader一起工作,用来定义mesh会被如何绘制。一种材质可以被应用到多个mesh上。


    Unity Editor中,要对某个物体应用一个材质,可以在Mesh Renderer中的Materials选项中进行设置,比如下图中,我们将前面的胶囊体的材质设置成了另外一种材质后,最终结果如下:


    那么材质又包含了哪些东西呢?我们在项目窗口中,选择上图所选择的材质,查看其Inspector面板,可以看到材质是一个shader和其属性值的封装:

猜你喜欢

转载自blog.csdn.net/vivo01/article/details/128899276