繁体   English   中英

Blender脚本:选定顶点的索引

[英]Blender scripting: Indices of selected vertices

问:在Blender 2.64中,我有一个处于编辑模式的网格,其中选择了一些顶点。 如何在Python脚本中获取或生成所选顶点的索引列表?

我发现Blender Python API参考完全容易导航,而Google主要指向过时的API。 对于Blender脚本专家来说,这无疑是微不足道的。

索引应与网格的OBJ导出中的顶点索引一致。 我想编写一个脚本导出文本文件中的顶点索引,以便在C ++程序中访问这些顶点。

只有在执行对象模式之前切换到对象模式,代码才能可靠地运行。 原因是在编辑模式下,网格数据与对象模式中的网格不同步。 切换回对象模式时会执行此操作。 您可以通过切换到编辑模式,从对象中选择一些顶点,执行代码,然后选择不同的顶点(仍处于编辑模式)并再次运行脚本来验证这一点。 您会注意到Python控制台中所选顶点的列表不会更改。 这种行为 记录在案 要在编辑模式下获取所选顶点,以下代码可用作第一个指针(使用2.66.5 r56033测试):

import bpy
import bmesh

obj=bpy.context.object
if obj.mode == 'EDIT':
    bm=bmesh.from_edit_mesh(obj.data)
    for v in bm.verts:
        if v.select:
            print(v.co)
else:
    print("Object is not in edit mode.")

选择/取消选择节点并执行脚本以查看顶点更改。

终于在博客中找到它,漂亮而紧凑:

Verts = [i.index for i in bpy.context.active_object.data.vertices if i.select]

它确实与OBJ导出中的顶点排序一致(Blender.2.64)。

基于@hochl和@DCS,在编辑模式下,在Python控制台中运行以下行:

import bmesh; [i.index for i in bmesh.from_edit_mesh(bpy.context.active_object.data).verts if i.select]

* Blender版本2.70(2.70,2014-Apr-10)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM