- 博客(60)
- 资源 (10)
- 收藏
- 关注

原创 vulkanscenegraph显示倾斜模型(5.3)-相机
在Vulkan中,相机的概念并非由API直接提供,而是由应用程序实现。相机的核心功能包括视图变换和投影变换:视图变换将世界坐标系中的物体转换到相机坐标系,投影变换则将相机坐标系中的物体转换到投影空间。在VSG(Vulkan Scene Graph)框架中,vsg::Camera类封装了视图矩阵和投影矩阵,并提供了便捷的接口来管理相机。本章将深入探讨Vulkan中的矩阵变换原理,以及VSG对相机功能的封装与实现。目录2 vsg中的视图变换3 vsg中的投影变换。
2025-03-16 15:01:10
1174

原创 CloudCompare学习(1)- CloudCompare 编译及普通插件实现
最近由于工作需求,偏向点云算法库的学习。给定一些无序三维点,可以构建点云的三角网,接着赋纹理,如果算法足够稳健,也是很强大的,毕竟由一些点得到了一个模型。由于刚入门,从开源库和开源软件学起,首先学习软件的动作,接着结合源码进行分析。CloudCompare 是一款非常好的开源点云显示和处理软件,尤其是有比较好的框架,使其有很强的可扩展性,这点也值得学习。其采用GPL授权,使在此框架下开发的应用软件也必须开源,这点对商业公司可能不友好,但对广大码友还是很好的。 下面主要从两个方面...
2020-08-02 13:07:52
2888

原创 Qt5.9.4中利用QOpenGLWidget类进行opengl绘图
首先打开Qt Creator,然后点击菜单 ,文件->新建文件和项目,如图所示:左边选择Application,右边选择Qt Widgets Application,点击Choose...,项目名称为myOpenGLShow,接着下一步,一直默认,到Details,如下:点击取消选中创建界面(G)。然后下一步,知道完成,程序显示的为mainwindow.cpp文件:接着是利用QOpenGLW...
2018-03-31 22:11:20
31045
9
原创 vulkanscenegraph显示倾斜模型(5.7)-vsg::GraphicsPipeline
上一章深入剖析了vsg::RenderGraph对Vulkan渲染流程的封装,重点探讨了vsg::FrameBuffer、vsg::RenderPass和vsg::ImageView三个Vulkan渲染过程中的核心组件。本章将在该基础上,进一步探讨Vulkan渲染过程中的另一核心组件——VkPipeline,以及vsg中针对图形渲染管线的封装GraphicsPipeline。目录1 GraphicsPipeline的创建2 GraphicsPipeline的绑定。
2025-04-06 12:54:51
618
原创 vulkanscenegraph显示倾斜模型(5.6)-vsg::RenderGraph的创建
上一章深入分析了vsg::CommandGraph的创建过程及其通过子场景遍历实现Vulkan命令录制的机制。本章将在该基础上,进一步探讨Vulkan命令录制中的核心封装——vsg::RenderGraph。作为渲染流程的关键组件,RenderGraph封装了vkCmdBeginRenderPass和vkCmdEndRenderPass的核心功能,RecordTraversal会在这两个关键调用之间遍历并处理其子节点。
2025-04-04 21:35:20
1089
原创 vulkanscenegraph显示倾斜模型(5.5)-CommandGraph的创建
CommandGraph是VulkanSceneGraph(VSG)框架中的一个核心类,它封装并管理Vulkan命令缓冲区及其提交到队列的过程。本章将从CommandGraph的继承关系与创建、依赖(与Framebuffer、Window、Device、CommandBuffer、RecordTraversal的强关联设计)两个方面探讨CommandGraph的创建过程。目录1 CommandGraph的继承关系与创建。
2025-03-31 01:17:16
605
原创 vulkanscenegraph显示倾斜模型(5.4)-相机操纵器
在VSG(Vulkan Scene Graph)中,系统支持用户通过鼠标或触摸输入与三维场景进行交互,从而动态控制相机的位置和姿态,实现与三维场景的交互。VSG提供了多种相机操纵器,其中Trackball是一种常见的相机操作器,模拟了一个虚拟的轨迹球,用户可拖动鼠标来旋转、平移和缩放场景。机操纵器的本质是通过用户交互动态修改视图矩阵,从而改变模型在视口中的显示效果。
2025-03-23 22:39:56
1092
原创 osgVerse显示地球
osgVerse实现了一种轻量级的地球可视化方案。该方案通过实现TMS(Tile Map Service)插件,采用动态LOD(Level of Detail)层级构建技术,构建地球瓦片系统。与osgEarth相比,osgVerse实现地球可视化的区别在于:1)完全基于OSG的插件体系构建地球瓦片系统;2)未像osgEarth一样对着色器进行封装而自成一套系统;3)完全采用DatabasePager来实现瓦片的调度。本章将重点解析osgVerse基于OSG插件机制实现地球瓦片系统的动态构建逻辑。
2025-03-16 22:48:55
938
原创 vulkanscenegraph显示倾斜模型(5.2)-交换链
在 VulkanSceneGraph(VSG)中,vsg::Window 类对窗口进行了高层次的封装,为开发者提供了便捷的窗口管理接口。在上一篇文章中,我们探讨了 VkInstance、VkSurfaceKHR、VkPhysicalDevice 和 VkDevice 的创建过程,以及它们在 VSG 中的封装方式及其相互关系。
2025-03-09 23:24:54
739
原创 vulkanscenegraph显示倾斜模型(5.1)-窗口创建
在VulkanSceneGraph(VSG)中,vsg::Window类对窗口进行了高层次的封装,为开发者提供了便捷的窗口管理接口。本章将深入探讨VSG中窗口创建的具体过程,涵盖从底层的Vulkan对象(如VkInstance、VkSurfaceKHR、VkPhysicalDevice和VkDevice)的创建到它们之间的相互关系,以及VSG如何对这些对象进行封装和抽象。目录2 底层的Vulkan对象3 vsg::Window 中的窗口创建。
2025-03-08 17:23:48
48
原创 vulkanscenegraph显示倾斜模型(5)-视景器准备
本文在接着往下讨论视景器准备相关步骤。Vulkan相比opengl更底层,其提供了更底层的硬件控制、更高的性能以及更好的多线程支持,VSG 通过封装 Vulkan 的复杂性,提供了更简单易用的接口,同时保留了 Vulkan 的高性能和灵活性。它简化了 Vulkan 的初始化、渲染管线配置、资源管理和事件处理。
2025-03-02 21:17:51
396
原创 vulkanscenegraph显示倾斜模型(4)-数据读取
本文在上篇文章的基础上,进一步深入探讨数据读取机制的实现细节。回顾 OpenSceneGraph (OSG),其通过 osgDB 库管理场景数据的读取和写入。常用的读取函数包括 osgDB::readNodeFile 和 osgDB::readImageFile,它们能够根据文件扩展名自动选择合适的插件进行加载。插件机制是 OSG 数据读取的核心,主要包括插件的注册、发现以及相关接口的定义(基类 osgDB::ReaderWriter 提供了这些接口的具体定义)。
2025-02-23 10:53:04
42
原创 vulkanscenegraph显示倾斜模型(3)-vsg::Allocator
本文在上篇文章的基础上,进一步深入对vsg::Allocator的理解,以官方的说明()为基础,结合相关代码和个人的理解,对其进行说明。目录1 Allocator概念2 工作原理3 例子。
2025-01-08 20:12:00
1055
原创 vulkanscenegraph显示倾斜模型(2)-参数解析与环境变量
本篇文章在上篇vulkanscenegraph显示倾斜模型-优快云博客的基础上,浅析测试用例中的参数解析与环境变量设置部分(具体涉及代码的第1至第17行)。
2025-01-06 20:38:35
250
原创 vulkanscenegraph显示倾斜模型
本文作为vsg(vulkanscenegraph)显示倾斜模型的开端,从最外层来了解VSG的渲染特点,通过从现象上观察vsg显示倾斜模型的特点,并于osg渲染倾斜模型进行简单对比,方便后续一步步深入探究vsg渲染逻辑。本文参照官方的实现来编写vsg显示倾斜模型的用例,需要依赖除osg外vsg、vsgxchage、osg2vsg三个相关的库。
2025-01-04 10:11:04
1164
原创 osg::HeightField贴纹理
osg中提供了osg::HeightField可绘制四角面片,其基类为osg::Shape, 通过BuildShapeGeometry将osg::HeightField转换为osg::Geometry实现数据的可绘制。变量1:表示列数、行数;变量2:表示左下角点坐标值(最小的X和最小的Y);变量3:x方向间隔;变量4:y方向间隔;本文简单介绍了osg::HeightField,以及其贴纹理的方法。其中蓝色的底板表示纹理覆盖范围。
2024-11-30 17:00:42
103
原创 osgEarth中显示XYZ影像服务
XYZImageLayer继承自ImageLayer,提供接口setProfile()设置影像数据源的坐标系,提供接口setInvertY()设置数据的坐标原点是左上角还是左下角。XYZ瓦片是一种在线地图数据格式,它将地图切割成一系列小块的图片(即瓦片),这些瓦片按照特定的规则(如ZXY规范)进行编号和组织,以便用户能够快速访问和加载所需的地图区域。openstreetmap国内不能访问,可设置代理进行访问,环境变量设置如下,分别对应代理的地址和端口号。接下来着重分析XYZImage图层。
2024-10-27 21:14:33
266
原创 EEditor中的redo/uodo机制
和传统的C++中Command设计模式一致,EcommandManager管理命令,同时提供了命令类ECommand。其中EcommandManager中存在两个列表,一个为可撤销命令列表,另一个为可重做命令列表。而传统方式,提供纯虚类ICommand,通过继承ICommand,从而实现扩展。可重做命令列表:当执行redo命令,将命令pop_back出可重做命令列表,而push_back可撤销命令列表;如下图所示,其中m_stackOldCmd1为命令栈,而m_stackOldCmd2为undo命令栈。
2024-09-28 21:30:16
419
原创 osg中显示3dtiles和cesiumIon
如下图为CesiumTilesetNode数据更新相关代码,将OSG对应的ViewMatrix、ProjectionMatrix和窗口信息传递给tileset->updateView()实现Cesium-native的场景更新。整体结构,其中 CesiumTilesetNode依赖Cesium3DTilesSelection::Tileset,实现数据的更新以及确定需要绘制的节点。1.1 CesiumNative3DTileslayer图层。
2024-09-17 16:06:52
383
原创 2) gaussian-splatting模型查看
本文在上节环境配置好的基础上,下载模型并查看,主要分享SIBR_viewers的编译流程,并简单分析SIBR_gaussianViewer_app的源码结构。在之后的编译过程中boost的依赖会存在问题,提示无法解析的外部符号,因此需做如下调整。cfg_args中的source_path路径设置的为SFM后对应的文件夹,此处识别的为colmap2类型。cfg_args文件,并修改其中的source_path路径为SFM后对应的文件夹。场景的创建,创建BasicIBRSene对象,解析数据,由于。
2024-09-01 17:25:12
992
原创 osg中纹理显示缓存
其中Texture、Texture2D为数据层的类,TextureObejcet管理显存对象,TextureObjectSet将TextureProfile相同的对象统一管理,TextureObjectManager管理TextureObjectSet对象。创建的TextureObject对象由TextureObjectManager统一管理,TextureObject对象由Texture所有,TextureObjectSet中记录TextureObject对象的裸指针。2.2 显存对象申请。
2024-07-21 16:37:12
107
原创 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。问题:自己本地的数据在天空中显示。
2024-07-10 20:16:35
397
原创 osgVerse加载3dtiles
本文利用osgVerse中的osgdb_3dtiles插件,以公开的3dtiles数据为例,展示其加载倾斜模型3dtiles的效果,并对其实现做的分析,分析其按照osg的场景结构显示3dtiles的方法。本文利用osgVerse中的osgdb_3dtiles插件,展示其加载倾斜模型3dtiles的效果,并对其实现做的分析,分析其按照osg的场景结构显示3dtiles的方法。如下图为3dtiles中的json文件结构,主要包含"content"和"children"两个关键字段。
2024-06-22 09:42:08
295
原创 利用PDAL2.7.1 实现点云滤波
如上代码分别创建"readers.las"、"filters.csf"、"writers.las"创建Stage对象,其实质为pdal::LasReader、pdal::CSFilter、pdal::LasWriter对象,然后将三个对象串接(前一个对象设置为后一个对象的Input),最后执行(execute)最后一个对象。本文介绍利用PDAL实现点云滤波方法,包含pipeline命令行运行、C++代码两种方法,C++代码分别介绍对点云文件进行滤波、点云全部在内存中进行滤波的pdal两种调用方法。
2024-05-02 19:01:48
921
12
原创 利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像
本文介绍了利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像,具体为用vrt表达dem、将dem拉伸为0-255 区间的灰度图、灰度着色三个过程,所有中间结果可用vrt格式来表达。借助GDALTranslate函数,设置Options参数将高程值拉伸到0-255区间。借助GDALBuildVRT构建tif的vrt描述文件。
2024-04-30 18:09:05
980
原创 OpenGL着色器实现纹理合并显示
完整的代码如下所示,需依赖glfw实现窗口显示,依赖SOIL实现纹理装载。需将两个纹理路径换为本地路径,给出的示例代码路径为1.jpg和2.jpg。本文介绍了opengl下实现纹理的装载,同时借助顶点着色器和片源着色器实现两个不同外部纹理的合并显示。借助glfw实现窗口的创建,借助SOIL库实现纹理的装载,返回加载后的纹理id。绘制两个三角形,并绑定两个纹理。
2024-04-08 20:47:06
873
1
原创 三维场景动态生成正射纹理-框选区域拍照出图
在上期的RegionSelect中,将SlaveCamera初始化并添加到视图(viewer)中,在交互动作的最后,根据绘制的多边形调整SalveCamera的姿态,最后添加相机回调用于保存拍照后的纹理。
2023-07-16 15:44:56
429
原创 2 OsgEarth中实现PBR材质流程总结
本文是系列文章的首篇,即总结部分。本文将总结OsgEarth中实现PBR材质流程,讲解OsgEarth中如何实现shader的注册管理(osgEarth::VirtialProgram)、shader的分包导入(osgEarth::ShaderPackage)、osgEarth中的光照系统(osgEarth::SkyNode、osgEarth::Extension)、然后详细讲解经典的冯氏光照的原理及代码实现(包含shader部分)、最后尝试理解PBR光照模型的实现思路与细节。本文首先尝试理解前两部分,后三
2022-10-23 13:21:49
1269
5
原创 MVS-Texturing 相关背景知识与论文总结
本文总结MVS-Texturing相关背景知识与论文。MVS-Texturing是三维重建的开源代码库,主要用于模型贴纹理。其github地址为:https://github.com/nmoehrle/mvs-texturing。
2022-10-16 20:18:41
1842
原创 1.2 三维场景动态生成正射纹理-人机交互实现区域框选
本文展示如何通过辅助相机,将一定范围三维场景正视图动态渲染到纹理。首先将倾斜模型添加到三维场景中显示;接着以人机交互的方式绘制一个多边形区域;然后以多边形区域作为约束区域,架设辅助相机,设置相机渲染绑定的纹理;最后将辅助相机添加到主场景,实现渲染。
2022-09-12 20:23:09
582
原创 1.1 三维场景RTTCamera 动态生成纹理
本文展示如何通过辅助相机,将一定范围三维场景正视图动态渲染到纹理。首先将倾斜模型添加到三维场景中显示;接着以人机交互的方式绘制一个多边形区域;然后以多边形区域作为约束区域,架设辅助相机,设置相机渲染绑定的纹理;最后将辅助相机添加到主场景,实现渲染。...
2022-08-13 11:43:34
891
2
原创 TaskPool-ConcurrentWriter并行框架
TaskPool-ConcurrentWriter并行框架 本文根据github上的点云转3dtiles的代码整理(GitHub - potree/PotreeConverter: Create multi res point cloud to use with potree)。其采用 Producer-Consumer 模式实现点云的分块、构建金字塔等处理。本文主要介绍其并行的结构,即TaskPool-ConcurrentWriter并行框架目录1 Producer-Consumer 模式..
2022-05-15 19:43:00
267
原创 3dtiles数据发布服务及展示
3dtiles数据发布服务及展示 本文展示如何实现本地3dtiles数据发布服务,以及在本地利用Cesium的API实现了3dtiles数据在web端渲染。即3dtiles服务发布平台和3dtiles服务展示平台。目录1 nginx服务发布系统 3 Cesium web端API调用 2 3dtiles本地发布服务与3dtiles web端展示内容1 nginx服务发布系统 下载地址如下: 下载地址如下:http://nginx.org/en/downl...
2022-03-20 17:52:28
7251
1
原创 Cesium for unreal快速入门-简单场景配置
Cesium for unreal快速入门-简单场景配置 本文展示了在unreal环境下基于Cesium for unreal配置简单场景的过程。包含添加CesiumSunSky、地形影像、本地3dtiles数据等actor(unreal中的名词),同时可参照Cesium for Unreal Quickstart – Cesium。目录1 工程创建 2 角色添加 3 运行内容1 工程创建 启动Unreal Engine 4.27.1(本地版本),打开虚幻项目浏览...
2022-02-13 17:44:21
2522
原创 osgAnimation库解析
osgAnimation库解析 osgAnimation库为osg中的核心库,本文为一片总结性文章,并在此记录,主要参考网上Frank专栏的三篇关于动画的文章。本文将解释关键帧、插值器、采样器、频道、动画的概念,同时解析动画的驱动类,osgAnimation::AnimationUpdate,在总结动画的基本逻辑的基础上回答如下基本问题:1)Target对象 如何实现的插值计算2)Target对象 如何在动画驱动类 和 动画 之间实现值的传递目录1 osg动画的基本原理介...
2021-12-07 21:22:32
495
原创 potree23dtiles python版封装为exe流程
potree23dtiles为开源的python版点云转3dtiles工具,本文介绍了将其封装为可执行程序的流程,在此流程中遇到一些问题,在此记录。准备下载potree23dtileshttps://www.github.com/yeyan00/potree23dtiles 下载地址为https://www.github.com/yeyan00/potree23dtiles安装anoconda、visualcode 安装anoconda以及...
2021-10-11 01:05:09
576
VS2015+openCV3.3 实现color transfer
2017-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人