data.polygons[0].select
是一个面的布尔属性,它是一个MeshPolygon对象。它存储了一个真实或错误的价值,没有什么可以了解的。
选择相似的运算符只是简单地遍历面并将选择设置为true(如果它与条件匹配)。
import bpy
obj_data = bpy.context.object.data
for f in obj_data.polygons:
if f.area < 0.1:
f.select = True
else:
f.select = False
反选
for f in obj_data.polygons:
f.select = not f.select
请注意,这只会在目标模式下工作的编辑模式使用bmesh并覆盖在退出编辑模式的任何改变。您会发现bmesh是编辑网格数据的更好选择,您不必将对象置于编辑模式即可使用它。
import bpy
import bmesh
obj_data = bpy.context.object.data
bm = bmesh.new()
bm.from_mesh(obj_data)
bm.faces.ensure_lookup_table()
bad_faces = [f for f in bm.faces if f.calc_area() < 0.1]
bmesh.ops.delete(bm, geom=bad_faces, context=5)
bm.to_mesh(obj_data)
bm.free()
obj_data.update()
如果obect是在编辑模式下,你会用from_edit_mesh
和update_edit_mesh
。你可以在bmesh.ops.delete()
here的环境参数中找到一些信息。
非常感谢!这真的有帮助。没有考虑bmesh,需要研究它:)但我不明白如何执行编辑的网格渲染。我正在使用Python脚本使用动画节点,如果我将渲染,我得到'上下文'对象没有属性'对象' –
是否是动画节点树中的脚本节点?你有'上下文'或'上下文' - 全部小写?用失败的脚本询问另一个问题。您会发现[blender.stackexchange.com](https://blender.stackexchange.com)对混合器特定脚本更有帮助。 – sambler