PolygonModifier
Πακέτο: aspose.threed.entities (aspose-3d-foss 26.1.0)
PolygonModifier είναι μια στατική βοηθητική κλάση που παρέχει λειτουργίες τεσσαρίσματος πολυγώνων σε Mesh και Scene αντικείμενα. Όλες οι μέθοδοι είναι μεθόδους κλάσης; PolygonModifier δεν δημιουργείται ποτέ άμεσα.
from aspose.threed.entities import PolygonModifierΗ κύρια λειτουργία είναι η τριγωνοποίηση: η μετατροπή τετραπλεύρων (quads) και n‑γώνων σε τρίγωνα χρησιμοποιώντας τη μέθοδο αποκοπής αυτιού (ear‑clipping). Αυτό απαιτείται πριν από την εξαγωγή σε μορφές που δέχονται μόνο τριγωνική γεωμετρία (STL, ορισμένες διαδικασίες glTF).
Methods
triangulate(arg) — τριγωνοποιεί ένα Mesh
Επιστρέφει ένα νέο Mesh στον οποίο κάθε πολύγωνο έχει μετατραπεί σε τρίγωνα. Το αρχικό πλέγμα δεν τροποποιείται. Τα επίπεδα στοιχείων κορυφών (normals, UVs, colours) αντιγράφονται στο νέο πλέγμα.
@staticmethod
def triangulate(mesh: Mesh) -> Mesh| Methods | Methods | Methods |
|---|---|---|
mesh | Mesh | Το πλέγμα προέλευσης προς τριγωνοποίηση. |
Επιστρέφει: Mesh — ένα νέο πλέγμα που περιέχει μόνο τριγωνικά πολύγωνα.
from aspose.threed.entities import Mesh, PolygonModifier
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
for x, z in [(0, 0), (1, 0), (1, 1), (0, 1)]:
mesh._control_points.append(Vector4(float(x), 0.0, float(z), 1.0))
mesh.create_polygon(0, 1, 2, 3) # one quad
tri_mesh = PolygonModifier.triangulate(mesh)
print(tri_mesh.polygon_count) # 2triangulate(scene) — τριγωνοποιεί όλα τα πλέγματα σε ένα Scene
Διασχίζει ολόκληρο το γράφημα σκηνής και τριγωνοποιεί κάθε Mesh οντότητα στη θέση της. Μετά από αυτή την κλήση, δεν απομένουν πολυγώνια που δεν είναι τρίγωνα στη σκηνή.
@staticmethod
def triangulate(scene: Scene) -> None| Methods | Methods | Methods |
|---|---|---|
scene | Scene | Η σκηνή της οποίας τα πλέγματα οντοτήτων θα τριγωνοποιηθούν. |
Επιστρέφει: None
from aspose.threed import Scene
from aspose.threed.entities import PolygonModifier
scene = Scene.from_file("model_with_quads.obj")
PolygonModifier.triangulate(scene)
scene.save("model_triangulated.stl")triangulate(control_points, polygon) — τριγωνοποίηση ενός μοναδικού πολύγωνου
Υπερφόρτωση χαμηλού επιπέδου: δεδομένης μιας λίστας σημείων ελέγχου και μιας λίστας δεικτών κορυφών που σχηματίζουν ένα πολύγωνο, επιστρέφει μια λίστα τριπλέτων δεικτών τριγώνων που παράγονται από τριγωνοποίηση τύπου «fan».
@staticmethod
def triangulate(
control_points: list[Vector4],
polygon: list[int],
) -> list[list[int]]| Methods | Methods | Methods |
|---|---|---|
control_points | list[Vector4] | Ο πλήρης πίνακας θέσεων κορυφών. |
polygon | list[int] | Δείκτες σε control_points ορίζοντας το πολύγωνο προς διαίρεση. |
Επιστρέφει: list[list[int]] — μια λίστα από [i, j, k] τριπλέτες, η καθεμία αντιπροσωπεύει ένα τρίγωνο εξόδου.
from aspose.threed.entities import PolygonModifier
from aspose.threed.utilities import Vector4
pts = [
Vector4(0.0, 0.0, 0.0, 1.0),
Vector4(1.0, 0.0, 0.0, 1.0),
Vector4(1.0, 1.0, 0.0, 1.0),
Vector4(0.0, 1.0, 0.0, 1.0),
]
quad_indices = [0, 1, 2, 3]
triangles = PolygonModifier.triangulate(pts, quad_indices)
print(triangles) # e.g. [[0, 1, 2], [0, 2, 3]]triangulate(control_points, polygons, generate_normals, normals_out) — μαζική τριγωνοποίηση με προαιρετική δημιουργία κανονικών
Μαζική τριγωνοποίηση λίστας λιστών δεικτών πολυγώνων. Προαιρετικά υπολογίστε τα κανονικά προσώπων για κάθε τρίγωνο εξόδου και προσθέστε τα στο normals_out.
@staticmethod
def triangulate(
control_points: list[Vector4],
polygons: list[list[int]],
generate_normals: bool = False,
normals_out: list[Vector3] | None = None,
) -> list[list[int]]| Methods | Methods | Methods |
|---|---|---|
control_points | list[Vector4] | Ο πίνακας θέσεων κορυφών. |
polygons | list[list[int]] | Μια λίστα ορισμών πολυγώνων, η κάθε μία λίστα δεικτών κορυφών. |
generate_normals | bool | Methods True, υπολογίστε το κανονικό της επιφάνειας για κάθε τρίγωνο εξόδου. |
normals_out | `list[Vector3] | None` |
Επιστρέφει: list[list[int]] — όλες τις τριπλέτες τριγώνων εξόδου με τη σειρά.
from aspose.threed.entities import PolygonModifier
from aspose.threed.utilities import Vector4, Vector3
pts = [
Vector4(0, 0, 0, 1), Vector4(1, 0, 0, 1),
Vector4(1, 1, 0, 1), Vector4(0, 1, 0, 1),
]
polys = [[0, 1, 2, 3]]
normals: list[Vector3] = []
tris = PolygonModifier.triangulate(pts, polys, True, normals)
print(len(tris)) # 2
print(len(normals)) # 2