0
たとえば30個のベリファイを含むセグメントを作成し、これはPythonのBlender 3dでですか?指定した数のvertsとhookでセグメントを作成し、セグメント内のすべてのvertに空の状態にします。
たとえば30個のベリファイを含むセグメントを作成し、これはPythonのBlender 3dでですか?指定した数のvertsとhookでセグメントを作成し、セグメント内のすべてのvertに空の状態にします。
私はこれがイライラしていましたが、いくつかの異なるアプローチを試した後、これが私が働かなければならない1つの方法です。
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フック演算子は編集メッシュデータを混乱させるので、最初のフック修飾子を作成した後にメッシュデータはもはや有効ではないように見えるでしょう。解決策 - 各フックを作成した後に、bmeshデータを再作成し、頂点を選択します。