unity3d中的网格

本章摘取自
https://www.coursera.org/learn/unity-yinqing-youxi-kaifa/home/welcome
课程学习学习笔记。作为unity3d学习记录和总结:

游戏中的三维物体使用网格来描述自身的形状和尺寸,一个模型由若干个网格面组成,每个面由若干个三角形组成.

图1

图1 三维网格,正方形,球形

可以这么说,游戏中的三维物体由三维网格组成,在计算机图形学中,经常使用三角形网格来描述物体的几何信息,可以采用图形卡 GPU 对三角形网格有关的计算进行加速,正方体可以看作由12 个三角形组成,其中每个面由两个三角形组成,12 个三角形形成一个网格。球体可以通过多次细分,得到多个小三角形。虽然球面是曲面,对曲面进行非常精细的细分操作。曲面的每个细分单元可以用一个平面三角形来代替,整个平面三角形可以接近于一个光滑的一个曲面。

对于人体模型,可以采取相同的方法,将人体表面细分成多个小三角形 可以很好地逼近人体的外观。

在 Unity 中,使用网格过滤器 Mesh Filter 存放游戏对象的网格信息,把网格信息传递到网格渲染器,由网格渲染器负责将网格渲染到屏幕画面。

网格过滤器组件

图2

图2 几种网格组件

网格过滤器组件主要用于确定模型的形状与尺寸。Unity 中自带了几种网格,包括立方体网格,胶囊体网格,圆柱体网格,平面网格,球体网格等等。

网格过滤器中的网格是球体网格,在场景中,这个对象渲染成一个球体的形状。

游戏对象的网格过滤器,只能描述对象的几何形状。 * 不包含对象的颜色等表面特征 *

网格渲染器组件 Mesh Renderer

图3

图3 渲染器组件

Mesh Renderer 可以指定游戏对象的表面特征,网格渲染器组件从网格过滤器组件中获取对象的几何形状,用于渲染场景中的模型。
图中给出 Inspector 视图中的网格渲染器组件 介绍它的几个属性。

Cast Shadow,表示该对象绘制时是否产生阴影。
Receive Shadow,表示该对象是否接受其他对象产生的阴影。
Material,表示网格所使用的材质的组件。

根据实际情况,一个网格渲染器可以使用多个材质。网格过滤器与网格渲染器必须成对使用,缺少任意一个都会导致游戏对象的渲染失败。我们可以把网格过滤器看作一个人的骨骼,把网格渲染器看作一个人的血肉, 前者决定了游戏对象的几何形状,后者决定了游戏对象的外貌、颜色等表面特征。网格过滤器只绘制物体的形状与尺寸,材质用来呈现物体颜色、质感等表面属性。游戏对象的材质在它的网格渲染器中进行设置。

创建一个 Unity 内置的三维物体,Unity 编辑器会自动应用一个默认的材质(Default-Material)。我们无法对这个材质进行修改,我们可以创建材质 把游戏对象的网格渲染器中的材质属性指定为我们创建的材质 游戏对象的渲染过程中,使用该材质。

材质的创建方法

Project 视图-》鼠标右键-》 Create 菜单-》 Material,即可完成材质的创建。

材质创建完成后,在 Project 视图中可以看到新创建的 New Material 材质。

我们把创建好的材质应用到网格渲染器组件的 Material 属性。

图4

图4 材质的创建

完成后我们发现,在 Inspector 视图中,该游戏对象的材质球由 Default-Material 变为 New Material 表明材质应用成功。

材质编辑

Project 视图 -》选中材质球,可以在 Inspector 视图中设置该材质的多个属性 首先需要选择渲染该材质的着色器类型。

其次对该着色器的相关属性进行设置 在设置材质属性时,我们可以在 Inspector 视图下方预览材质的视觉效果 每种材质都需要设置着色器类型。

下面我们介绍着色器的概念。

着色器

图5

图5 着色器

着色器主要用于图像的渲染过程,它具有可编辑,不受显卡的固定渲染管线的限制,可以实现丰富的图像效果,这极大地提高了图像的品质。
我们可以使用着色器语言来编写相应的着色器脚本,以实现图像渲染的不同效果。 着色器脚本的编写比较复杂。

后面会进行讲解对于大多数游戏对象,我们可以使用 Unity 内置的标准着色器 Standard Shader,来渲染它们的外观效果。

标准着色器

standard Shader 是一个高度可定制的着色器 它能够呈现多种类型的外观效果。
下面我们介绍标准着色器的参数设定 首先标准着色器的渲染模式 标准着色器的渲染模式有四种类型,分别为 Opaque,Transparent,Fade,Cutout.

Opaque 用于不透明物体的渲染模式。
Transparent 用于实现透明效果,例如生活中的玻璃球、 窗子、眼镜等。
Fade 用于实现淡入淡出的效果,控制一个物体从不透明渐变为透明。
Cutout 渲染模式下,材质允许一个物体同时具有透明和不透明两个部分。它可以绘制有破洞的衣服、 叶子等。

图6

图6 草坪

如图,是一个草地 它是用 Cutout 渲染模式,包含了透明和不透明两个部分,其中草与草之间的空隙是透明的。草本身是不透明的。

下面介绍标准着色器的其他参数

首先是 Albedo 属性,表示光的反照率,描述物体的基本颜色 例如,草的颜色是绿色,硬币的颜色是银白色 这些物体的基本颜色都可以通过 Albedo 属性进行设置。

在《多米诺骨牌》项目中,我们设置一个小球的 Albedo 属性的基本色为红色 设置完成后,小球表面呈现为红色 其次是 Normal Map 属性 它表示法向贴图。 Normal Map 通过改变光的反射角度 使物体表面显得凸凹不平.

在《多米诺骨牌》项目中,我们通过设定骨牌对象材质的 NormalMap 贴图 使骨牌呈现金属条纹质感。

然后是 Emission 属性 它表示物体的自发光,在没有光照的情况下,物体表面会很暗, 我们可以设置物体的 Emission 属性,使物体看起来自发光。

在《多米诺骨牌》项目中,我们设置大球材质的 Emission 属性,实现大球表面的自发光效果。

除了标准着色器外,天空盒也是一种常见的着色器类型 它用于设置场景中的天空背景图案 天空盒材质是常用的着色器 它的类型是 Skybox/6 Sided 大概着色器需要设定六张贴图,分别为 x+ x-,y+,y-,z+,z- 六个方向来绘制天空背景 关于场景天空盒的设置,我们在下一节光源中进行介绍,在下一节,我们继续介绍 Unity 图形系统,讲解光源方面的知识要点, 我们进入演示环节,给《多米诺骨牌》项目中的游戏对象添加材质 使场景看上去更加的丰富多彩。

以上。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页