Blender中GLB坐标转化及导出

📅 发布时间:2026/7/12 2:02:12 👁️ 浏览次数:
Blender中GLB坐标转化及导出
一、操作前准备电脑 F 盘需准备模型文件F:\landbuild.blend脚本会自动创建文件夹无需手动新建二、格式转换与模型修复格式转换B3DM 转GLB坐标精准转 FBX 易出现坐标异常模型显示异常修复导入后看不到全部模型调整视图裁剪参数起始调小结束调大模型修复操作按A全选模型 → 左上角进入编辑模式→ 全选顶点 → 右键 → 合并顶点按距离阈值 1m三、操作步骤步骤 1打开模型启动 Blender顶部菜单 → 文件 → 打开选择F:\landbuild.blend并打开步骤 2进入脚本工作区点击顶部标签栏的脚本步骤 3新建脚本文本在中间面板点新建生成空白文本块步骤 4粘贴并运行脚本复制下方完整代码粘贴到文本框点击面板右上角运行脚本三角形播放按钮步骤 5查看导出文件单个模型顶点坐标F:\blender3\mesh_coordinates\所有模型位置 / 旋转 / 缩放总表F:\blender3\objects_transform.csv四、完整脚本import bpyimport csvimport os# 导出路径output_folder rF:\blender3\mesh_coordinatestransform_file rF:\blender3\objects_transform.csvos.makedirs(output_folder, exist_okTrue)print( 开始导出所有 MESH 对象 )# 统计模型数量mesh_names [obj.name for obj in bpy.data.objects if obj.type MESH]print(f共找到 {len(mesh_names)} 个模型)# 导出每个模型的世界顶点坐标for obj in bpy.data.objects:if obj.type MESH:safe_name .join(c if c.isalnum() or c in _-() else _ for c in obj.name)safe_name safe_name.strip()[:100]csv_path os.path.join(output_folder, f{safe_name}_world_vertices.csv)mat_world obj.matrix_worldwith open(csv_path, w, newline, encodingutf-8-sig) as f:writer csv.writer(f)writer.writerow([物体名称, 顶点索引, 世界坐标_X, 世界坐标_Y, 世界坐标_Z])for i, vert in enumerate(obj.data.vertices):world_coord mat_world vert.cowriter.writerow([obj.name, i, round(world_coord.x, 1), round(world_coord.y, 1), round(world_coord.z, 1)])print(f已导出: {obj.name})# 导出所有模型变换信息with open(transform_file, w, newline, encodingutf-8-sig) as f:writer csv.writer(f)writer.writerow([物体名称, 世界位置_X, 世界位置_Y, 世界位置_Z,旋转_X(度), 旋转_Y(度), 旋转_Z(度),缩放_X, 缩放_Y, 缩放_Z])for obj in bpy.data.objects:if obj.type MESH:loc obj.matrix_world.translationrot obj.rotation_eulersca obj.scalewriter.writerow([obj.name,round(loc.x, 1), round(loc.y, 1), round(loc.z, 1),round(rot.x * 57.3, 1), round(rot.y * 57.3, 1), round(rot.z * 57.3, 1),round(sca.x, 1), round(sca.y, 1), round(sca.z, 1)])print(\n 全部导出完成 )五、导出文件说明mesh_coordinates 文件夹每个建筑模型对应一个 CSV 文件记录模型全部顶点的世界坐标objects_transform.csv总表文件记录所有模型的世界坐标位置、旋转角度度数、缩放比例