用给定的顶点数创建一个线段,钩住并清空分段中的每个顶点

2024-04-29 15:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何创建一个有30个验证的段,然后通过blender3d中的Python将一个空的带钩子的元素连接到段中的每个verity?在


Tags: 元素钩子verityblender3d
1条回答
网友
1楼 · 发布于 2024-04-29 15:43:12

我要说这是令人沮丧的,但在尝试了几种不同的方法后,这是我开始工作的唯一方法。在

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操作符把编辑网格数据搞得一团糟,这样在创建第一个钩子修改器之后,网格数据就不再有效了。解决方案-重新创建bmesh数据,并在创建每个钩子后选择一个顶点。在

相关问题 更多 >