发现了一个新插件,3D Tiles Tools,CesiumGS 出品,新鲜热乎(当前写这篇文章的时候,版本是v 0.4.1),所以,有些功能还不够使用。这里是我当前版本发现的问题,例如:不可以从一个文件夹中读取glb,然后转到另一个输出文件夹中。
希望之后的版本,可以有更多的优化。
执行步骤:
- 拷贝项目(拷贝最新分支的代码,是我所建议的)
git clone https://github.com/CesiumGS/3d-tiles-tools
因为之前我拷贝了最新稳定版本v 0.4.1的代码,结果跟项目的文档上有所出入(有些功能使用了会报错),是换成了 upgrade-cmpt 这个看提交记录是最新的分支的代码才没有报错
- 切换到对应目录下,或者直接通过编辑器打开项目,下载依赖文件
npm install
- 下载完成后,它里面会有一些demo以及文件,可以运行一个命令看看有没有报错,这里官方的示例是gzip压缩一个文件夹:
-i 前面的是调用的方法,-i 后面跟的是输入文件或者文件夹,-o 后面跟着的是输出文件或文件夹
npx ts-node .\src\cli\main.ts gzip -i ./specs/data/TilesetOfTilesets/-o ./output/TilesetOfTilesets-gzipped/
- 如果示例是成功的,那我们就开始转模型格式吧: 举个例子,我要调用 glbToB3dm 方法转glb文件夹里面的glb,然后输出到output文件夹里,对应的是转换后的b3dm文件。
比较无语的地方就在这里,这个转换方法是一一对应的,就是一个glb转一个b3dm。所以我才吐槽,不能一个文件夹对应一个文件夹。
npx ts-node .\src\cli\main.ts glbToB3dm -i ./glb/1.glb -o ./output/1.b3dm
- 然后转换成对应瓦片了,可是没有tileset.json,所以需要再创建一个json出来: 调用 createTilesetJson 方法,去扫描刚刚转换出来的 output 文件夹,让其根据里面的 b3dm 生成一个tileset.json
npx ts-node .\src\cli\main.ts createTilesetJson -i ./output/-o ./output/tileset.json
- 重点来了,如果有多个glb,怎么转成 b3dm? 答案是:写一个批处理文件出来,把下面的代码复制粘贴到记事本中,保存后更改其后缀名为.bat,双击执行就行了。
代码的内容可以视情况而变,例如文件夹地址名称不对,那就改;例如,可以在循环代码后,再接一个生成tileset.json的命令。等等。
@echo off
for%%f in(./glb/*.glb) do (
npx ts-node .\src\cli\main.ts glbToB3dm -i "%%f" -o "./output/%%~nf.b3dm"
)
echo All files have been processed.
- 快去运行看看转换出来的3dtiles能否渲染吧! 还有比较多的插件,例如 objTo3d-tiles,运行方法大差不差的,可以多多尝试。
版权归原作者 小楼窗外的细雨 所有, 如有侵权,请联系我们删除。