【Unity入门教程】 第三章 渲染系统【中国大学MOOC游戏引擎原理及应用】

以下均为来自中国大学mooc 游戏引擎原理及应用时的学习笔记,不含商用,仅供学习交流使用,如果侵权请联系作者删除。

3.1渲染路径

最初的3D引擎也被称为渲染引擎,渲染就是通过计算机的运算,将三维场景最终转换成游戏画面的过程。

渲染过程可能的实现方法:渲染路径
讲这之前先来讲讲渲染流程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
左边是正向渲染路径,每个物体对于每个光照都是独立进行的。
右边的延迟渲染,把光照计算延迟到了最后一步。
相当于做了一次基于屏幕像素的计算。

接下来使用unity实际演示两种渲染路径的区别。

普通情况下光源数量是有限制的
在这里插入图片描述
我们可以在这里修改设置
在这里插入图片描述
这里可以修改光源数量

在这里插入图片描述
在这里插入图片描述
上面这些都是forward渲染的情况下
如果我们换成另外一种情况 延迟渲染:
在这里插入图片描述
将图形一栏中所有渲染路径换成延迟渲染

那接下来我们会看到 即使物体数量增加 SetPassCall数量也不会增加
在这里插入图片描述
在这里插入图片描述
这就是forward和延迟渲染的区别

3.2 颜色空间

渲染路径的选择和游戏的复杂度还有平台的选择有关系

渲染的最终目的是为了将屏幕像素填充特定的颜色

如何计算像素的颜色显得很重要

在游戏引擎中有两种颜色控制方式,也就是颜色空间
在这里插入图片描述
伽马颜色空间是
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
线性空间的着色运算需要做伽马矫正

在所有计算机颜色的管理当中 默认情况下都是伽马空间
进行线性空间运算需要做特殊处理

从上面这图也可以看出来 在计算过程也就是着色过程中才保持是线性空间

保存跟显示仍然是在颜色的伽马空间

在这里插入图片描述
这是伽马空间下的渲染情况
线性空间是这样的:

在这里插入图片描述
在这里插入图片描述
这是线性空间下的渲染结果

我们打开一个纹理
在这里插入图片描述
可以看到有一个sRGB的选项,这是在做一个伽马矫正。
这是因为一般的图片编辑软件走的都是一个伽马的流水线

一般情况下都需要点选,除非你选用的这个空间是线性颜色空间。 但是一般图片编辑软件都是伽马颜色空间,所以有必要点选。

总结:在现在越来越需要物理正确的渲染结果的情况下,线性空间变得越来越流行了。

3.3 摄像机

(提醒 这个选项可以选择是否让相机最大化 在这里插入图片描述

在这里插入图片描述
这里还可以选择多个视角来观察
在这里插入图片描述
在这里插入图片描述
右边这种情况下适用于判断物体真实大小的情况,比如说工程制图。

在这里插入图片描述
左边为透视,右边为正交

unity对于摄像机的支持非常细致

在这里插入图片描述
摄像机的一些属性:
在这里插入图片描述
清楚标志指的是将没渲染的地方用什么来替代

接下来我们看看深度的影响:

在这里插入图片描述
在这里插入图片描述
并且将主相机的深度设置为0
这样两个相机就深度不同

由于副相机只渲染深度
在这里插入图片描述
(Depth越大的摄像机 越靠近观众 就会覆盖掉深度小的摄像机的画面

由于两个摄像机的深度有所区别 然后深度小的摄像机的只渲染了深度 (于是只有盒子)
于是从另外一个摄像机看来前面就有两个摄像机

接下来讲下投影的视角:
透视视角:
在这里插入图片描述近大远小

在这里插入图片描述
正交的效果:没有正大远小的区别

在这里插入图片描述
这个大小可以说是视野 也就是广角和窄角的那种区别

在这里插入图片描述
剪裁平面:
在这里插入图片描述
所有物体能够被渲染出来都是处于近裁剪面和远裁剪面中间的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
离摄像机过近 超过近裁剪面 会被裁剪掉从而看不到
离摄像机过远 超过远裁剪面 也会被裁剪掉然后看不到

只有在裁剪面以内的东西才能看到 裁剪面以外的东西会被裁剪掉 是这样一个意思

摄像机下的渲染路径:
在这里插入图片描述
可以让针对性的让某个摄像机使用某个渲染
旧版的是被舍弃掉的不再用的除非针对某个特定的平台

在这里插入图片描述
后面这几个都是默认使用的情况

3.4 灯光

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在unity里看看光照的属性
在这里插入图片描述
上面几个属性都比较简单 类型在后续的课程中会讲
在这里插入图片描述
这个光照中间接乘数是指影响到间接光照明 全局光照明系统的真实感在这里插入图片描述
将cookies中的纹理效果移到光的剪影(Cookies)下可以使得这个光照可以产生投射的状态

在这里插入图片描述
important是逐像素渲染
not important则是快速渲染

在这里插入图片描述
让光源都某些物体层起影响

在这里插入图片描述
有几个灯光效果

3.5实时阴影

在这里插入图片描述
虽然画面是3D的 但是我们是用2D的设备显示的
有时候我们无法看来小球的位置关系是什么样的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ww
在光照下这里可以实现阴影
还有阴影半径可以选择

在这里插入图片描述
在物体的属性一栏还可以选择是否接收阴影

3.6 材质

如果想让玩家看到的这个场景更加符合设计者的意图,还需要游戏场景的物体的表面和环境发生特定的交互,从而表现出你想要的特定的外观颜色来。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
着色器+纹理=材质

在这里插入图片描述
车身和轮胎都使用了材质,使用了分别不同的材质,这些材质都由特定的材质和纹理构成。

虽然这两个材质不同,但使用的是同一个着色器和对应的车辆的纹理。
不同的地方在于这两个地方当中,着色器的参数调整不一样。
所以表现出来两个材质的颜色不一样。

这个就是形象的看一下材质和着色器纹理的关系。

在这里插入图片描述

我们在unity中进行演示
在这里插入图片描述
首先创造出一个材质

在这里插入图片描述
着色器:默认情况下是standard
还有渲染模式

平滑度会影响到物体表面的镜面反射的大小

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
法线贴图:影响物体表面法线分布,这个法线会影响到很多东西
包括下面的高度贴图
高度贴图:影响物体表面的这些顶点的高度的变化的
影响物体表面高度变化的大小

顶点的高度向哪个方向变化呢?就是法线方向变化

Emission:材质自发光
在这里插入图片描述
Tilling 平铺密度 越大的话发现越密集

当材质的y密度很大的时候如图所示
在这里插入图片描述

Offset 纹理坐标的偏移 可以调整偏移(对于球体来说就是纹理转圈的效果)

在这里插入图片描述
cutout的渲染模式:镂空的渲染模式

在这里插入图片描述
可以通过这个方法来调整透明度
当物体表面的不透明度小于这个阈值的时候 它就会被镂空掉

还有两种渲染模式
在这里插入图片描述
fade和transparent的渲染模式区别在于 transparent仍然会反射光

当调成全透明的时候 fade这种渲染模式下所有的都物体信息都看不清了
但是transparent还会反射光线

transparent用来模拟玻璃的效果
fade用来模拟消隐掉的效果

选中材质可以在这里看到材质的属性
在这里插入图片描述
在这里插入图片描述
当这个纹理被平铺的时候 它被平铺的模式是怎么样的

在这里插入图片描述
默认使用三线性滤波 是最好的滤波模式

3.7 全局光照明系统

在这里插入图片描述
在这里插入图片描述

首先如图所示 建立这样的材质和图的效果
在这里插入图片描述

但是我们发现这个室内的“墙壁”并没有阴影照射下来,我们需要进行光照调整
在这里插入图片描述
环境照明选中遮蔽
在这里插入图片描述
在这里插入图片描述
并且选中环境光遮蔽

此时就会生成这样的一个光照效果
在这里插入图片描述
(不知道为什么我的这个是这样子 不知道哪里出错了)在这里插入图片描述
环境反射相当于这个反射从哪里来在这里插入图片描述
在这里插入图片描述
光照贴图器默认用的是上图中的方式
红框中分辨率越高 光照效果越好 但是也意味着更大的系统开销

在这里插入图片描述

这个选项可以清楚当前的光照贴图

3.8 探针

全局光照明系统只对静态物体有效,因为静态物体的全局光照信息可以预先计算下来,涉及到动态物体的全局光则需要使用探针
探针:英文名为probe
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们在unity中来实现
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity作为一款广泛使用的游戏开发引擎,在游戏开发领域中有着举足轻重的地位。如果想要开始学习Unity引擎,需要掌握基础概念和技能。以下是Unity零基础到入门的步骤: 第一步是了解Unity的界面和基本概念,包括场景、游戏对象、组件等,这些是搭建Unity工程的基础。 第二步是学习Unity中的脚本编程,以及常用的变量类型、条件语句、循环语句等基本语法知识。 第三步是掌握Unity的资产管理和使用,包括材质、纹理、声音、动画等。 第四步是了解Unity中的游戏物理系统,包括刚体、碰撞器等,以及如何添加和控制它们。 第五步是学习Unity中比较重要的导航系统,这就需要我们详细解析这个系统的操作步骤和注意事项,这个过程就需要用到"万字教程"。 Unity的导航系统是一个专门用于实现寻路和移动的功能,它可以在场景中自动生成地图,并自动计算出路线、寻找路径和避免障碍物。导航系统的基本原理是通过使用寻路算法来查找最短路径,这个算法需要用到A*算法,这也是一个常用的寻路算法。在具体操作中,用户需要首先添加导航网格、设置导航代理、通过设置导航区域建立环境信息来让导航代理获取路径信息等步骤,最终通过代码实现控制游戏对象移动的过程。 总之,要学习Unity的导航系统,需要先获得一定的Unity基础,学习并熟练掌握资产管理、物理系统、脚本编程等技能,并结合"万字教程"对导航系统进行深入学习和了解,最终掌握实现游戏导航的技巧和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值