细数OSG中的“神来之剪”

本文详细介绍了OSG中的裁剪技术,包括背面裁剪、视椎体裁剪、细节裁剪、遮挡裁剪和聚集裁剪,以提高三维场景的渲染效率。通过这些技术,可以减少无效绘制,优化性能。
摘要由CSDN通过智能技术生成

“裁剪”就是从大量的事务中进行挑选、删除。

对一个庞大的三维体而言,往往存在着大量无助于最终渲染结果的对象;将它们从场景中剔除后,将剩余的场景对象发送到OpenGL管线中,即可完成一帧的绘制工作。

这类型的裁剪工作通常称为“可见性裁剪”,即只有真正能够被终端用户看到的对象才会被发送到渲染管线中。

常见de裁剪技术

一、背面裁剪

当我们观察一个不透明物体时,通常大约有一半的物体表面是看不到的,因此完全可以省去这一半的绘制工作,场景的多边形复杂度也将降低1/2左右。

osg本身提供了如下图的背面裁剪的实现函数:

osg::ref_ptr<osg::CullFace>cullface=new osg::CullFace(osg::CullFace::Back);
stace->setAttribute(cullface.get());
state->setMode(GL_CULL_FACE,osg::StateAttribute::ON);

二、视椎体裁剪

视椎体裁剪就是将不在视椎体中的物体剔除掉不绘制,而在视椎体内部或与视椎体相交的物体绘制的方法,此举对性能的提升有着巨大的帮助。

通常,物体是不规则的,为了方便,我们用该物体的包围球与当前视锥体进行比较。

如果包围球在视锥体外,那么不需要绘制此包围球所表达的节点及其所有的子节点。如下图所示,红色方块在视锥体外,该方块将被裁剪。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值