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

发布于:2024-05-01 ⋅ 阅读:(38) ⋅ 点赞:(0)

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

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

执行步骤:

  1. 拷贝项目(拷贝最新分支的代码,是我所建议的)
 git clone https://github.com/CesiumGS/3d-tiles-tools

因为之前我拷贝了最新稳定版本v 0.4.1的代码,结果跟项目的文档上有所出入(有些功能使用了会报错),是换成了 upgrade-cmpt 这个看提交记录是最新的分支的代码才没有报错

  1. 切换到对应目录下,或者直接通过编辑器打开项目,下载依赖文件
npm install
  1. 下载完成后,它里面会有一些demo以及文件,可以运行一个命令看看有没有报错,这里官方的示例是gzip压缩一个文件夹:

-i 前面的是调用的方法,-i 后面跟的是输入文件或者文件夹,-o 后面跟着的是输出文件或文件夹

 npx ts-node .\src\cli\main.ts gzip -i ./specs/data/TilesetOfTilesets/ -o ./output/TilesetOfTilesets-gzipped/
  1. 如果示例是成功的,那我们就开始转模型格式吧:
    举个例子,我要调用 glbToB3dm 方法转glb文件夹里面的glb,然后输出到output文件夹里,对应的是转换后的b3dm文件。

比较无语的地方就在这里,这个转换方法是一一对应的,就是一个glb转一个b3dm。所以我才吐槽,不能一个文件夹对应一个文件夹。

 npx ts-node .\src\cli\main.ts glbToB3dm -i ./glb/1.glb -o ./output/1.b3dm
  1. 然后转换成对应瓦片了,可是没有tileset.json,所以需要再创建一个json出来:
    调用 createTilesetJson 方法,去扫描刚刚转换出来的 output 文件夹,让其根据里面的 b3dm 生成一个tileset.json
 npx ts-node .\src\cli\main.ts createTilesetJson -i ./output/ -o ./output/tileset.json
  1. 重点来了,如果有多个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.
  1. 快去运行看看转换出来的3dtiles能否渲染吧!
    还有比较多的插件,例如 objTo3d-tiles,运行方法大差不差的,可以多多尝试。

网站公告

今日签到

点亮在社区的每一天
去签到