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

Blender 3.4运行Python脚本时崩溃问题求助

Blender脚本运行崩溃的解决办法

崩溃的两个核心原因

  1. 绝对不能在Blender文本编辑器里用input():Blender的Python运行环境和普通命令行Python不同,input()会直接卡住UI主线程,导致程序直接崩溃,这是新手最容易踩的坑。
  2. 原代码的坐标解析逻辑容错性极差:依赖固定的"X: ""Y: ""Z: "字符串分割规则,只要输入格式有一点偏差(比如少空格、大小写错误),就会触发索引越界错误,直接引发崩溃。

修复后的可运行代码

import bpy

def create_custom_mesh(vertices):
    # 创建新网格和对象
    mesh = bpy.data.meshes.new(name="CustomVertexMesh")
    obj = bpy.data.objects.new(name="CustomObject", object_data=mesh)
    # 链接到当前场景集合
    bpy.context.collection.objects.link(obj)
    
    # 传入顶点数据,边和面留空
    mesh.from_pydata(vertices, edges=[], faces=[])
    # 更新网格数据
    mesh.update()

# --------------------------
# 直接在这里定义你的顶点数据
# 格式:[(x1,y1,z1), (x2,y2,z2), ...]
custom_vertices = [
    (1.5, 0.0, 0.0),
    (0.0, 2.0, 0.0),
    (-1.0, -1.0, 0.5),
    (0.0, 0.0, 3.0)
]
# --------------------------

# 调用函数创建对象
create_custom_mesh(custom_vertices)

关键修改说明

  • 彻底移除input()调用:直接在代码中定义顶点数据,从根源避免UI阻塞崩溃。如果需要动态调整参数,建议制作Blender自定义面板(基于bpy.types.Panel),比交互式输入更稳定。
  • 简化核心逻辑:直接传入预处理好的顶点坐标元组列表,去掉了容易出错的字符串解析步骤,大幅降低崩溃风险。
  • 保留原功能:完全保留了创建自定义顶点网格对象的核心需求。

额外优化建议(避免潜在崩溃)

添加合法性检查,防止传入空数据或格式错误的坐标:

def create_custom_mesh(vertices):
    # 检查顶点数据合法性
    if not vertices:
        print("错误:顶点数据不能为空")
        return
    for v in vertices:
        if len(v) != 3:
            print(f"错误:顶点{v}格式不正确,需要三个数值")
            return
    # 后续创建逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:40:38