osg::HeightField贴纹理 osg中提供了osg::HeightField可绘制四角面片,其基类为osg::Shape, 通过BuildShapeGeometry将osg::HeightField转换为osg::Geometry实现数据的可绘制。变量1:表示列数、行数;变量2:表示左下角点坐标值(最小的X和最小的Y);变量3:x方向间隔;变量4:y方向间隔;本文简单介绍了osg::HeightField,以及其贴纹理的方法。其中蓝色的底板表示纹理覆盖范围。
osgEarth中显示XYZ影像服务 XYZImageLayer继承自ImageLayer,提供接口setProfile()设置影像数据源的坐标系,提供接口setInvertY()设置数据的坐标原点是左上角还是左下角。XYZ瓦片是一种在线地图数据格式,它将地图切割成一系列小块的图片(即瓦片),这些瓦片按照特定的规则(如ZXY规范)进行编号和组织,以便用户能够快速访问和加载所需的地图区域。openstreetmap国内不能访问,可设置代理进行访问,环境变量设置如下,分别对应代理的地址和端口号。接下来着重分析XYZImage图层。
EEditor中的redo/uodo机制 和传统的C++中Command设计模式一致,EcommandManager管理命令,同时提供了命令类ECommand。其中EcommandManager中存在两个列表,一个为可撤销命令列表,另一个为可重做命令列表。而传统方式,提供纯虚类ICommand,通过继承ICommand,从而实现扩展。可重做命令列表:当执行redo命令,将命令pop_back出可重做命令列表,而push_back可撤销命令列表;如下图所示,其中m_stackOldCmd1为命令栈,而m_stackOldCmd2为undo命令栈。
osg中显示3dtiles和cesiumIon 如下图为CesiumTilesetNode数据更新相关代码,将OSG对应的ViewMatrix、ProjectionMatrix和窗口信息传递给tileset->updateView()实现Cesium-native的场景更新。整体结构,其中 CesiumTilesetNode依赖Cesium3DTilesSelection::Tileset,实现数据的更新以及确定需要绘制的节点。1.1 CesiumNative3DTileslayer图层。
2) gaussian-splatting模型查看 本文在上节环境配置好的基础上,下载模型并查看,主要分享SIBR_viewers的编译流程,并简单分析SIBR_gaussianViewer_app的源码结构。在之后的编译过程中boost的依赖会存在问题,提示无法解析的外部符号,因此需做如下调整。cfg_args中的source_path路径设置的为SFM后对应的文件夹,此处识别的为colmap2类型。cfg_args文件,并修改其中的source_path路径为SFM后对应的文件夹。场景的创建,创建BasicIBRSene对象,解析数据,由于。
osg中纹理显示缓存 其中Texture、Texture2D为数据层的类,TextureObejcet管理显存对象,TextureObjectSet将TextureProfile相同的对象统一管理,TextureObjectManager管理TextureObjectSet对象。创建的TextureObject对象由TextureObjectManager统一管理,TextureObject对象由Texture所有,TextureObjectSet中记录TextureObject对象的裸指针。2.2 显存对象申请。
osgverse浏览器端编译 在osgverse源码目录下,执行Setup.sh:./Setup.sh /mnt/c/users/CaiPing/Desktop/wasm/source/emsdk-3.1.62。将版本设置为wsl1(因为版本2比版本1慢很多):wsl --set-version ubuntu 1。安装:在WSL下,进入解压文件夹,并执行:./emsdk install latest。查看wsl版本:wsl --version;配置环境:source ./emsdk_env.sh。问题:自己本地的数据在天空中显示。
osgVerse加载3dtiles 本文利用osgVerse中的osgdb_3dtiles插件,以公开的3dtiles数据为例,展示其加载倾斜模型3dtiles的效果,并对其实现做的分析,分析其按照osg的场景结构显示3dtiles的方法。本文利用osgVerse中的osgdb_3dtiles插件,展示其加载倾斜模型3dtiles的效果,并对其实现做的分析,分析其按照osg的场景结构显示3dtiles的方法。如下图为3dtiles中的json文件结构,主要包含"content"和"children"两个关键字段。
利用PDAL2.7.1 实现点云滤波 如上代码分别创建"readers.las"、"filters.csf"、"writers.las"创建Stage对象,其实质为pdal::LasReader、pdal::CSFilter、pdal::LasWriter对象,然后将三个对象串接(前一个对象设置为后一个对象的Input),最后执行(execute)最后一个对象。本文介绍利用PDAL实现点云滤波方法,包含pipeline命令行运行、C++代码两种方法,C++代码分别介绍对点云文件进行滤波、点云全部在内存中进行滤波的pdal两种调用方法。
利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像 本文介绍了利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像,具体为用vrt表达dem、将dem拉伸为0-255 区间的灰度图、灰度着色三个过程,所有中间结果可用vrt格式来表达。借助GDALTranslate函数,设置Options参数将高程值拉伸到0-255区间。借助GDALBuildVRT构建tif的vrt描述文件。
OpenGL着色器实现纹理合并显示 完整的代码如下所示,需依赖glfw实现窗口显示,依赖SOIL实现纹理装载。需将两个纹理路径换为本地路径,给出的示例代码路径为1.jpg和2.jpg。本文介绍了opengl下实现纹理的装载,同时借助顶点着色器和片源着色器实现两个不同外部纹理的合并显示。借助glfw实现窗口的创建,借助SOIL库实现纹理的装载,返回加载后的纹理id。绘制两个三角形,并绑定两个纹理。
三维场景动态生成正射纹理-框选区域拍照出图 在上期的RegionSelect中,将SlaveCamera初始化并添加到视图(viewer)中,在交互动作的最后,根据绘制的多边形调整SalveCamera的姿态,最后添加相机回调用于保存拍照后的纹理。
2 OsgEarth中实现PBR材质流程总结 本文是系列文章的首篇,即总结部分。本文将总结OsgEarth中实现PBR材质流程,讲解OsgEarth中如何实现shader的注册管理(osgEarth::VirtialProgram)、shader的分包导入(osgEarth::ShaderPackage)、osgEarth中的光照系统(osgEarth::SkyNode、osgEarth::Extension)、然后详细讲解经典的冯氏光照的原理及代码实现(包含shader部分)、最后尝试理解PBR光照模型的实现思路与细节。本文首先尝试理解前两部分,后三
MVS-Texturing 相关背景知识与论文总结 本文总结MVS-Texturing相关背景知识与论文。MVS-Texturing是三维重建的开源代码库,主要用于模型贴纹理。其github地址为:https://github.com/nmoehrle/mvs-texturing。
1.2 三维场景动态生成正射纹理-人机交互实现区域框选 本文展示如何通过辅助相机,将一定范围三维场景正视图动态渲染到纹理。首先将倾斜模型添加到三维场景中显示;接着以人机交互的方式绘制一个多边形区域;然后以多边形区域作为约束区域,架设辅助相机,设置相机渲染绑定的纹理;最后将辅助相机添加到主场景,实现渲染。
1.1 三维场景RTTCamera 动态生成纹理 本文展示如何通过辅助相机,将一定范围三维场景正视图动态渲染到纹理。首先将倾斜模型添加到三维场景中显示;接着以人机交互的方式绘制一个多边形区域;然后以多边形区域作为约束区域,架设辅助相机,设置相机渲染绑定的纹理;最后将辅助相机添加到主场景,实现渲染。...