一,用Liblas读取点云数据,获取点云位置和颜色
二,将点云位置和颜色分别代入geode的位置数组和颜色数组
三,用glsl设置半透明。需要注意的是
1,颜色数组是用attribute,所以要用
geom->setVertexAttribArray(10, colors, osg::Array::BIND_PER_VERTEX);
program->addBindAttribLocation(“colors”, 10);
2,由于颜色数组是绑定到顶点的,所以要在shader中把颜色从顶点着色器传递到片元着色器。
即
“varying vec4 outColors;”
3,alpha值是uniform,所以在stateset中设置
osg::ref_ptrosg::Uniform alphaValue = new osg::Uniform(“alpha”, 0.1f);
stateset->addUniform(alphaValue);
4,开启混合
stateset->setMode(GL_BLEND, osg::StateAttribute::ON);
stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
代码如下:
//通过Liblas读取.las文件,并在osg中显示出来,用shader,先在片元着色器指定使用绿色
#include <liblas/liblas.hpp>
#include
#include
#include <osgDB/ReadFile>
#include <osgUtil/Optimizer>
#include <osg/CoordinateSystemNode>
#include <osg/Switch>
#include <osg/Types>
#include <osgText/Text>
#include

该文章介绍了一个通过Liblas库读取LAS点云数据,然后在OpenGL中进行显示的过程。它涉及到设置顶点和颜色数组,使用GLSL着色器传递颜色信息,并通过设置透明度实现半透明效果。代码示例展示了如何创建Geode,设置顶点颜色,以及在Shader中处理透明度。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



