在OSG中通过draw instance渲染海量点云数据所出现的问题

本文介绍了在使用OpenSceneGraph的draw instance技术渲染海量点云数据时遇到的问题,包括点间距离错误和点云模糊。通过分析源代码,找到问题根源在于定点着色器中的坐标放大系数设置和纹理滤波参数。解决方案是调整定点着色器的代码,将放大系数从1改为0,并修改纹理滤波设置,从而实现点云的正确显示。
摘要由CSDN通过智能技术生成
  1. draw instance的大致原理
    通过阅读OpenSceneGraph.3.Cookbook中的Rendering point cloud data with draw instancing章节,个人觉得draw instance渲染海量点云就是通过纹理映射的途径去完成的。
    先来简单说说我所理解的纹理映射,所谓纹理映射就是在一个实体或者自定义实体上贴上一张图,再说细一点就是实体的颜色是由图片上与其对应的像素的颜色所确定的,与其对应像素的颜色是多少,就将此实体的对应位置的颜色设为多少,这样,就可以使得可以呈现出实体上被贴上图片的效果。大致流程是(以一个由很多个正方形所组成的一个平面实体为例):a.创建一个正方形几何体;b.根据自己要创建的实体和图片的关系确定每一个正方形与图片中像素的对应关系;c.根据对应关系去图片中提取像素的rgba信息,并赋值给着色器的gl_FrontColor变量,并根据每一个正方形的位置将位置坐标赋值给着色器的gl_Position变量。
    而draw instance绘制海量点云则不再是去读取一张图片,而是自己创建一张图片,同时在图片的像素的RGBA信息中存储的也不再是RGBA信息,而是XYZ和brightness信息,然后再利用这张图片按照纹理映射的途径去完成在着色器中提取图片中的XYZ信息,并将此信息赋值给着色器的gl_Position变量即可。
  2. 代码
    说明,此代码是直接照抄的OpenSceneGraph.3.Cookbook中的代码,使用此代码后会发现结果并不理想
#include <osg/Point>
#include <osg/Group>
#include <osgDB/ReadFil
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值