Blender 3.4运行Python脚本时崩溃问题求助
Blender脚本运行崩溃的解决办法
崩溃的两个核心原因
- 绝对不能在Blender文本编辑器里用
input():Blender的Python运行环境和普通命令行Python不同,input()会直接卡住UI主线程,导致程序直接崩溃,这是新手最容易踩的坑。 - 原代码的坐标解析逻辑容错性极差:依赖固定的
"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
相关产品推荐
相关产品推荐

