Выбранная вершина не подсвечивается в Blender 3D
Я сделал куб в 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, ее позиция не обновилась.
Почему он не выделил и не сдвинулся с места?
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")
Еще есть запрос на редактирование БМеш:
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.