当前位置: 首页 > news >正文

Blender中GLB坐标转化及导出

一、操作前准备

电脑 F 盘需准备模型文件:F:\landbuild.blend脚本会自动创建文件夹,无需手动新建

二、格式转换与模型修复

  1. 格式转换B3DM 转GLB(坐标精准);转 FBX 易出现坐标异常
  2. 模型显示异常修复导入后看不到全部模型:调整视图裁剪参数(起始调小,结束调大)
  3. 模型修复操作A全选模型 → 左上角进入编辑模式→ 全选顶点 → 右键 → 合并顶点(按距离,阈值 1m)

三、操作步骤

步骤 1:打开模型

  1. 启动 Blender
  2. 顶部菜单 → 文件 → 打开
  3. 选择F:\landbuild.blend并打开

步骤 2:进入脚本工作区

点击顶部标签栏的脚本

步骤 3:新建脚本文本

在中间面板点新建,生成空白文本块

步骤 4:粘贴并运行脚本

  1. 复制下方完整代码,粘贴到文本框
  2. 点击面板右上角运行脚本(三角形播放按钮)

步骤 5:查看导出文件

  • 单个模型顶点坐标:F:\blender3\mesh_coordinates\
  • 所有模型位置 / 旋转 / 缩放总表:F:\blender3\objects_transform.csv

四、完整脚本

import bpy

import csv

import os

# 导出路径

output_folder = r"F:\blender3\mesh_coordinates"

transform_file = r"F:\blender3\objects_transform.csv"

os.makedirs(output_folder, exist_ok=True)

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_world

with open(csv_path, 'w', newline='', encoding='utf-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.co

writer.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='', encoding='utf-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.translation

rot = obj.rotation_euler

sca = obj.scale

writer.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=== 全部导出完成 ===")

五、导出文件说明

  1. mesh_coordinates 文件夹每个建筑模型对应一个 CSV 文件,记录模型全部顶点的世界坐标
  2. objects_transform.csv总表文件,记录所有模型的:世界坐标位置、旋转角度(度数)、缩放比例
http://www.jsqmd.com/news/568124/

相关文章:

  • 递归现象学方法论:自指悬置与本质直观的递归扩展【世毫九实验室原创理论】
  • 开箱即用!Qwen-Image-2512-SDNQ Web服务快速体验指南
  • 告别ALV展示难题:一个自研ABAP类搞定所有复杂内表(含嵌套表和结构)
  • 5大理由告诉你为什么Argos Translate是离线翻译的最佳Python解决方案 [特殊字符]
  • Godot-MCP:游戏开发智能协作框架的技术实现与架构解析
  • 通义千问3-Reranker-0.6B入门必看:32K长上下文+多语言嵌入重排全解析
  • 如何高效使用draw.io桌面版:完整实用指南
  • Cumulocity Arduino库:嵌入式MQTT轻量接入方案
  • 别再折腾OBS了!用Node.js+FFmpeg+node-media-server,5分钟搞定Windows本地直播推流服务器
  • 新手零压力入门,快马ai带你三步搞定nodejs环境配置
  • 美团LongCat团队:560亿参数AI模型实现高难度数学证明能力突破
  • App 上架流程:App Store 国内各大市场
  • 【OpenClaw】创建一个每日热点新闻 Skill
  • C++ 智能指针的常见误用与性能影响
  • 别再只盯着Attention图了!用LRP+梯度融合,手把手教你给Vision Transformer做更准的“CT扫描”
  • Linux 内核中的虚拟文件系统:从抽象到实现
  • 零门槛本地AI部署:LocalAI无缝集成方案让每个人拥有专属智能助手
  • 告别U盘!用CentOS 7.9 + iPXE + dnsmasq搭建一个能装CentOS 7/AlmaLinux 8/Ubuntu 22.04的万能网络启动盘
  • GLM-4.1V-9B-Base模型微调入门:使用accelerate库进行高效参数优化
  • KIHU快狐|85寸室外广告屏国产飞腾十核IP65防护工厂宣传显示屏
  • 一文看懂推荐系统:双塔模型演进——从DSSM到美团的改进与实战挑战
  • 别再乱用parameterType了!Mybatis参数传递的3个高阶技巧与性能优化
  • Element Plus访问卡顿怎么办?3个实用解决方案让你告别等待焦虑
  • res-downloader智能解析引擎:全平台适配的网络资源获取解决方案
  • 新手福音:告别复杂opencode下载,用快马AI生成带详解的入门项目
  • 嵌入式高速模拟采集:ADC+DMA+定时器协同设计
  • 单细胞测序流程(四)主成分分析——PCA:从数学原理到Seurat实战解析
  • 爱站网 SEO 培训班学习时长是多久_爱站网 SEO 培训费用是多少
  • sklearn交叉验证实战:如何用5行代码避免模型过拟合(附完整示例)
  • 车载LIN总线报文类型全解析:从无条件帧到诊断帧的实战指南