2016-09-17 5 views

答えて

0

私はこれがイライラしていましたが、いくつかの異なるアプローチを試した後、これが私が働かなければならない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データを再作成し、頂点を選択します。

関連する問題