OSG点云上色

用osg显示点云,目前显示的所有点都是同一个颜色的,想优化一下视觉效果,由于每一个点都具有一个反射率参数,所以可以用这个参数为点上色。
还尝试过添加光照渲染,参考:https://zhuanlan.zhihu.com/p/38469643。光照渲染适合三维模型,用在点云上好像没什么意义。
点的颜色是通过geometry的setColorArry方法实现的,用四维向量Vec4填充进数组,和点的坐标数组一一对应。

ref_ptr<osg::Vec4Array> color = new Vec4Array();
color->push_back(osg::Vec4(0, 0, 10, 0));
ref_ptr<Geometry> geometry = new Geometry();
geometry->setColorArray(color.get());

osg::Vec4的四个参数分别代表R, G, B, A,A据说是透明度,但是测试了一下,点的透明度改变好像并不会改变显示效果。
目前已有的数据是每个点有一个范围是0-255的反射率参数fref,利用这个参数为点上色,将0-255的一维向量映射为RGB三维向量。

if (fref > 110)
	color->push_back(osg::Vec4(fref - 108, 1, 1, 1));
else if (fref < 55)
	color->push_back(osg::Vec4(1, 1, fref + 2, 1));
else
	color->push_back(osg::Vec4(1,fref-53,1, 1));

和viewer的显示效果差不多。livox采用的上色策略:
https://github.com/Livox-SDK/Livox-SDK/wiki/Livox-Viewer#1-color-coding-strategy

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值