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