当前位置: 首页 > news >正文

vsgCs显示谷歌全球倾斜模型-数据转换

   前言

       本章将在上章基础上,接着深入vsgCs中CesiumNative数据到vsg::Node的转换过程。


目录

  • 1 CesiumNative多线程数据读取
  • 2 CesiumNative数据转vsg::Node

1 CesiumNative多线程数据读取

       上章深入讲解CesiumNative中类的关系如上图所示。

    上图为多线程相关的类,核心为Cesium::AsyncSystem,其依赖与CesiumAsync::IAssetAccessor与CesiumAsync::ItaskProcessor分别用于数据的请求和任务的处理。

2 CesiumNative数据转vsg::Node

        多线程读取数据后,Cesium3DTilesSelection::IPrepareRendererResources提供了8个纯虚接口将CesiumNative数据转换为vsg::Node,如下所示为8个纯虚接口。

        CesiumAsync::Future<Cesium3DTilesSelection::TileLoadResultAndRenderResources>prepareInLoadThread(const CesiumAsync::AsyncSystem& asyncSystem,Cesium3DTilesSelection::TileLoadResult&& tileLoadResult,const glm::dmat4& transform,const std::any& rendererOptions) override;void* prepareInMainThread(Cesium3DTilesSelection::Tile& tile, void* pLoadThreadResult) override;void free(Cesium3DTilesSelection::Tile& tile,void* pLoadThreadResult,void* pMainThreadResult) noexcept override;void* prepareRasterInLoadThread(CesiumGltf::ImageAsset& image,const std::any& rendererOptions) override;void* prepareRasterInMainThread(CesiumRasterOverlays::RasterOverlayTile& rasterTile,void* rawLoadResult) override;void freeRaster(const CesiumRasterOverlays::RasterOverlayTile& rasterTile,void* pLoadThreadResult,void* pMainThreadResult) noexcept override;void attachRasterInMainThread(const Cesium3DTilesSelection::Tile& tile,int32_t overlayTextureCoordinateID,const CesiumRasterOverlays::RasterOverlayTile& rasterTile,void* pMainThreadRendererResources,const glm::dvec2& translation,const glm::dvec2& scale) override;void detachRasterInMainThread(const Cesium3DTilesSelection::Tile& tile,int32_t overlayTextureCoordinateID,const CesiumRasterOverlays::RasterOverlayTile& rasterTile,void* pMainThreadRendererResources) noexcept override;

   函数的调用顺序如下:1)prepareInLoadThread (加载瓦片);2) prepareRasterInLoadThread (加载栅格数据,如果瓦片包含栅格数);3) prepareInMainThread (主线程处理瓦片);4) prepareRasterInMainThread (主线程处理栅格数据,如果栅格数据存在);5) attachRasterInMainThread (绑定栅格到瓦片);6)detachRasterInMainThread(如果栅格数据被移除);7) freeRaster(释放栅格);8) free (释放瓦片资源) 。

      以谷歌全球倾斜模型为例,其瓦片无栅格数据,在多线程读取数据后,在线程中调用prepareInLoadThread函数中处理加载好的瓦片数据,接着在主线程中调用prepareInMainThread中处理瓦片数据,当数据过期后,在主线程中调用free函数,释放瓦片数据。

文末:本章介绍了CesiumNative中的瓦片数据到vsg::Node转换过程,包括CesiumNative多线程读取数据,以及通过重写Cesium3DTilesSelection::IPrepareRendererResources的虚接口,将加载好的瓦片数据在合适的函数中转换为vsg::Node的过程。vsgCs显示谷歌全球倾斜模型系列介绍到此,下一章将介绍如何在osg中实现对谷歌全球倾斜模型的显示,模仿vsgCs实现osgCs,并开源。

http://www.xdnf.cn/news/1411021.html

相关文章:

  • 打工人日报#20250831
  • pyinstaller打包后失败问题记录
  • 贝叶斯分类(Bayes Classify)
  • Java面试-微服务(spring cloud篇)
  • 网络:相比于HTTP,HTTPS协议到底安全在哪?
  • 【HarmonyOS】天气预报 UI 的基本实现
  • 基于Echarts+HTML5可视化数据大屏展示-惠民服务平台
  • 一文理清TCP协议的通讯流程
  • 【车载开发系列】CAN与CANFD下篇
  • Linux-驱动积累
  • docker安装tomcat
  • 1.2 操作系统发展历程
  • dify docker compose操作命令指南
  • 【不懂就问】-手机相关学习
  • 内核等待队列以及用户态的类似机制
  • 基于Spring Cloud Sleuth与Zipkin的分布式链路追踪实战指南
  • 机器学习基础-day01-机器学习介绍
  • syn与quote的简单使用——实现debug
  • 萌宝喂养日志-我用AI做喂养记录小程序1-原型设计
  • 中科大少年班记
  • 编程与数学 03-004 数据库系统概论 10_数据库的实施
  • 【GaussDB】排查应用高可用切换出现数据库整体卡顿及报错自治事务无法创建的问题
  • 基于JavaScript的智能合约平台(Agoric)
  • join怎么用
  • Spring Boot单体项目整合Nacos
  • STAR法则
  • C/C++ 高阶数据结构 —— 二叉搜索树(二叉排序树)
  • 【Linux】系统部分——ELF文件格式与动态库加载
  • 【系统分析师】高分论文:论大数据架构的应用
  • Linux系统比较两个​​已排序文件​​的实用工具之comm