Mesh — Aspose.3D FOSS for Java
Pachet: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh stochează geometria poligonului ca o listă de puncte de control (poziții ale vârfurilor) și o listă de fețe ale poligonului. Fiecare față a poligonului este o listă de indici cu bază zero în matricea de puncte de control. Fețele pot fi triunghiuri, cvadrilaterale sau poligoane cu aritate mai mare. Date suplimentare per‑vârf – normale, coordonate UV, culori ale vârfului – sunt atașate ca VertexElement straturi.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Construiește o rețea (mesh) de un singur triunghi de la zero:
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");Construiește o rețea quad (observație: triangulate() este un stub — vezi avertismentul de mai jos):
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() | – | Matricea poziţiilor vârfurilor. Fiecare intrare este un Vector4(x, y, z, w) unde w este 1.0 pentru datele de poziție. Adăugați vârfuri apelând add() pe lista returnată. |
polygonCount | int | getPolygonCount() | – | Numărul de fețe poligonale definite pe această plasă. |
polygons | List<int[]> | getPolygons() | – | Toate definițiile fețelor ca o listă de matrici de indici. Fiecare matrice internă conține indicii vârfurilor (în controlPoints) pentru o față. |
edges | List<Integer> | getEdges() | – | Date brute de indici de muchii. În principal pentru utilizare internă și interogări avansate de topologie. |
vertexElements | List<VertexElement> | getVertexElements() | – | Toate straturile de elemente ale vârfurilor atașate în prezent acestui mesh (normale, UV-uri, culori etc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, mesh-ul este ascuns în vizualizatoare care respectă vizibilitatea. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Dacă acest mesh proiectează umbre în randatoare care suportă hărți de umbre. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Dacă acest mesh primește umbre de la alte geometrii care proiectează umbre. |
Methods
createPolygon(int... indices)
Definește o nouă față poligonală furnizând indicii vârfurilor în ordine. Indicii fac referire la pozițiile în getControlPoints(). Acceptă trei sau mai mulți indici pentru triunghiuri, cvadrilaturi și n-goni.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Argumente de indici de vârf în ordine de înfășurare (de obicei în sens trigonometric când sunt privite din exterior). |
Returnează: 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: Returnează o clonă a rețelei originale. Este destinată să împartă toate poligoanele în triunghiuri utilizând triangulația tip fan, dar logica reală de triangulare nu este încă implementată. Rețeaua originală nu este modificată.
Returnează: Mesh – o clonă a rețelei originale (comportament 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()
Returnează acest Mesh ca un Mesh instanță. Pentru Mesh obiecte, aceasta este o operație de identitate (returnează this). Definit pe Geometry clasa de bază pentru a oferi o interfață uniformă de conversie când se lucrează cu generice Geometry referințe.
Returnează: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Adaugă un nou VertexElement layer de tipul specificat la mesh. Folosește-l pentru a atașa normale, tangente, binormale, culori de vârf și grupuri de netezire.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Tipul de date pe care îl conține acest layer (de exemplu,., VertexElementType.NORMAL). |
mappingMode | MappingMode | Cum se mapează datele pe geometrie: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc. |
referenceMode | ReferenceMode | Cum sunt folosiți indices: DIRECT sau INDEX_TO_DIRECT. |
Returnează: 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)
Adaugă un strat de coordonate UV la mesh. Aceasta este metoda preferată pentru atașarea datelor de coordonate de textură.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Scopul canalului UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc. |
mappingMode | MappingMode | Cum se mapă UV-urile la elementele geometriei. |
referenceMode | ReferenceMode | Mod de indexare: DIRECT sau INDEX_TO_DIRECT. |
Returnează: 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
);Metode Boolean și de Optimizare (Stub-uri)
Următoarele metode există pe Mesh dar sunt stub-uri care returnează o clonă a rețelei originale fără a efectua operația lor intenționată.
Important: union, difference, intersect, și doBoolean sunt metode statice, nu metode de instanță. Apelă-le ca Mesh.union(a, b), nu a.union(b).
| Methods | Tip de returnare | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: returnează o clonă a a. Destinat pentru uniunea CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: returnează o clonă a a. Destinat pentru scăderea CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: returnează o clonă a a. Destinat pentru intersecția CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: returnează o clonă a a. Destinat pentru CSG general cu transformări. |
optimize(boolean removeVertices) | Mesh | Stub: returnează o clonă. Suprasarcini cu patru parametri: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: returnează o clonă. Punct de intrare alternativ pentru optimizare. |