【问题标题】:Selected vertex did not highlight in Blender 3D选定的顶点在 Blender 3D 中未突出显示
【发布时间】:2013-12-19 09:42:29
【问题描述】:

我在 Blender 中制作了一个立方体。 使用 Python 我确实进入了 EDIT 模式并选择了一个顶点:

import bpy

bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
bpy.context.object.data.vertices[0].select = True

bpy.context.object.data.vertices[0].co = (-3,-2,-3)

但是,顶点没有以橙色突出显示, 虽然我告诉顶点去 -3,-2-,-3 它的位置没有更新。

为什么不高亮也不移动?

【问题讨论】:

  • 可能需要通过代码重新绘制 3d 视图?

标签: blender bpy


【解决方案1】:

在编辑模式下,编辑器会处理网格的镜像,然后在您离开编辑模式后将其保存为对象的数据。您的脚本同时更改了未显示的底层原始网格。离开编辑模式会存储编辑网格,因此脚本更改根本不会出现。

解决此问题的一种方法是在编辑模式之外进行脚本更改:

import bpy

bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
bpy.ops.object.mode_set(mode="OBJECT")
bpy.context.object.data.vertices[0].select = True
bpy.context.object.data.vertices[0].co = (-3,-2,-3)
bpy.ops.object.mode_set(mode="EDIT")

另一个是请求编辑BMesh:

import bpy, bmesh

bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
mesh=bmesh.from_edit_mesh(bpy.context.object.data)
mesh.verts[0].select = True
mesh.verts[0].co = (-3,-2,-3)

这是 Blender 脚本界面的documented gotcha

【讨论】:

  • 从 2.73 开始,您可能必须在访问 BMesh 顶点之前添加 if hasattr(mesh.verts, "ensure_lookup_table"): mesh.verts.ensure_lookup_table() 以避免获得 IndexError
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2013-03-04
  • 2017-11-30
  • 1970-01-01
  • 2018-08-25
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多