PolygonModifier

PolygonModifier — Aspose.3D Python API Reference

Πακέτο: 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).


triangulate(arg) — τριγωνοποιεί ένα Mesh

Επιστρέφει ένα νέο Mesh στην οποία κάθε πολύγωνο έχει μετατραπεί σε τρίγωνα. Το αρχικό πλέγμα δεν τροποποιείται. Τα επίπεδα στοιχείων κορυφών (normals, UVs, colours) αντιγράφονται στο νέο πλέγμα.

@staticmethod
def triangulate(mesh: Mesh) -> Mesh
meshMeshΤο πλέγμα προέλευσης προς τριγωνοποίηση.

Επιστρέφει: Mesh — ένα νέο πλέγμα που περιέχει μόνο τριγωνικά πολύγωνα.

from aspose.threed.entities import Mesh, PolygonModifier
from aspose.threed.utilities import Vector4

mesh = Mesh()
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)     # 2

triangulate(scene) — τριγωνοποιεί όλα τα πλέγματα σε ένα Scene

Διασχίζει ολόκληρο το γράφημα σκηνής και τριγωνοποιεί κάθε Mesh οντότητα στη θέση της. Μετά από αυτήν την κλήση, δεν απομένουν πολυγώνια που δεν είναι τρίγωνα στη σκηνή.

@staticmethod
def triangulate(scene: Scene) -> None
sceneSceneΗ σκηνή της οποίας τα πλέγματα οντοτήτων θα τριγωνοποιηθούν.

Επιστρέφει: 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]]
control_pointslist[Vector4]Ο πλήρης πίνακας θέσεων κορυφών.
polygonlist[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) — μαζική τριγωνοποίηση με προαιρετική δημιουργία κανονικών

Μαζική τριγωνοποίηση λίστας λιστών δεικτών πολυγώνων. Προαιρετικά υπολογίζει τα face normals για κάθε τρίγωνο εξόδου και τα προσθέτει στο 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]]
control_pointslist[Vector4]Ο πίνακας θέσεων κορυφών.
polygonslist[list[int]]Μια λίστα ορισμών πολυγώνων, καθεμία λίστα δεικτών κορυφών.
generate_normalsbool
True, υπολογίζει ένα face normal για κάθε τρίγωνο εξόδου.
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

Δείτε επίσης

 Ελληνικά