3dtiles转三维模型

创建日期:2024-12-05
更新日期:2025-01-01

开源项目:CesiumGS/3d-tiles-tools

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模型。