【模型渲染】前端如何让glb模型转3dtiles

小楼窗外的细雨 2024-07-07 11:03:02 阅读 76

发现了一个新插件,3D Tiles Tools,CesiumGS 出品,新鲜热乎(当前写这篇文章的时候,版本是v 0.4.1),所以,有些功能还不够使用。这里是我当前版本发现的问题,例如:不可以从一个文件夹中读取glb,然后转到另一个输出文件夹中

希望之后的版本,可以有更多的优化。

执行步骤:

拷贝项目(拷贝最新分支的代码,是我所建议的)

<code> 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,运行方法大差不差的,可以多多尝试。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。