Mesh
Πακέτο: aspose.threed.entities (aspose-3d-foss 26.1.0)
Mesh αποθηκεύει τη γεωμετρία του πολυγώνου ως λίστα σημείων ελέγχου (θέσεις κορυφών) και λίστα προσώπων πολυγώνου. Κάθε πρόσωπο πολυγώνου είναι μια λίστα μηδενικών δεικτών στο πίνακα σημείων ελέγχου. Τα πρόσωπα μπορεί να είναι τρίγωνα, τετράπλευρα ή πολυγώνια υψηλότερης αριότητας. Πρόσθετα δεδομένα ανά κορυφή· κανονικές, συντεταγμένες UV, χρώματα κορυφών· συνδέονται ως VertexElement επίπεδα.
class Mesh(Geometry):Methods
A3DObject → SceneObject → Entity → Geometry → Mesh
Methods
Δημιουργήστε ένα μονό τρίγωνο mesh από το μηδέν:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
# Create the mesh and add three vertex positions
# IMPORTANT: control_points returns a copy of the internal list.
# Append to _control_points directly — appending to control_points discards the vertex.
# This is a known library limitation; a public mutation API does not yet exist.
mesh = Mesh()
mesh._control_points.append(Vector4(0.0, 0.0, 0.0, 1.0)) # vertex 0
mesh._control_points.append(Vector4(1.0, 0.0, 0.0, 1.0)) # vertex 1
mesh._control_points.append(Vector4(0.5, 1.0, 0.0, 1.0)) # vertex 2
# Define one triangle face using vertex indices
mesh.create_polygon(0, 1, 2)
# Attach to a scene and save
scene = Scene()
scene.root_node.create_child_node("triangle", mesh)
scene.save("triangle.stl")Δημιουργήστε ένα quad mesh και τριγωνοποιήστε το πριν την εξαγωγή:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Four corners of a unit square in the XZ plane
# 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))
# One quad face
mesh.create_polygon(0, 1, 2, 3)
print(f"Polygons before triangulate: {mesh.polygon_count}") # 1
triangulated = mesh.triangulate()
print(f"Polygons after triangulate: {triangulated.polygon_count}") # 2
scene = Scene()
scene.root_node.create_child_node("quad", triangulated)
scene.save("quad.glb")Methods
control_points, polygon_count, polygons, edges, και vertex_elements είναι όλα ιδιότητες; προσπελάστε τα χωρίς παρενθέσεις.
| Methods | Methods | Methods | Methods |
|---|---|---|---|
control_points | list[Vector4] | διάβασε | Πίνακας θέσεων κορυφών. Κάθε στοιχείο είναι ένα Vector4(x, y, z, w) όπου w είναι 1.0 για δεδομένα θέσης. Επιστρέφει ένα αντίγραφο — μην προσθέτετε στη λίστα που επιστρέφεται. Χρησιμοποιήστε mesh._control_points.append(v) για να προσθέσετε κορυφές (γνωστό περιορισμό· το δημόσιο API μεταβολής δεν είναι ακόμη διαθέσιμο). |
polygon_count | int | Διάβασε | Αριθμός πολυγωνικών προσώπων που ορίζονται σε αυτό το πλέγμα. |
polygons | list[list[int]] | Διάβασε | Όλοι οι ορισμοί προσώπων ως λίστα λιστών δεικτών. Κάθε εσωτερική λίστα περιέχει τους δείκτες κορυφών (σε control_points) για ένα πρόσωπο. |
edges | list[int] | ανάγνωση | Ακατέργαστα δεδομένα δεικτών ακμών. Κυρίως για εσωτερική χρήση και προχωρημένα ερωτήματα τοπολογίας. |
vertex_elements | list[VertexElement] | ανάγνωση | Όλες οι στρώσεις στοιχείων κορυφών που είναι επί του παρόντος προσαρτημένες σε αυτό το πλέγμα (κανονικές, UV, χρώματα κ.λπ.). |
visible | bool | ανάγνωση/εγγραφή | Methods False, το πλέγμα είναι κρυφό σε προβολείς που σέβονται την ορατότητα. |
cast_shadows | bool | ανάγνωση/εγγραφή | Καθορίζει αν αυτό το πλέγμα ρίχνει σκιές σε μηχανές απόδοσης που υποστηρίζουν χάρτες σκιών. |
receive_shadows | bool | ανάγνωση/εγγραφή | Καθορίζει αν αυτό το πλέγμα λαμβάνει σκιές από άλλη γεωμετρία που ρίχνει σκιές. |
Methods
create_polygon(*indices)
Ορίστε ένα νέο πολύγωνο πρόσωπο παρέχοντας τους δείκτες κορυφών με τη σωστή σειρά. Οι δείκτες αναφέρονται σε θέσεις στο control_points. Δέχεται τρεις ή περισσότερους δείκτες για τρίγωνα, τετράπλευρα και n-γωνικά.
| Methods | Methods | Methods |
|---|---|---|
*indices | int | Παράμετροι δεικτών κορυφών με σειρά περιδρόμησης (συνήθως αριστερόστροφα όταν προβάλλεται από έξω). |
Επιστρέφει: None
mesh = Mesh()
# ... populate control_points ...
mesh.create_polygon(0, 1, 2) # triangle
mesh.create_polygon(0, 1, 2, 3) # quad
print(mesh.polygon_count) # 2triangulate()
Επιστρέψτε ένα νέο Mesh όπου κάθε πολύγωνο έχει χωριστεί σε τρίγωνα χρησιμοποιώντας fan triangulation. Το αρχικό πλέγμα δεν τροποποιείται. Χρήσιμο πριν από την εξαγωγή σε μορφές που απαιτούν γεωμετρία μόνο με τρίγωνα (όπως STL ή ορισμένες glTF pipelines).
Επιστρέφει: Mesh; ένα νέο πλέγμα που περιέχει μόνο τρίγωνα.
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
for v in [(0,0,0), (1,0,0), (1,1,0), (0,1,0)]:
mesh._control_points.append(Vector4(*v, 1.0))
mesh.create_polygon(0, 1, 2, 3) # one quad
tri_mesh = mesh.triangulate()
print(tri_mesh.polygon_count) # 2to_mesh()
Επιστρέψτε αυτό Mesh ως ένα Mesh αντίγραφο. Για Mesh στα αντικείμενα αυτή είναι μια λειτουργία ταυτότητας (επιστρέφει self). Ορισμένο στην Geometry βάση κλάση για να παρέχει μια ενιαία διεπαφή μετατροπής όταν εργάζεστε με γενικές Geometry αναφορές.
Επιστρέφει: Mesh
from aspose.threed.entities import Geometry
def ensure_mesh(geom: Geometry):
return geom.to_mesh()create_element(element_type, mapping_mode, reference_mode)
Προσθέστε ένα νέο VertexElement στρώση του καθορισμένου τύπου στο πλέγμα. Χρησιμοποιήστε το για να συνδέσετε normals, tangents, binormals, vertex colours, and smoothing groups.
| Methods | Methods | Methods |
|---|---|---|
element_type | VertexElementType | Το είδος των δεδομένων που κρατά αυτή η στρώση (π.χ., VertexElementType.NORMAL). |
mapping_mode | MappingMode | Πώς τα δεδομένα αντιστοιχούν στη γεωμετρία: CONTROL_POINT, POLYGON_VERTEX, POLYGON, κ.λπ. |
reference_mode | ReferenceMode | Πώς χρησιμοποιούνται οι δείκτες: DIRECT ή INDEX_TO_DIRECT. |
Επιστρέφει: VertexElement
from aspose.threed.entities import Mesh, VertexElementType, MappingMode, ReferenceMode
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
mesh._control_points.append(Vector4(0, 0, 0, 1))
mesh._control_points.append(Vector4(1, 0, 0, 1))
mesh._control_points.append(Vector4(0.5, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
normal_element = mesh.create_element(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT,
)create_element_uv(uv_mapping, mapping_mode, reference_mode)
Προσθέστε ένα στρώμα συντεταγμένων UV στο πλέγμα. Αυτή είναι η προτιμώμενη μέθοδος για την προσθήκη δεδομένων συντεταγμένων υφής.
| Methods | Methods | Methods |
|---|---|---|
uv_mapping | TextureMapping | Ο σκοπός του καναλιού UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, κλπ. |
mapping_mode | MappingMode | Πώς οι UVs αντιστοιχούν σε στοιχεία γεωμετρίας. |
reference_mode | ReferenceMode | Λειτουργία δεικτοδότησης: DIRECT ή INDEX_TO_DIRECT. |
Επιστρέφει: VertexElementUV
from aspose.threed.entities import Mesh, TextureMapping, MappingMode, ReferenceMode
mesh = Mesh()
# ... define control_points and polygons ...
uv_element = mesh.create_element_uv(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT,
)