Mesh — Aspose.3D FOSS for Java
Πακέτο: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh αποθηκεύει τη γεωμετρία πολυγώνων ως λίστα σημείων ελέγχου (θέσεις κορυφών) και λίστα προσώπων πολυγώνων. Κάθε πρόσωπο πολυγώνου είναι μια λίστα μηδενικής βάσης δεικτών στον πίνακα σημείων ελέγχου. Τα πρόσωπα μπορεί να είναι τρίγωνα, τετράπλευρα ή πολυγώνια υψηλότερης αριότητας. Πρόσθετα δεδομένα ανά κορυφή — κανονικές, συντεταγμένες UV, χρώματα κορυφών — συνδέονται ως VertexElement στρώματα.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Δημιουργήστε ένα μονό τριγωνικό mesh από το μηδέν:
import com.aspose.threed.Scene;
import com.aspose.threed.*;
// Create the mesh and add three vertex positions
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0.0, 0.0, 0.0, 1.0)); // vertex 0
mesh.getControlPoints().add(new Vector4(1.0, 0.0, 0.0, 1.0)); // vertex 1
mesh.getControlPoints().add(new Vector4(0.5, 1.0, 0.0, 1.0)); // vertex 2
// Define one triangle face using vertex indices
mesh.createPolygon(0, 1, 2);
// Attach to a scene and save
Scene scene = new Scene();
scene.getRootNode().createChildNode("triangle", mesh);
scene.save("triangle.stl");Δημιουργήστε ένα quad mesh (σημείωση: η triangulate() είναι ένα stub — δείτε την προειδοποίηση παρακάτω):
import com.aspose.threed.Scene;
import com.aspose.threed.*;
Mesh mesh = new Mesh();
// Four corners of a unit square in the XZ plane
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 1, 1.0));
mesh.getControlPoints().add(new Vector4(0, 0, 1, 1.0));
// One quad face
mesh.createPolygon(0, 1, 2, 3);
System.out.println("Polygons before triangulate: " + mesh.getPolygonCount()); // 1
// WARNING: triangulate() is a stub — it returns a clone, NOT a triangulated mesh.
// The polygon count will remain 1 (not 2).
Mesh triangulated = mesh.triangulate();
System.out.println("Polygons after triangulate: " + triangulated.getPolygonCount()); // still 1
Scene scene = new Scene();
scene.getRootNode().createChildNode("quad", triangulated);
// When saving to STL, pass triangle-only meshes to avoid vertex loss or malformed output.
scene.save("quad.glb");Methods
| Methods | Methods | Methods | Methods | Methods |
|---|---|---|---|---|
controlPoints | List<Vector4> | getControlPoints() | – | Πίνακας θέσεων κορυφών. Κάθε καταχώρηση είναι μια Vector4(x, y, z, w) όπου w είναι 1.0 για δεδομένα θέσης. Προσθέστε κορυφές καλώντας add() στην επιστρεφόμενη λίστα. |
polygonCount | int | getPolygonCount() | – | Αριθμός προσώπων πολυγώνων που ορίζονται σε αυτό το πλέγμα. |
polygons | List<int[]> | getPolygons() | – | Όλοι οι ορισμοί προσώπων ως λίστα πινάκων δεικτών. Κάθε εσωτερικός πίνακας περιέχει τους δείκτες κορυφών (στο controlPoints). |
edges | List<Integer> | getEdges() | – | Ακατέργαστα δεδομένα δεικτών ακμών. Κυρίως για εσωτερική χρήση και προχωρημένα ερωτήματα τοπολογίας. |
vertexElements | List<VertexElement> | getVertexElements() | – | Όλες οι στρώσεις στοιχείων κορυφών που είναι επί του παρόντος συνδεδεμένες σε αυτό το πλέγμα (κανονικές, UV, χρώματα κ.λπ.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, το πλέγμα είναι κρυφό σε προβολείς που σέβονται την ορατότητα. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Καθορίζει αν αυτό το πλέγμα ρίχνει σκιές σε renderers που υποστηρίζουν χάρτες σκιών. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Εάν αυτό το πλέγμα λαμβάνει σκιές από άλλη γεωμετρία που ρίχνει σκιές. |
Methods
createPolygon(int... indices)
Ορίστε ένα νέο πολύγωνο προσώπου παρέχοντας τους δείκτες κορυφών με τη σωστή σειρά. Οι δείκτες αναφέρονται σε θέσεις στο getControlPoints(). Δέχεται τρία ή περισσότερα δείκτες για τρίγωνα, τετράπλευρα και n-γωνικά.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Παράμετροι δείκτη κορυφής με σειρά περιδίνησης (συνήθως αριστερόστροφα όταν προβάλλεται από το εξωτερικό). |
Επιστρέφει: void
Mesh mesh = new Mesh();
// ... populate control points ...
mesh.createPolygon(0, 1, 2); // triangle
mesh.createPolygon(0, 1, 2, 3); // quad
System.out.println(mesh.getPolygonCount()); // 2triangulate()
Stub: Επιστρέφει ένα κλώνο του αρχικού πλέγματος. Προορίζεται να χωρίσει όλα τα πολύγωνα σε τρίγωνα χρησιμοποιώντας fan triangulation, αλλά η πραγματική λογική τριγωνοποίησης δεν έχει ακόμη υλοποιηθεί. Το αρχικό πλέγμα δεν τροποποιείται.
Επιστρέφει: Mesh – ένα κλώνο του αρχικού πλέγματος (συμπεριφορά stub).
import com.aspose.threed.*;
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 1, 0, 1.0));
mesh.getControlPoints().add(new Vector4(0, 1, 0, 1.0));
mesh.createPolygon(0, 1, 2, 3); // one quad
Mesh triMesh = mesh.triangulate();
// Note: currently returns a clone, not a triangulated mesh
System.out.println(triMesh.getPolygonCount());toMesh()
Επιστρέψτε αυτό Mesh ως Mesh αντικείμενο. Για Mesh αντικείμενα, αυτή είναι μια λειτουργία ταυτότητας (επιστρέφει this) Geometry Ορίζεται στο Geometry βασική κλάση για να παρέχει μια ενιαία διεπαφή μετατροπής όταν εργάζεστε με γενικές.
αναφορές.: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Προσθέστε ένα νέο VertexElement στρώση του καθορισμένου τύπου στο πλέγμα. Χρησιμοποιήστε το για να συνδέσετε κανονικές, εφαπτόμενες, διπλές εφαπτόμενες, χρώματα κορυφών και ομάδες εξομάλυνσης.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Το είδος των δεδομένων που περιέχει αυτή η στρώση (π.χ., VertexElementType.NORMAL). |
mappingMode | MappingMode | Πώς τα δεδομένα αντιστοιχούν στη γεωμετρία: CONTROL_POINT, POLYGON_VERTEX, POLYGON, κλπ. |
referenceMode | ReferenceMode | Πώς χρησιμοποιούνται οι δείκτες: DIRECT ή INDEX_TO_DIRECT. |
Επιστρέφει: VertexElement
import com.aspose.threed.*;
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);
VertexElement normalElement = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT
);createElementUV(TextureMapping uvMapping, MappingMode mappingMode, ReferenceMode referenceMode)
Προσθέστε ένα στρώμα συντεταγμένων UV στο πλέγμα. Αυτή είναι η προτιμώμενη μέθοδος για την προσθήκη δεδομένων συντεταγμένων υφής.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Ο σκοπός του καναλιού UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, κλπ. |
mappingMode | MappingMode | Πώς αντιστοιχίζονται τα UV στα στοιχεία της γεωμετρίας. |
referenceMode | ReferenceMode | Λειτουργία ευρετηρίασης: DIRECT ή INDEX_TO_DIRECT. |
Επιστρέφει: VertexElementUV
import com.aspose.threed.*;
Mesh mesh = new Mesh();
// ... define control points and polygons ...
VertexElementUV uvElement = mesh.createElementUV(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT
);Μέθοδοι Boolean και Βελτιστοποίησης (Stubs)
Οι ακόλουθες μέθοδοι υπάρχουν στο Mesh αλλά είναι σκαλοπάτια που επιστρέφουν ένα κλώνο του αρχικού πλέγματος χωρίς να εκτελούν την προοριζόμενη λειτουργία τους.
Σημαντικό: union, difference, intersect, και doBoolean είναι στατικές μέθοδοι, όχι μεθόδους στιγμιοτύπου. Καλέστε τις ως Mesh.union(a, b), όχι a.union(b).
| Methods | Τύπος Επιστροφής | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Απόσπασμα: επιστρέφει ένα κλώνο του a. Προορίζεται για ένωση CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Απόσπασμα: επιστρέφει ένα κλώνο του a. Προορίζεται για αφαίρεση CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Απόσπασμα: επιστρέφει ένα κλώνο του a. Προορίζεται για τομή CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Απόσπασμα: επιστρέφει ένα κλώνο του a. Προορίζεται για γενικό CSG με μετασχηματισμούς. |
optimize(boolean removeVertices) | Mesh | Stub: επιστρέφει ένα clone. Τέσσερις υπερφορτώσεις παραμέτρων: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: επιστρέφει ένα clone. Εναλλακτικό σημείο εισόδου βελτιστοποίησης. |