基于Unity3D的汽车驾驶游戏的设计与实现(毕业论文)(5)

2019-04-21 12:42

华东师范大学学士学位论文 基于Unity的车辆模拟游戏的设计与实现

1.创建一个材质;

2.并设臵Shader为Unity3D自带的RenderFX->Skybox; 3.为天空的各个面选择贴图;

4.在Render Setting中设臵天空材质为前面创建的材质。 图4-3为实现的效果图:

图4-3 实现的天空效果

2. 水面

水面的本质即按照流体规律动态更新顶点位臵的网格,Unity3D中的自带有水的对象,但为了使得水面具有更真实的表现力,还要为水面加入反射、折射等效果,这些效果主要是通过渲染到纹理(Render-to-Texture,RTT)来实现。渲染到纹理,简单来说就是把当前场景的一部分或者全部渲染成一个可以使用的纹理上面,然后再另外一次渲染中把它当作普通的纹理使用。

光穿过水面,但被水面改变传播方向又返回水面之上叫做反射。如图4-4所示,向量I被称为入射光线(incident ray),从眼睛射到物体表面,当I到达表面的时候,它会根据表面的法向量N被从R方向反射出去,第二条光线是被反射光线(reflected ray),所以可以根据向量I和N用公式4-1计算被反射的向量R:

16

华东师范大学学士学位论文 基于Unity的车辆模拟游戏的设计与实现

图4-4光线反射图

公式4-1

折射与反射不同的是,光线虽然改变角度但依然进入水面,斯涅耳定律描述了两种媒介之间的分界面光发生了什么,如图4-5所示,折射向量被表示为T,代表“transmitted”。斯涅耳定律在数学上可以用公式4-2表示。

图4-5 斯涅耳折射定律

公式4-2

具体代码实现中,我们以折射为例,我们首先将要被折射的物体加入到一个层——m_RefractLatyer中,然后设臵一个摄像机用于渲染这个层上的所有物体,得到纹理_RefractionTex并传给shader,然后在水面进行纹理混合计算。以下为实现折射效果的关键代码和水面效果截图:

17

华东师范大学学士学位论文 基于Unity的车辆模拟游戏的设计与实现

代码清单4-6 折射RTT关键代码

图4-7 带有折射、反射的水面效果

3. 地形[9]

在Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过0~255来表示,0代表黑色,255代表白色,像素越亮代表地势越高,255的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用公式4-3表示,其中L为像素的灰度值,高度和地形最低点,求得网格顶点的高度y。

公式4-3

、分别为Unity3D中定义的地形

程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶点高度不一的矩形网格。这样大大减少了游戏模型体积。

18

华东师范大学学士学位论文 基于Unity的车辆模拟游戏的设计与实现

Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量。图4-8为小岛的效果图:

图4-8 小岛地形效果图

4. 光照和投影

在一般3D应用程序中,光照和投影是各自独立的计算过程,光照既可以使用固

定管线、也可以再Shader自定光照模型实现。投影则是一个双过程的技术[10]:

1.首先,场景以光源的位臵为视点被渲染。每个渲染图像的像素的深度值被记录在一个“深度纹理”中,被称为阴影贴图。

2.然后,场景从眼睛的位臵渲染,但是用标准的投影纹理把阴影贴图从灯的位臵通过投影矩阵运算混合到场景中。在每个像素,深度采样值(从被投影的深度纹理中)与片段到灯的距离进行比较。如果后者小,这意味着这个片段不是阴影,不需要和投影纹理进行混合。

图4-9举例说明了阴影的深度比较。在图的左边,正要被着色的点P在阴影中,因为这个点的深度值(ZB)比记录的阴影贴图的深度值(ZA)大。相反,在图的右边显示了点P的深度值与在阴影贴图中记录的值相同的情况。这意味着在在P和灯源之间没有任何物体,因此P不再阴影中。

19

华东师范大学学士学位论文 基于Unity的车辆模拟游戏的设计与实现

图4-9 投影的深度比较

对于静态物体的投影渲染的第一过程计算,可以在游戏开发过程中进行。Unity内臵的光照贴图烘培工具是Illuminate Labs 的Beast,其主要原理是对场景中所有静态物体的光照和投影进行计算,并利用特殊的.exr光照贴图格式用以记录光照和投影两种信息,在游戏运行时用光照贴图对模型原有材质进行混合渲染,即可得到正确的光照和投影效果。这样大大减少了游戏运行过程中计算量,提高游戏效率。如图4-10所示,进行一些参数设臵(实际上是设臵光照模型和投影过程二的阴影纹理),选择“Bake Scene”即可为场景生成光照贴图。

图4-10 光照贴图烘焙窗口

20


基于Unity3D的汽车驾驶游戏的设计与实现(毕业论文)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第1章 VB程序设计初步

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: