Unity3d游戏场景优化

上传人:ail****e3 文档编号:52877521 上传时间:2022-02-09 格式:DOC 页数:19 大小:793KB
收藏 版权申诉 举报 下载
Unity3d游戏场景优化_第1页
第1页 / 共19页
Unity3d游戏场景优化_第2页
第2页 / 共19页
Unity3d游戏场景优化_第3页
第3页 / 共19页
资源描述:

《Unity3d游戏场景优化》由会员分享,可在线阅读,更多相关《Unity3d游戏场景优化(19页珍藏版)》请在装配图网上搜索。

1、Unity3d游戏场景优化涉及到Lod技术(Levels of Detail ,多细节层次),选择剔除(Culling),光照贴图(Lightmap)(一)光照贴图动态实时灯光相比静态灯光,非常耗费资源。所以除了能动的角色和物体静态的 地形和建筑,通通使用Lightmap。强大的Un it y内置了一个强大的光照图烘焙工具Beast,这个东 东是Autodesk公司的产品(可怕的垄断,感觉和3d沾边的软件丫都要插一手空) 据说用来制作过杀戮地带和镜之边缘。镜之边缘建筑场景漂亮干净的光影,Lightmap的效果在Unity中制作Lightmap很方便,调节几个参数后直接烘焙即可。支持GI,Sky

2、light,效果一流! !当然你需要一台好点的机器,不然漫长的烘焙过程你就有的等了。内置的光照图烘焙工具BeastP场景准备和光照图烘焙 点选 Window - Lightmapping打开光照图烘焙面板:1.确认所有将要被用来烘焙光照贴图的网格体UVs正确无误.最简单的办法是在meshimport setti ngs中选择 Gen erate Lightmap UVs 选项(由 Beast 自动分 uv)2.在Object面板中将所有网格体或地形标注为static -这将告诉Unity,这些物体将不会被移动和改变并且可以被赋予光照贴图。0 InspectorLightnnDppinq1Obj

3、ectBakeMapss ViseRendererJStatic315匸泊亡 In Light mip1A(ltleaf Rak电I 5.4?I ttKtli ptrnortd unh7 du-al lightnut1 fi. 7 MB 皿M3.为了控制光照贴图的精度,进入Bake面板并调整Resolution 的值.(为了更好的了解你的lightmap texels使用情况,在Scene视窗中找到 Lightmap Display小窗口并且选择ShowResoluti on).1.点击Bake按钮。2. Unity Editors会岀现一个进度条,位置处于右下角.3.当烘焙结束,Lightm

4、ap Editor窗口会显示已经烘焙好的光照图 .Scene和game视图会同时自动更新-现在你的场景已经有了光照图的效果Un ity Lightmap的设置还有更详细和更高端的内容,请参考自带的文档!(二) LODLOD(_evel-of-detail)是最常用的游戏优化技术。如果你的程序可以定制开发应用LOD的模块,当然是很美好的事情。不过如果没有也没关系,大家可以使用Un iLOD这个第三方的LOD插件。免费共享的哦(向 UniLOD开发者致敬,赞美伟大的共享精神! !)以下是简介:功能众多,涉及到场景管理,模型优化,资源管理员,及显示效果变化,且不需要脚本编写, 全部通过编辑器实现!目

5、前此un ity3d扩展为开源的,你可以下载到源代码来研究学习。特色: 1.自动简化网格体(Windows + Unity Pro only)根据用户的设定自动减面。 2.Level -of-detail 编辑器方便快捷的创建 LOD组件来切换不同的品质级别或通过设定距离数 值来显示或隐藏物体。创建你的LOD场景方便快捷的用 LOD 组件来替换现有组件将现有的场景转换为拥有LOD管理的场景。将单个的 mesh 和贴图成组来降低 draw calls 将场景存储为 标准 assets 或者 asset 包 3.场景管理Streaming 支持Stream your scene as the pl

6、ayer moves through the world资源自动 loaded/unloadedStream from resource folder, or asset bundlesMinimal performance impact with resource buffering可以根据需要调整 , 速度或者内存Takes care of switching quality levels as the playermoves though the world充分优化 , 使用最少的资源 4. 资源管理所有 asset bundles 和普通资源都以标准方式载入。自动释放Keeps ref

7、erence counts on your resources and 5. 完整植入 Unity 并只需要通过 UnityEditor API 来操作。无需输入代码Sorry, 场景管理和资源管理的有些内容没搞懂就不乱翻译了。链接:扩展 beta 版本发布un ilod-beta-levelofdetail-a nd-stream in g-support当然,Un ity3d自己的地形是自带 LOD功能的,当你刷好你的地形后,你只需要调整PixelError 这个参数即可。Unity3d会自动计算生成地形的LOD无需你做其他的任何设置。要提醒朋友们的是,如果你使用了Lightmap,那么同

8、时使用LOD的时候会有一些麻烦,我们的办法是制作模型的时候事先做好第二套uv(不使用Unity的自动计算lightmapUV功能),而且所有LOD的第二套UV的分布位置都一致,很费工。不知道有没有更好的方法! !(三)选择剔除 首先介绍下 draw call (这个东西越少你的游戏跑的越快): 在游戏中每一个被展示的独立的部分都被放在了一个特别的包中, 我们称之为“描绘指令” ( draw call ),然后这个包传递到 3D 部分在屏幕上呈现出来。这就和你希望你的亲友收到 准备好的圣诞礼物需要包装好然后穿过城市准时放在他应该出现的地方一样没什么不同。 你 的CPU来完成包装和传递他们的活,

9、同时会消耗很多的带宽, 所以最终分配好这些关键性资 源很重要。 目前, 真正可怕的事情是从描绘指令消耗远景开始, 每一个独立的飞溅到地板上 的血迹和一个角色或者一具死尸消耗的字节是一样的多的: 他们都消耗同样的描绘指令。 除 此之外,没有什么更多的差别。那么如何降低 draw call 呢?那么我们就用到 Culling( 剔除)技术。如果不应用这个技术, 电脑是不管 3721 把场景里所有的东西都送去渲染的。看得见的也渲染,看不见得照样也送去渲 染。很傻是吧,那咋办呢。得告诉电脑,那个你看得见的渲染,看不见的就算了。于是就有了系统自1. 视锥体剔除( Frustum Culling )这个

10、unity带了好像,就不用操心了。2. 遮挡剔除( Occlusion Culling )Unity 3 专业版内置了一个强大的 Occlusion Culling 插件 Umbra 免费的遮挡剔除( Occlusion Culling )遮挡剔除是一种什么样的特性呢, 当一个物体被其他物体遮挡住而不在摄像机的可视范围内时不对其进行渲染。遮挡剔除在3D图形计算中并不是自动进行的。因为在绝大多数情 况下离 camera 最远的物体首先被渲染,靠近摄像机的物体后渲染并覆盖先前渲染的物体(这被称为重复渲染,无效渲染overdraw).遮挡剔除不同于视锥体剔除视锥体剔除只是不渲染摄像机视角范围外的物体

11、而对于被其他物体遮挡但依然在视角范围内的物体则不包括在内 注意当你使用遮挡剔除时你依然受益于视锥体剔除( Frustum Culling ) 左边的场景使用了遮挡剔除右边的场景未使用遮挡剔除遮挡剔除的运行将通过在场景中使用一个虚拟的摄像机来创建一个物体潜在可视性状态(set )的层级.这些数据可以让每个运行时间内的摄像机来确定什么能看见什么看不见。通过这些数据,Unity 将确定只把可以看见的物体送去渲染.这将降低draw calls 的数量并提供游戏的运行效率.occlusion culling 的数据由单元(cells )组成.每个单元是整个场景范围数值的一部分.更多特定的单元来自一个二叉

12、树(bin ary tree ). Occlusion Culli ng使用两个叉,一个给View Cells ( 静态物体)另一个给 Target Cells ( 移动物体).View Cells map 给出了 一个定义了静态可视物体的索引列表(精确剔除后的静态物体).非常重要的一点是在创建你的物体时要随时注意,因为你需要在物体的尺寸和单元的尺寸间取得一个好的平衡.理想情况下,you should nt have cells that are too small incomparis on with your objects but equally you should nt have o

13、bjects that cover many cells.有时你可以通过将大的物体拆成几个部分来改进遮挡剔除效果.无论如何你仍然能够将小的物体合并为一体来降低draw calls,在它们都属于一些小的组件的时候,occlusion culling将不起作用.确定组件中那个是可视的组件的选集和可视信息被认为是PVS (潜在可视状态 Pote ntially Visible Set).Occlusi on Culli ng设置 为了使用遮挡剔除 需要进行相关的手动设置首先 你关卡中的几何体必须被分割成明显的 不同尺寸的块这也有助于布置关卡中小块的容易定义的区域 被其他大物体遮挡(例如墙, 建筑物)

14、这意味着每个单独的 mesh被确定是否渲染取决于 occlusion 数据所以如果你 有一个物体包含了房间里的所有家具那么所有的家具要么全渲染, 要么全不渲染是否渲染 是基于组件而不是基于每个单独物体自身的。在检视面板(Inspector )你需要标识(tag)所有需要应用遮挡剔除的场景物体。最快的 方法是是将你需要标示为Static的物体作为一个 Empty GameObject的子物体并设置这个Empty GameObject 为 Static,当 option 出现的时候选择 affect children.当子物体被tagged as Static你可以取消子物体和Empty Game

15、Object的父子关系.检视面板中的 Static checkbox下一步点击 Tools-Occlusion Culling.打开Occlusion Culling检视面板,在面板中你会发现几个数值被调整过了。这些数值前面描述过:-Occlusion Culling - Object遮挡剔除检视面板的object标签.Object标签可以让你创建 Occlusion Areas GameObjects.这些区域让你指定什么地方你会使用遮挡剔除注意:默认情况下如果你不创建任何遮挡剔除区域,整个场景都会进行遮挡剔除PropertiesQuick Select快速选择和创建一个Occlusion

16、Area并且快速编辑它None这个是默认值.Create New创建一个新的 Occlusi on Area GameObject.当你点击 Create New in the Quick Select drop down, Unity将自动创建一个 OcclusionArea并且删除默认区域(整个场景).现在你可以根据需要开始调整Occlusion Area(s).Occlusion Area 检视面板 .PropertiesSize 定义 Occlusion Area 的尺寸 .Center选择 Occlusion Area 的中心 . B 默认为 0,0,0 并在 box 的中心位置 .

17、Is View Volume内的静态注意 : 这个定义摄像机的活动范围区域 . 点选这个选项才能应用遮挡剔除在 Occlusion Area 物体 .Is Target Volume 如果你要遮挡剔除运动物体,打开这个选项 .Target Resolution确定区域内的 Occlusion Culling 精度 . 即一个 Occlusion Area 的单元尺寸 . 选项只对 Target Areas (移动物体)起作用 .Low 减少计算时间但同时精度降低 .Medium 计算时间和精度中等,比较平均 .High 计算时间长但精度高 .Very High 精度很高,计算时间更长 .Ext

18、remely High 最高精度 .注意 : 计算时间令人发指。如果摄像机处于遮挡区域之外或者任何物体超出区域这些物体将不会被遮挡剔除Occlusi on Culli ng - BakeView Cell Size每个view area 单元的尺寸,尺寸越小遮挡剔除越精确.这个数值用来平衡遮挡剔除的精 度和存储容量Near Clip Pla neNear clip pla ne如果设置最小数值那么游戏中所有摄像机都可看到Far Clip Pla neFar Clip Plane用于选择objects.任何物体的距离大于这个设定数值都会被自动遮挡.(Should be set to the la

19、rgest far clip pla ned that will be used in the game ofall the cameras)Quality品质级别Preview开发阶段使用这个(ie,不是很准确但可以让你御览在游戏中的大致表现)Product ion如果开发基本结束准备发布那就该选择这个(会耗费更多的时间但更精确)当你调整完这些数值后可以点击Bake按钮开始处理Occlusion Culling数据.如果你对结果不太满意,你可以点击Clear按钮删除以前的计算数据Occlusi on Cull ing - Visualizati onOd.CuNlnq |,Occlusi o

20、n culli ngProperties检视面板bake tab.Occlusi on culli ng检视面板visualization 可视标签PropertiesQuick Select让你快速选择场景中的任何摄像机来观看遮挡剔除的效果The near and far planes 定义了一个虚拟摄像机来计算遮挡剔除数据 . 如果你有几个摄像机 near 或 far planes 不同 , 你应该设置 near plane 和 largest far plane distance适配所有摄像机来调整物体的包括范围 .所有场景里的物体只在数值范围内起作用所有请确定你的所有物体都 处于可视范

21、围 .当你准备好生成 occlusion data, 点击 Bake 按钮 . 记住在 Bake 标 签的 Quality selection box 中事先选择 Preview 和 Production. Preview 可以快速生成数据并可以快速检查结果 . Production 用于产品发布前的生成和检测 .请记住遮挡剔除的数据计算生成速度取决于事先设置的 cell levels (单元级别) , 数据尺寸大小和精度 . Unity 会在窗口底部显示 PVS 运 算状态.运算处理结束后 , 你会在 View Area 看到一些不同颜色的 cube. 颜色相 同的区域共享遮挡剔除数据点击C

22、lear如果你想删除所有遮挡剔除的事先计算好的数据(预计算数 据).Movi ng Objects如果想应用遮挡剔除到一个运动物体你必须创建一个Occlusion Area然后设定其尺寸来适配运动物体的活动空间 (注意:运动物体不能被标 示为 static).创建 Occlusion Area 后,检查 Is Target Volume checkbox来遮挡剔除运动物体.移动物体的 Occlusion Area propertiesSize设定 Occlusion Area 尺寸.Center设定Occlusion Area 的中心.默认0,0,0 并位于box的中心.Is View Vol

23、ume定义摄像机能到哪里.检查这个数值来遮挡剔除Occlusion Area 中的static objects .Is Target Volume遮挡剔除运动物体时必选Target Resoluti on确定区域内的遮挡剔除精度。这将决定Occlusion Area的单元尺寸.注意:只对TargetAreas起作用.Low减少计算时间但同时精度降低Medium计算时间和精度中等,比较平均High计算时间长但精度高.Very High精度很高,计算时间更长.Extremely High最高精度.注意:计算时间令人发指。添加完Occlusion Area后,你需要了解它是如何划分单元中的box.如

24、果想了解occlusionarea如何计算运动物体,你必须在Scene View中点选Target按钮并且关闭View按钮同 时Occlusion Culling检视面板是打开的.SelectingTarget (moving objects) or View (static objects)让你御览 calculated data的运作.Testi ng the gen erated occlusi onocclusion设置完毕后 , 打开 Cull Geometry option (in the Occlusion Culling window)并在场景视窗移动Mai n Camera.

25、OcctuflDn 匚 u III ng ViWw*邱*1UliiII 當色 m專!ryiScene View 中的 Occlusion View mode当你在周围移动 Main Camera (无论是否在Play mode下),你将会看到不同的物体 disable.你在这里需要找出的是occlusion data中的任何错误.当你移动摄像机时你可能会发现会有物体突然出现在视野当中.如果这种情况发生,your options for fixing theerror are either to change the resolution (if you are playing with tar

26、get volumes), or to move objects around to cover up the error. To debug problems with occlusi on, you can move the Main Camera to the problematic positi on for spot-check ing.运算处理结束后,你会在View Area看到一些不同颜色的cube.蓝色cubes表现的是Target Volumes 的单元划分. 白色cubes表现的是 View Volumes 的单元划分.如果参数 设置正确你会看到一些物体不被渲染.这表示要么这些物体不在摄像机视角范围内要么被 其他物体遮挡住了 .如果occlusion完成后,场景内任何物体也没有被遮挡,拆分物体至更小的pieces以便它们能被完整地包含在一个单元中.要提醒朋友们的是, 如果场景复杂,品质设置高的话,烘焙过程将漫长的令人发指。赶紧升级电脑吧! ! 对于没有买专业版并无法使用 umbra 插件的朋友也不必担心, 还有另外一个 Culling 剔除插 件可以选择,是完全免费共享的。具体名字忘记了,不过去 unity 网站的讨论版搜一下 Culling 关键词可以很容易找见。就到这里 . 就到这里,哈哈。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!