开源objTo3d-tiles的简单分析

之前大概看了一下工具的内容,后边看了一下源代码,根据其中的样例数据,进行了测试,并将数据加载到cesium中进行了观看。
开源地址:
https://github.com/PrincessGod/objTo3d-tiles
目前这个源码不再维护了,简单的对其中代码和功能进行一些分析。
想了解3dtiles的结构,可以参见以下两个网址:
https://github.com/CesiumGS/3d-tiles/tree/master/specification
https://github.com/CesiumGS/3d-tiles/tree/master/specification/TileFormats/Batched3DModel
3dtiles中的模型格式是b3dm/i3dm等,代码中是需要先把obj格式的模型转换成以上格式,gltf又是b3dm/i3dm的重要组成部分,所以,工具是先将obj转换成gltf/glb,根据Batched3DModel的说明,将gltf/glb上添加相应的BatchTable和FeatureTable信息,组合成b3dm/i3dm文件。
有了b3dm/i3dm的文件,还需要在tileset.json中添加模型的文件坐标信息和转换信息,其中,模型的boundingVolume分成三种形式:region、box和sphere,这个需要根据模型的实际尺寸,在Cesium中进行计算。
关键的实现代码:
createGltf.js、createB3dm.js、createSingleTileset.js、getBufferPadded8Byte.js、getJsonBufferPadded8Byte.js
tileset.json中设置了transform的转换信息,因为模型的自身坐标系一般是YUP,所以,到三维场景中,需要一个坐标的转换,在有些3dtiles生成的工具,通常把这个转换集成到b3dm/i3dm文件中。
多个模型文件需要把tileset.json进行合并,combineTileset.js中实现了此功能。
obj转换成gltf/glb,有时会存在转换问题,可以使用其他工具,提前转换成gltf/glb,再修改代码,进行集成生成。
这样制作的3dtiles合并了多个三维模型,数量多了,在性能上还是会存在一些问题,优化性能还需要从模型的lod和数据索引方面进行修整。

更多文章请关注公众号查看!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值