blender - 选定的顶点在 Blender 3D 中未突出显示

标签 blender bpy

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

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

为什么它不突出显示也不移动?

最佳答案

在编辑模式下,编辑器会处理网格的镜像,一旦离开编辑模式,该镜像就会保存为对象的数据。同时,您的脚本会更改未显示的底层原始网格。离开编辑模式会存储编辑网格,因此脚本化的更改根本不会显示。

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

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)

这是一个documented gotcha Blender 的脚本界面。

关于blender - 选定的顶点在 Blender 3D 中未突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20349361/

相关文章:

python - Blender 中的 Vim 与 BPY 一起工作?

python - bpy.ops.sequencer.view_all() 轮询失败

python - 如何通过Python设置函数曲线的插值? ( blender )

javascript - 将对象+骨架从 blender 导出到 Threejs 并手动移动骨骼

java - Blender 模型在 libGDX 中渲染不正确

android - 从 Blender 3D 到 Android Studio

python - 您如何从在 blender 外部运行的 python 脚本在 blender 中编写命令?

python - python 中 BPY 模块的导入错误

python - 无法使用 pip 安装包 bpy