PolygonModifier

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
MethodsMethodsMethods
meshMeshΤο πλέγμα προέλευσης προς τριγωνοποίηση.

Επιστρέφει: 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)     # 2

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

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

@staticmethod
def triangulate(scene: Scene) -> None
MethodsMethodsMethods
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]]
MethodsMethodsMethods
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) — μαζική τριγωνοποίηση με προαιρετική δημιουργία κανονικών

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

Δείτε επίσης

 Ελληνικά