Mesh — Aspose.3D FOSS for Java
Pakke: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh gemmer polygon geometry som en liste over kontrolpunkter (vertex positions) og en liste over polygon faces. Hver polygon face er en liste over nulbaserede indekser i kontrol points-arrayet. Faces kan være triangles, quads eller polygoner med højere aritet. Yderligere per-vertex data – normals, UV coordinates, vertex colours – er vedhæftet som VertexElement lag.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Byg et enkelt trekants‑mesh fra bunden:
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");Byg et firkant‑mesh (bemærk: triangulate() er en stub — se advarsel nedenfor):
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() | – | Vertex position array. Hver indgang er en Vector4(x, y, z, w) hvor w er 1.0 for positionsdata. Tilføj vertexer ved at kalde add() på den returnerede liste. |
polygonCount | int | getPolygonCount() | – | Antal polygonflader defineret på dette mesh. |
polygons | List<int[]> | getPolygons() | – | Alle flade-definitioner som en liste af indeks‑arrays. Hvert indre array indeholder vertex‑indeksene (i controlPoints) for én flade. |
edges | List<Integer> | getEdges() | – | Rå kant‑indeksdata. Primært til intern brug og avancerede topologi‑forespørgsler. |
vertexElements | List<VertexElement> | getVertexElements() | – | Alle vertex‑elementlag, der i øjeblikket er knyttet til dette mesh (normals, UVs, farver osv.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, mesh’et er skjult i visningsprogrammer, der respekterer synlighed. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Om dette mesh kaster skygger i renderere, der understøtter shadow maps. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Om dette mesh modtager skygger fra anden geometry, der kaster skygger. |
Methods
createPolygon(int... indices)
Definér en ny polygonflade ved at angive vertex‑indeksene i rækkefølge. Indeksene refererer til positioner i getControlPoints(). Accepterer tre eller flere indeks for trekanter, quads og n‑gons.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Vertex‑indeksargumenter i winding‑rækkefølge (typisk mod uret, når de ses udefra). |
Returnerer: 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: Returnerer en klon af den oprindelige mesh. Beregnet til at opdele alle polygoner i trekanter ved hjælp af fan‑triangulering, men den faktiske trianguleringslogik er endnu ikke implementeret. Den oprindelige mesh ændres ikke.
Returnerer: Mesh – en klon af den oprindelige mesh (stub‑adfærd).
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()
Returner dette Mesh som en Mesh instans. For Mesh objekter er dette en identitetsoperation (returnerer this). Defineret på den Geometry basisklasse for at give en ensartet konverteringsgrænseflade, når man arbejder med generiske Geometry referencer.
Returnerer: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Tilføj en ny VertexElement lag af den angivne type til mesh’en. Brug dette til at vedhæfte normaler, tangenter, binormaler, vertex‑farver og udjævningsgrupper.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Typen af data dette lag indeholder (f.eks., VertexElementType.NORMAL). |
mappingMode | MappingMode | Hvordan dataene kortlægges til geometri: CONTROL_POINT, POLYGON_VERTEX, POLYGON, osv. |
referenceMode | ReferenceMode | Hvordan indekser bruges: DIRECT eller INDEX_TO_DIRECT. |
Returnerer: 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)
Tilføj et UV-koordinatlager til mesh’et. Dette er den foretrukne metode til at vedhæfte teksturkoordinatdata.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Formålet med UV-kanalen: DIFFUSE, SPECULAR, NORMAL, AMBIENT, osv. |
mappingMode | MappingMode | Hvordan UV’er kortlægges til geometrieelementer. |
referenceMode | ReferenceMode | Indekseringstilstand: DIRECT eller INDEX_TO_DIRECT. |
Returnerer: 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
);Booleske og optimeringsmetoder (stubs)
Følgende metoder findes på Mesh men er stubs som returnerer en klon af den oprindelige mesh uden at udføre deres tilsigtede handling.
Vigtigt: union, difference, intersect, og doBoolean er statiske metoder, ikke instansmetoder. Kald dem som Mesh.union(a, b), ikke a.union(b).
| Methods | Returtype | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: returnerer en klon af a. Beregnet til CSG-union. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: returnerer en klon af a. Beregnet til CSG-subtraktion. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: returnerer en klon af a. Beregnet til CSG-intersection. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: returnerer en klon af a. Beregnet til generel CSG med transformationer. |
optimize(boolean removeVertices) | Mesh | Stub: returnerer en klon. Fire parameteroverbelastninger: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: returnerer en klon. Alternativ optimeringsindgangspunkt. |