纳金网

标题: Unity 3d Occlusion Culling设置 [打印本页]

作者: graber    时间: 2012-10-19 08:52
标题: Unity 3d Occlusion Culling设置
Occlusion Culling设置
    为了使用遮挡剔除 需要进行相关的手动设置.首先 你关卡中的几何体必须被分割成明显的不同尺寸的块. 这也有助于布置关卡中小块的容易定义的区域 被其他大物体遮挡(例如墙,建筑物) 这意味着每个单独的mesh被确定是否渲染取决于 occlusion 数据. 所以如果你有一个物体包含了房间里的所有家具那么所有的家具要么全渲染,要么全不渲染. 是否渲染是基于组件而不是基于每个单独物体自身的。
    在检视面板(Inspector) 你需要标识(tag) 所有需要应用遮挡剔除的场景物体。最快的方法是是将你需要标示为 Static的物体作为一个 Empty GameObject 的子物体并设置这个Empty GameObject 为Static,当option出现的时候选择affect children. 当子物体被tagged as Static你可以取消子物体和Empty GameObject的父子关系.

检视面板中的 Static checkbox  
    下一步点击Tools->Occlusion Culling. 打开 Occlusion Culling 检视面板,在面板中你会发现几个数值被调整过了。这些数值前面描述过:-
Occlusion Culling - Object

遮挡剔除检视面板的 object标签.
    Object标签可以让你创建 Occlusion Areas GameObjects. 这些区域让你指定什么地方你会使用遮挡剔除.
    注意: 默认情况下如果你不创建任何遮挡剔除区域, 整个场景都会进行遮挡剔除.
Properties

   
        
            
            
            
            
            
            
        
        
            
            Quick Select
            
            
            快速选择和创建一个 Occlusion Area并且快速编辑它.
            
        
        
            
            None
            
            
            这个是默认值.
            
        
        
            
            Create New
            
            
            创建一个新的Occlusion Area GameObject.
            
        
   

当你点击 Create New in the Quick Select drop down, Unity将自动创建一个 Occlusion Area 并且删除默认区域(整个场景). 现在你可以根据需要开始调整Occlusion Area(s).

Occlusion Area 检视面板.
Properties


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



   
        
            
            
            
        
   

如果摄像机处于遮挡区域之外或者任何物体超出区域, 这些物体将不会被遮挡剔除.
Occlusion Culling - Bake


Occlusion culling 检视面板 bake tab.
Properties

   
        
            
            
            
            
            
            
        
        
            
            View Cell Size
            
            
            每个 view area单元的尺寸, 尺寸越小遮挡剔除越精确. 这个数值用来平衡遮挡剔除的精度和存储容量
            
        
        
            
            Near Clip Plane
            
            
            Near clip plane 如果设置最小数值 那么游戏中所有摄像机都可看到.
            
        
        
            
            Far Clip Plane
            
            
            Far Clip Plane 用于选择 objects. 任何物体的距离大于这个设定数值都会被自动遮挡.(Should be set to the largest far clip planed that will be used in the game of all the cameras)
            
        
        
            
            Quality
            
            
            品质级别
            
        
        
            
            Preview
            
            
            开发阶段使用这个 (ie,不是很准确但可以让你御览在游戏中的大致表现)
            
        
        
            
            Production
            
            
            如果开发基本结束准备发布那就该选择这个(会耗费更多的时间但更精确)
            
        
   

当你调整完这些数值后可以点击 Bake按钮开始处理Occlusion Culling 数据. 如果你对结果不太满意,你可以点击Clear 按钮删除以前的计算数据.
Occlusion Culling - Visualization

Occlusion culling 检视面板visualization 可视 标签
Properties

   
        
            
            
            
            
            
            
        
        
            
            Quick Select
            
            
            让你快速选择场景中的任何摄像机来观看遮挡剔除的效果
            
        
   

The near and far planes 定义了一个虚拟摄像机来计算遮挡剔除数据. 如果你有几个摄像机 near 或 far planes不同, 你应该设置near plane 和largest far plane distance适配所有摄像机来调整物体的包括范围.
所有场景里的物体只在数值范围内起作用所有请确定你的所有物体都处于可视范围.
当你准备好生成 occlusion data, 点击 Bake 按钮. 记住在 Bake标签的Quality selection box 中事先选择 Preview 和 Production.  Preview可以快速生成数据并可以快速检查结果. Production 用于产品发布前的生成和检测.
请记住遮挡剔除的数据计算生成速度取决于事先设置的cell levels(单元级别), 数据尺寸大小和精度. Unity会在窗口底部显示 PVS 运算状态.
运算处理结束后, 你会在View Area看到一些不同颜色的cube. 颜色相同的区域共享遮挡剔除数据.
点击Clear 如果你想删除所有遮挡剔除的事先计算好的数据(预计算数据).
Moving Objects
如果想应用遮挡剔除到一个运动物体你必须创建一个Occlusion Area然后设定其尺寸来适配运动物体的活动空间(注意:运动物体不能被标示为static).
创建 Occlusion Area后, 检查Is Target Volume checkbox 来遮挡剔除运动物体.
  
移动物体的Occlusion Area properties

   
        
            
            
            
            
            
            
        
        
            
            Size
            
            
            设定 Occlusion Area 尺寸.
            
        
        
            
            Center
            
            
            设定 Occlusion Area的中心. 默认0,0,0 并位于box的中心.
            
        
        
            
            Is View Volume
            
            
            定义摄像机能到哪里. 检查这个数值来遮挡剔除Occlusion Area中的static objects  .
            
        
        
            
            Is Target Volume
            
            
            遮挡剔除运动物体时必选
            
        
        
            
            Target Resolution
            
            
            确定区域内的遮挡剔除精度。这将决定Occlusion Area的单元尺寸. 注意: 只对 Target Areas起作用.
            
        
        
            
            Low
            
            
            减少计算时间但同时精度降低.
            
        
        
            
            Medium
            
            
            计算时间和精度中等,比较平均.
            
        
        
            
            High
            
            
            计算时间长但精度高.
            
        
        
            
            Very High
            
            
            精度很高,计算时间更长.
            
        
        
            
            Extremely High
            
            
            最高精度.注意: 计算时间令人发指。
            
        
   

添加完Occlusion Area后, 你需要了解它是如何划分单元中的box. 如果想了解occlusion area如何计算运动物体,你必须在Scene View中点选 Target按钮 并且 关闭 View 按钮同时Occlusion Culling 检视面板是打开的.
  
Selecting Target (moving objects) or View (static objects) 让你御览 calculated data 的运作.
Testing the generated occlusion
occlusion 设置完毕后, 打开Cull Geometry option (in the Occlusion Culling window) 并在场景视窗移动 Main Camera.
  
iScene View 中的Occlusion View mode
当你在周围移动Main Camera  (无论是否在 Play mode下), 你将会看到不同的物体disable. 你在这里需要找出的是occlusion data中的任何错误. 当你移动摄像机时你可能会发现会有物体突然出现在视野当中. 如果这种情况发生, your options for fixing the error are either to change the resolution (if you are playing with target volumes), or to move objects around to cover up the error. To debug problems with occlusion, you can move the Main Camera to the problematic position for spot-checking.
运算处理结束后, 你会在View Area看到一些不同颜色的cube. 蓝色 cubes表现的是Target Volumes的单元划分.  白色 cubes表现的是 View Volumes的单元划分.如果参数设置正确你会看到一些物体不被渲染. 这表示要么这些物体不在摄像机视角范围内要么被其他物体遮挡住了.
如果occlusion完成后, 场景内任何物体也没有被遮挡, 拆分物体至更小的pieces 以便它们能被完整地包含在一个单元中.
要提醒朋友们的是,如果场景复杂,品质设置高的话,烘焙过程将漫长的令人发指。赶紧升级电脑吧!!!

对于没有买专业版并无法使用umbra插件的朋友也不必担心,还有另外一个Culling剔除插件可以选择,是完全免费共享的。具体名字忘记了 ,不过去unity网站的讨论版搜一下Culling关键词可以很容易找见。就到这里 .就到这里,哈哈。




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5