0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三维渲染中的裁剪总汇

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-05-11 14:29 次阅读

裁剪是个很大的概念,裁剪包括了视锥体裁剪(应用程序阶段)、视口裁剪(图元装配——几何阶段的最后一步)、背面剔除(光栅化阶段)、遮挡剔除(光栅化阶段)。

1.视锥体裁剪

视锥裁剪算法是在应用程序阶段执行的。虚拟摄像机制定了场景对观察者可见的部分,即我们将依据哪部分3D场景来创建2D图像。

2. 视口裁剪

几何阶段处理结束后,送到光栅化阶段的是一堆三角形面片,所以中几何阶段中需要对顶点进行图元装配。所谓的图元装配,即根据顶点原始的连接关系,还原出模型的网格结构。网格由顶点和索引组成,在之前的流水线中是对顶点的处理,而在这阶段是根据索引将顶点连接中一起,组成线、面单元。然后对超出视口外的三角形进行裁剪(视口裁剪)。

3.背面剔除(光栅化阶段)

渲染的对象都是三角面,有相机,就是有正面和反面。正面可以被看见,反面看不见,就需要渲染,就叫背面剔除。

4.遮挡裁剪

在cry引擎中的遮挡算法,使用的是软件光栅化,大致流程就是,在编辑器中放置一些正交的长方体作为遮挡体,在渲染时,每帧都在CPU上面光栅化这些遮挡体(当然是在分辨率比较小的渲染目标上进行),然后对远处物体进行查询。

现代GPU中运用了Early-Z的技术,在Vertex阶段和Fragment阶段之间(光栅化之后,fragment之前)进行一次深度测试,如果深度测试失败,就不必进行fragment阶段的计算了,因此在性能上会有很大的提升。但是最终的ZTest仍然需要进行,以保证最终的遮挡关系结果正确。

二、遮挡剔除的方法

1. 传统的PVS光线投射子划分

将场景内相交的多边形进行切割,保证场景内的三角形没有相交(如bsp),将屏幕分成8x8的像素网格,做8x8条从视点开始的射线出去即可,这样做能保证比较高效。然后对光线进行碰撞检测看光线落到哪个多边形上。如果相邻射线没有落在同一个三角形上,那么以这两条射线的中点再做出一条新的射线出去,直到相邻射线落在相同的三角形上或者同一个像素上。这样相交多边形中围绕每束光线的多边形基本都能被绘制了。性能很好但存在一定误差,两束光线中间极小的多边形可能被错过。

2. 光栅化线段遮挡法

不同于光栅化z,光栅化z计算量大些,这只是将待渲染多边形光栅化为有左右两个端点的水平扫描线,然后与同一行的扫描线进行比较和切割,只保留最靠近摄像机的线段,如果待绘制线段在该像素行比较下来全部被其它更靠近摄像机的线段覆盖了,则该行不可见,三角形所有行不可见则该包围体不可见。光栅化z适合gpu,这个方法更适合cpu,特别适合分辨率很高而多边形数量不算太高的时候,优化方法是x轴均匀分为8个区间,这样可以迅速的定位。

3. 八叉树简易PVS

说道简易版本的 PVS,其实就是八叉树了,这是很多3D引擎的偷懒版本实现:八叉树组织空间,下面接 BSP, Portal,地形四叉树lod,先判断顶层包围盒在不在视锥,不再就直接退出了,再的话,递归八个子节点的包围盒再不再视锥,不再就直接剔除,再的话再在该节点递归下去

Untiiy5中的遮挡剔除使用的是Umbra的解决方案,Umbra也在虚幻3和虚幻4中作为插件来使用。

三、讨论的两个问答

1.在Unity中遮挡剔除在渲染过程中,处于哪个阶段?

遮挡剔除一般在光栅化阶段进行。

关于遮挡剔除,开始的时候觉得应该在应用阶段进行,只需要一个八叉树的搜素,但是这个需要相机来判断,其实相机作为为虚拟相机,只需要给对象做标记即可。

在官方文档中说,遮挡剔除是需要在场景中建立一个虚拟相机,来判断是否可见。准备好后,unity确保只有可见的对象送去渲染 。

unity中的遮挡裁剪以Cell作为基础单元,每个cell对应一个二叉树。unity中使用了两颗树,一棵对应静态对象,一棵对应动态对象。

需要注意的是,对象若太大,对遮挡剔除来说,意义不大,太小构建时间太长,顶点数也多,造成过多的drawCall,总之,注意平衡!没有放之四海而皆准的方法。

2.裁剪,相机(视锥体)的裁剪和背面剔除,这个是分别在不同阶段。

视锥裁剪一般在应用程序阶段进行, 这个没有问题。而背面裁剪剔除一般在光栅化阶段进行。

背面剔除在光栅化阶段进行,在Vertex Shader 之后,在Fragment Shader片元着色器之前。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 裁剪
    +关注

    关注

    0

    文章

    8

    浏览量

    7072
  • PVS
    PVS
    +关注

    关注

    0

    文章

    4

    浏览量

    18691

原文标题:三维渲染中的裁剪总汇

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于OpenGL 的汽车转向三维模型设计

    基于OpenGL 的汽车转向三维模型设计摘 要: 汽车转向过程轨迹的计算比较复杂,需要使用汽车动力学诸多公式进行复杂的数学建模。汽车3D 虚拟系统实时性要求较高,因此对汽车转向模型进行简化,同时控制
    发表于 05-17 11:53

    三维网图的高级处理

    三维网图的高级处理1. 消隐处理 例.比较网图消隐前后的图形 z=peaks(50); subplot(2,1,1); mesh(z); title('消隐前的网图') hidden off
    发表于 09-22 15:37

    三维移动

    德国pi公司的三维移动平台如何用labview控制呢?
    发表于 03-05 13:00

    如何运用LabVIEW三维散点控件

    如何运用LabVIEW三维散点控件?我想将excel的数据在LabVIEW显示出来,显现出三维定点的效果
    发表于 05-15 16:28

    三维曲线导入到三维图形控件

    三维线条图做了一个同心圆曲线,怎么才能把它导入到三维图形控件呢?如图
    发表于 10-27 13:49

    三维逆向工程的成果及应用案例

    `三维逆向工程的成果及应用案例何为逆向工程?为适应现代先进制造技术的发展,需将实物样件或手工模型转化为Sence数据,以便利用快速成形系统、计算机辅助系统等对其进行处理,并进行修改和优化。逆向工程
    发表于 03-02 15:12

    什么让三维扫描数据栩栩如生

    物体照片图1.扫描仪扫描物体照片第二步:生成网格文件STL图2.扫描物体三维数据第步:通过ZBrush等雕刻软件优化处理数据(可省略)图3、雕刻软件三维数据第四步:
    发表于 08-02 10:18

    三维快速建模技术与三维扫描建模的应用

    、高精度、高分辨率、点云密度高等特点,例如在建筑工程,由于受技术水平的限制,BIM模型通常与现场情况脱离开来,其模型建立往往缺乏适用性与有效性。三维快速建模技术恰好能完美解决上述问题,可用于“原始
    发表于 08-07 11:14

    广西扫描服务三维检测三维扫描仪

    HandyPRO,便携式专业级Academia三维扫描仪。搭载完全集成的三维软件平台VXelements,将所有基本因素和工具都融入到一个简便且流畅的工作环境。并带有扫描至CAD软件模块、尺寸检测软件模块
    发表于 08-29 14:42

    请问在stm32支持三维数组吗?

    请问在stm32支持三维数组吗?如何用查表法取值吗?
    发表于 03-26 03:44

    三维设计应用案例

    机械行业的典型,详细为大家阐述三维辅助软件如何科学应用以及二次开发,完成对柳工机械制造设计过程的升级,解决设计过程的难点。
    发表于 07-03 07:06

    Handyscan三维扫描仪对户外大型灯箱三维扫描解决方案

    `近期我们接到一个与广告行业相关的客户,他们是一家专业设计、改装户外广告灯箱的公司,目前是有一个大型户外广告灯箱,想要通过三维扫描,获取其精准的三维数据,并据此逆向建模设计,最终得出满足自己需求
    发表于 07-15 10:52

    三维立体数字沙盘是是什么?

    `  那什么是三维立体数字沙盘呢?三维立体数字沙盘又叫三维数字沙盘、立体数字沙盘,是利用三维技术、地理遥控技术、虚拟现实技术、触控技术等实现的。在计算机
    发表于 08-28 14:40

    上海黄浦三维媒体动画技术

    上海黄浦三维媒体动画技术三维动画作为多媒体艺术的一个独立分支,是基于在动画传媒艺术和电脑软硬件技术发展基础上而形成的一种相对完善的新型的艺术表现形式。在制作过程,常用到的三维软件是3
    发表于 06-30 09:26

    广州三维动画制作流程(一)

    进行的规划与设计,主要包括:文学剧本创作、分镜头剧本创作、造型设计、场景设计。其次是三维动画片段制作,根据前期设计,在计算机通过相关制作软件制作出动画片段,制作流程为建模、材质、灯光、动画、摄影机控制、渲染等,这是
    发表于 12-30 10:06