data.polygons[0].select
ist eine boolesche Eigenschaft eines Gesichts, das ein MeshPolygon Objekt ist. Es speichert einen wahren oder falschen Wert und es gibt nicht viel anderes, was Sie darüber erfahren können.
Der Operator zum Auswählen ähnlicher Elemente durchläuft einfach die Flächen und setzt select auf true, wenn ein Kriterium erfüllt ist.
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
die Auswahl
for f in obj_data.polygons:
f.select = not f.select
Hinweis invertieren, dass dies nur im Objektmodus arbeiten wird als Bearbeitungsmodus bmesh verwendet und wird alle Änderungen beim Verlassen Bearbeitungsmodus überschreiben. Sie finden bmesh ist eine bessere Option zum Bearbeiten von Mesh-Daten, und Sie müssen das Objekt nicht in den Bearbeitungsmodus versetzen, um es zu verwenden.
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()
Wenn der Obect im Bearbeitungsmodus befindet würden Sie from_edit_mesh
und update_edit_mesh
verwenden. Sie können einige Informationen über den Kontextparameter für bmesh.ops.delete()
here finden.
Vielen Dank! Das hilft wirklich. Ich habe nicht über Bmesh nachgedacht, ich muss es lernen :) aber ich verstehe nicht, wie Render von bearbeiteten Mesh zu machen. Ich benutze animierte Knoten mit Python-Skript und wenn ich rendern werde bekomme ich 'Kontext' Objekt hat kein Attribut 'Objekt' –
Ist das ein Skript-Knoten in der Animationsknoten-Struktur? Haben Sie "Kontext" oder "Kontext" - alles Kleinbuchstaben? Stellen Sie eine andere Frage mit dem fehlerhaften Skript. Sie werden [blender.stackexchange.com] (https://blender.stackexchange.com) hilfreicher für blenderspezifisches Skripting finden. – sambler