Mesh

Πακέτο: aspose.threed.entities (aspose-3d-foss 26.1.0)

Mesh αποθηκεύει τη γεωμετρία του πολυγώνου ως λίστα σημείων ελέγχου (θέσεις κορυφών) και λίστα προσώπων πολυγώνου. Κάθε πρόσωπο πολυγώνου είναι μια λίστα μηδενικών δεικτών στο πίνακα σημείων ελέγχου. Τα πρόσωπα μπορεί να είναι τρίγωνα, τετράπλευρα ή πολυγώνια υψηλότερης αριότητας. Πρόσθετα δεδομένα ανά κορυφή· κανονικές, συντεταγμένες UV, χρώματα κορυφών· συνδέονται ως VertexElement επίπεδα.

class Mesh(Geometry):

Methods

A3DObjectSceneObjectEntityGeometryMesh


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 είναι όλα ιδιότητες; προσπελάστε τα χωρίς παρενθέσεις.

MethodsMethodsMethodsMethods
control_pointslist[Vector4]διάβασεΠίνακας θέσεων κορυφών. Κάθε στοιχείο είναι ένα Vector4(x, y, z, w) όπου w είναι 1.0 για δεδομένα θέσης. Επιστρέφει ένα αντίγραφο — μην προσθέτετε στη λίστα που επιστρέφεται. Χρησιμοποιήστε mesh._control_points.append(v) για να προσθέσετε κορυφές (γνωστό περιορισμό· το δημόσιο API μεταβολής δεν είναι ακόμη διαθέσιμο).
polygon_countintΔιάβασεΑριθμός πολυγωνικών προσώπων που ορίζονται σε αυτό το πλέγμα.
polygonslist[list[int]]ΔιάβασεΌλοι οι ορισμοί προσώπων ως λίστα λιστών δεικτών. Κάθε εσωτερική λίστα περιέχει τους δείκτες κορυφών (σε control_points) για ένα πρόσωπο.
edgeslist[int]ανάγνωσηΑκατέργαστα δεδομένα δεικτών ακμών. Κυρίως για εσωτερική χρήση και προχωρημένα ερωτήματα τοπολογίας.
vertex_elementslist[VertexElement]ανάγνωσηΌλες οι στρώσεις στοιχείων κορυφών που είναι επί του παρόντος προσαρτημένες σε αυτό το πλέγμα (κανονικές, UV, χρώματα κ.λπ.).
visibleboolανάγνωση/εγγραφήMethods False, το πλέγμα είναι κρυφό σε προβολείς που σέβονται την ορατότητα.
cast_shadowsboolανάγνωση/εγγραφήΚαθορίζει αν αυτό το πλέγμα ρίχνει σκιές σε μηχανές απόδοσης που υποστηρίζουν χάρτες σκιών.
receive_shadowsboolανάγνωση/εγγραφήΚαθορίζει αν αυτό το πλέγμα λαμβάνει σκιές από άλλη γεωμετρία που ρίχνει σκιές.

Methods

create_polygon(*indices)

Ορίστε ένα νέο πολύγωνο πρόσωπο παρέχοντας τους δείκτες κορυφών με τη σωστή σειρά. Οι δείκτες αναφέρονται σε θέσεις στο control_points. Δέχεται τρεις ή περισσότερους δείκτες για τρίγωνα, τετράπλευρα και n-γωνικά.

MethodsMethodsMethods
*indicesintΠαράμετροι δεικτών κορυφών με σειρά περιδρόμησης (συνήθως αριστερόστροφα όταν προβάλλεται από έξω).

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

triangulate()

Επιστρέψτε ένα νέο 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)      # 2

to_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.

MethodsMethodsMethods
element_typeVertexElementTypeΤο είδος των δεδομένων που κρατά αυτή η στρώση (π.χ., VertexElementType.NORMAL).
mapping_modeMappingModeΠώς τα δεδομένα αντιστοιχούν στη γεωμετρία: CONTROL_POINT, POLYGON_VERTEX, POLYGON, κ.λπ.
reference_modeReferenceModeΠώς χρησιμοποιούνται οι δείκτες: 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 στο πλέγμα. Αυτή είναι η προτιμώμενη μέθοδος για την προσθήκη δεδομένων συντεταγμένων υφής.

MethodsMethodsMethods
uv_mappingTextureMappingΟ σκοπός του καναλιού UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, κλπ.
mapping_modeMappingModeΠώς οι UVs αντιστοιχούν σε στοιχεία γεωμετρίας.
reference_modeReferenceModeΛειτουργία δεικτοδότησης: 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,
)

Δείτε επίσης

 Ελληνικά