首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合器脚本:选定顶点的索引

混合器脚本:选定顶点的索引
EN

Stack Overflow用户
提问于 2013-03-15 10:21:15
回答 3查看 16.7K关注 0票数 10

Q:在混合器2.64,我有一个网格在编辑模式和一些顶点选择。如何在Python脚本中获取或生成所选顶点的索引列表?

我发现Blender Python引用在导航上完全令人困惑,而Google主要指向过时的API。希望这对于混合器脚本专家来说是微不足道的。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-21 00:07:53

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

代码语言:javascript
复制
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.")

选择/取消选择节点并执行脚本以查看顶点的变化。

票数 13
EN

Stack Overflow用户

发布于 2013-03-15 12:59:18

终于在Blog中找到了它,它既漂亮又紧凑:

代码语言:javascript
复制
Verts = [i.index for i in bpy.context.active_object.data.vertices if i.select]

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

票数 11
EN

Stack Overflow用户

发布于 2014-08-11 16:44:49

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

代码语言:javascript
复制
import bmesh; [i.index for i in bmesh.from_edit_mesh(bpy.context.active_object.data).verts if i.select]

*搅拌机版本2.70 (2.70,2014年4月-10日)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15429796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档