4

我在 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,但它的位置没有更新。

为什么不突出也不移动?

4

1 回答 1

6

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

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

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 脚本界面的文档陷阱。

于 2013-12-03T21:12:22.067 回答