osgearth加载3dtiles(亲测可行) 及源码分析

先看效果,如下图:

其实加载 3dtiles模型 很简单,只需在earth文件中添加:

 <ThreeDTiles name="THREED">
		<url>./output_1/tileset.json</url>
</ThreeDTiles>

源码分析:

在earth中添加的layer ,开始处在这里:

有时候想打印信息:

打印信息可以用下面这个

    OE_WARN << "zty_" << std::endl;

    OE_WARN << LC << "zty_" << std::endl;

    OE_WARN << LC << "zty_" << _options->url()->full() <<std::endl;

根json文件,正在被打开

其他子json的加载在下面(用的是子线程调用):

LoadTilesetOperation 的 loadTileSet函数 加载 子json文件 生产出

osg::ref_ptr<ThreeDTilesetContentNode> tilesetNode;

把根json在主线程加载完毕后;下一帧的时候,会调用

ThreeDTileNode::traverse(osg::NodeVisitor& nv)

在该函数内,会遍历它的孩子:

下面是上图的整个调用堆栈,省去了中间调用部分截图:

然后再走下去 ,会进入下面的函数:

异步子线程加载完节点后;在下一次遍历中会判断是否有返回值;有返回就进行addChild;添加加载好的节点;如下图是添加节点处:

ThreeDTilesetNode

并没有一直遍历的接口;它创建的对象,是放在ThreeDTilesLayer;如下图:

通过打印相关节点对象;对比发现 b3dm文件代表一个ThreeDTileNode

ThreeDTilesetContentNode

代表每个文件夹下的主json;

解释:

刚开始会创建一个根ThreeDTileNode(它的_content是空的);然后根据根json 上的children的个数, 再创建 N个 ThreeDTileNode(它的_content挂的是ThreeDTilesetContentNode);这个N个ThreeDTileNode 可以理解为 就是子文件夹的个数;他的_content可以理解为 子文件夹上的主json

那b3dm的解析呢?

还是调用

void ThreeDTileNode::traverse(osg::NodeVisitor& nv)

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在osgEarth中添加3D Tiles数据,您需要使用TileSource插件。TileSource是osgEarth的一种插件类型,它允许您从各种数据源加载数据。 以下是添加3D Tiles数据的步骤: 1. 确保您已安装支持3D TilesTileSource插件。您可以从osgEarth的GitHub存储库中获取该插件。 2. 创建一个新的TileSource配置文件来加载3D Tiles数据。您可以使用以下示例配置文件: ```xml <osgearth> <options> <cache path="/path/to/cache" /> </options> <terrain name="myterrain"> <image driver="gdal"> <url>/path/to/terrain.tif</url> </image> <elevation driver="gdal"> <url>/path/to/terrain.tif</url> </elevation> </terrain> <model name="my3dtiles"> <source type="3dtiles"> <url>/path/to/3dtiles.json</url> </source> </model> </osgearth> ``` 在这个例子中,我们定义了一个名为“my3dtiles”的模型,它使用TileSource插件加载3D Tiles数据。请注意,我们还定义了一个名为“myterrain”的地形,它使用GDAL驱动程序加载地形数据。 3. 将配置文件传递给osgEarth应用程序。您可以使用以下命令启动osgEarth: ```bash osgearth myconfig.earth ``` 这将启动osgEarth应用程序,并加载您的配置文件。 4. 在osgEarth的视图中查看3D Tiles数据。您可以使用osgEarth Viewer应用程序来查看您的数据。启动Viewer应用程序: ```bash osgearth_viewer myconfig.earth ``` 这将启动osgEarth Viewer,并在其中加载您的3D Tiles数据。您可以使用Viewer中的控件来浏览、缩放和旋转数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝太勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值