1、创建文件夹并安装3dtiles-tools工具。
npm init
npm install 3d-tiles-tools
2、创建python脚本,将3dtiles文件夹中的b3dm、i3dm、cmpt都转换为glb模型。
import os
import json
output_dir = f"./output/glb/"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
with open("./model/tileset.json") as f:
data = json.load(f)
children = data["root"]["children"]
for child in children:
uri = child["content"]["uri"]
print(f"开始转换{uri}")
input = f"./model/{uri}"
if uri.endswith("b3dm"):
filename = uri.replace("b3dm", "glb")
output = f"{output_dir}{filename}"
os.system(f"npx 3d-tiles-tools b3dmToGlb -i {input} -o {output}")
elif uri.endswith("i3dm"):
filename = uri.replace("i3dm", "glb")
output = f"{output_dir}{filename}"
os.system(f"npx 3d-tiles-tools i3dmToGlb -i {input} -o {output}")
elif uri.endswith("cmpt"):
filename = uri.replace("cmpt", "glb")
output = f"{output_dir}{filename}"
os.system(f"npx 3d-tiles-tools cmptToGlb -i {input} -o {output}")
print("全部处理完成")
3、打开blender软件,点击脚本菜单,创建脚本。使用脚本将文件夹中的glb模型都导入到场景中。
import bpy
import os
import pathlib
# 设置GLB文件所在的目录路径
glb_root = pathlib.Path("E:\\temp\\3dtiles\\output\\glb")
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete(use_global=False)
# 遍历目录并导入GLB文件
for file_path in glb_root.glob("*.glb"):
bpy.ops.import_scene.gltf(filepath=str(file_path))
print('全部导入完成')
4、通过blender导入obj模型。