基于OSG的巨量点云渲染

 

2018-08-12

  点云渲染是非常简单的事情。因为我们只需要处理顶点,光照都不需要考虑。但是,当点云的数量很大,达到千万、亿级别时,事情就变得困难了。FPS低于10,就根本没有办法做什么交互了,甚至显存根本装不下需要渲染的对象,或者顶点数量超过了显卡的能力上限。所以,我们需要优化这个过程。点云显示最大的性能瓶颈就是光栅化,顶点的数量是最大的问题所在。针对此问题,我们一般由两种优化措施来解决问题:LOD,延迟渲染。
  LOD能够直接减少顶点,我们可以提前制作一份化简的模型(点云),即使顶点数量下降一个甚至两个数量级,对于我们观察它的外形来讲,都不会造成太大的失真,我们可以接受。这直接让”不能渲染“变成了”可能渲染“,这一步尤其重要。我们也可以通过代码随时化简原始稠密点云。OSG直接支持LOD,有一个LOD类,它是一个特殊的Group节点,对于一个对象,假设我们要使用4级LOD,那么就给它添加四个子节点,分别设置生效的距离。
 

osg::ref_ptr<osg::Node> lod1 = loadOBJ("bunny.ply");
osg::ref_ptr<osg::Node> lod2 = loadOBJ("bunny2.ply");
osg::ref_ptr<osg::Node> lod3 = loadOBJ("bunny3.ply");
osg::ref_ptr<osg::Node> lod4 = loadOBJ("bunny4.ply");
osg::ref_ptr<osg::LOD> lod = new osg::LOD();
lod->ad
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值