level 6
mobilefzb
楼主
blender目前有个bmesh的模块可以完成获取编辑状态下的顶点边之类的数据属性进行进一步的处理,但是目前来说还出于开发阶段,所以不太稳定,这个方法是外国网站上搜索来的,打开个外国网站太不容易了,blendercn论坛也很不容易刷出来,只有把方法记录到这里,方便大家看。
这个处理函数写的比较奇怪,是通过回调的方式传入的,为何会这样做是因为发现获取到的顶点跳出函数后就被系统回收了也就是之前我想的通过数组将当前选中的顶点保存并返回思路不可行,为了不破坏封装性就直接这样写了,目前对python还出于初学阶段……高手觉得不爽改之。
import
bp
y
import bmesh
def get_selected_verts_frome_edit_mesh(sel_verts_callback) :
obj = bpy.context.object;
sel_vert_arr = [];
if obj.mode == 'EDIT':
bm = bmesh.from_edit_mesh(obj.data);
for v in bm.verts:
if v.select:
sel_vert_arr.append(v);
else :
print("Object is not in edit mode!");
pass;
sel_verts_callback(sel_vert_arr);
def my_callback(sel_verts):
for v in sel_verts:
print(v.co.x);
else :
print("end loop!");
get_selected_verts_frome_edit_mesh(my_callback);
2014年01月11日 10点01分
1
这个处理函数写的比较奇怪,是通过回调的方式传入的,为何会这样做是因为发现获取到的顶点跳出函数后就被系统回收了也就是之前我想的通过数组将当前选中的顶点保存并返回思路不可行,为了不破坏封装性就直接这样写了,目前对python还出于初学阶段……高手觉得不爽改之。
import
bp
y
import bmesh
def get_selected_verts_frome_edit_mesh(sel_verts_callback) :
obj = bpy.context.object;
sel_vert_arr = [];
if obj.mode == 'EDIT':
bm = bmesh.from_edit_mesh(obj.data);
for v in bm.verts:
if v.select:
sel_vert_arr.append(v);
else :
print("Object is not in edit mode!");
pass;
sel_verts_callback(sel_vert_arr);
def my_callback(sel_verts):
for v in sel_verts:
print(v.co.x);
else :
print("end loop!");
get_selected_verts_frome_edit_mesh(my_callback);