Как создать сегмент с, например, 30 верификациями, а затем подключить пустую строку с посещением Hook к каждой проверке в сегменте, все это через Python в Blender 3d?Создайте сегмент с заданным числом вершин и зацепите и опустошите все вершины в сегменте
0
A
ответ
0
Я собираюсь сказать, что это было неприятно, но после нескольких разных подходов это единственный способ, которым я должен работать.
import bpy
import bmesh
num_verts = 30
scn = bpy.context.scene
D = bpy.data.objects
verts = []
edges = []
for i in range(num_verts):
verts += [(i, 0.0, 0.0)]
if i > 0:
edges += [(i, i-1)]
mesh_data = bpy.data.meshes.new("hooked verts")
mesh_data.from_pydata(verts, edges, [])
mesh_data.update()
obj = D.new("Hooked line", mesh_data)
obj.select = True
scn.objects.link(obj)
scn.objects.active = obj
bpy.ops.object.mode_set(mode='EDIT')
for i in range(len(obj.data.vertices)):
bm = bmesh.from_edit_mesh(obj.data)
bpy.ops.mesh.select_all(action='DESELECT')
bm.verts.ensure_lookup_table()
bm.verts[i].select = True
bpy.ops.object.hook_add_newob()
bpy.context.selected_objects[0].name = 'Hook'
bm.free()
bpy.ops.object.mode_set(mode='OBJECT')
Чтобы назначить крюк к вершине, объект должен находиться в режиме редактирования с желаемой вершины выбранной. Казалось бы, операторы add hook делают беспорядок данных редактирования mesh, так что после создания первого модификатора крюка данные сетки более недействительны. Решение - заново создайте данные bmesh и выберите вершину после создания каждого крючка.