You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Blender导出带顶点坐标的面列表并生成JSON脚本?

解决方案:Blender模型面顶点坐标提取与JSON导出

内置终端 vs 独立脚本

  • 内置Python终端:适合单次操作、快速调试。直接在Blender「脚本」工作区打开终端,粘贴代码片段就能实时执行,方便验证效果。
  • 独立脚本:适合批量处理多模型、自动化工作流。无需打开Blender界面,通过命令行调用脚本执行,效率更高。

核心实现代码

以下脚本可以提取模型每个面的顶点坐标,并导出为符合需求的JSON文件,支持局部坐标和世界坐标两种模式:

1. 提取局部坐标(物体自身坐标系)

import bpy
import json

# 目标:处理当前选中的网格物体
target_obj = bpy.context.active_object

if target_obj and target_obj.type == 'MESH':
    mesh_data = target_obj.data
    face_vertex_list = []
    
    # 遍历每个面,提取顶点坐标
    for face in mesh_data.polygons:
        # 把每个顶点的局部坐标转换成元组,存入列表
        face_vertices = [tuple(mesh_data.vertices[vert_idx].co) for vert_idx in face.vertices]
        face_vertex_list.append(face_vertices)
    
    # 打印格式示例
    print(json.dumps(face_vertex_list, indent=2))
    
    # 导出到JSON文件
    output_path = bpy.path.abspath("//model_faces_local.json")
    with open(output_path, 'w', encoding='utf-8') as f:
        json.dump(face_vertex_list, f, indent=2)
    print(f"文件已导出至:{output_path}")
else:
    print("请选中一个有效的网格物体")

2. 提取世界坐标(全局坐标系)

如果需要全局空间下的顶点坐标,只需修改顶点坐标的计算逻辑,通过物体的世界矩阵转换:

# 替换上述代码中face_vertices的生成行
face_vertices = [tuple(target_obj.matrix_world @ mesh_data.vertices[vert_idx].co) for vert_idx in face.vertices]

导出文件可改名为model_faces_world.json,方便区分。

运行方式

内置环境运行

  1. 打开Blender,选中要处理的模型
  2. 切换到「脚本」工作区,新建文本文件,粘贴代码
  3. 点击顶部的「运行脚本」按钮,结果会打印在控制台,JSON文件导出到Blender当前工程目录(可通过bpy.path.abspath("//")查看路径)

独立脚本批量处理

  1. 把代码保存为export_face_vertices.py
  2. 在命令行执行(需确保Blender已加入系统环境变量):
# 后台打开指定Blender文件并执行脚本
blender --background your_model_file.blend --python export_face_vertices.py

注意事项

  • 若模型有未应用的变换(位置、旋转、缩放),建议先在Blender中执行「物体 > 应用 > 全部变换」,避免坐标偏差;或者使用世界矩阵转换的方式自动修正。
  • 若需处理多个网格物体,可将代码修改为遍历bpy.context.selected_objects,并为每个物体单独存储面数据。
  • JSON格式不支持元组,导出后顶点数据会以列表形式存储,自定义渲染器读取时可直接转换为元组使用。

内容的提问来源于stack exchange,提问作者Kraken_Games

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 11:02:55