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 Geometry

Methods

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

MethodsMethodsMethodsMethodsMethods
controlPointsList<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.
polygonCountintgetPolygonCount()Antal polygonflader defineret på dette mesh.
polygonsList<int[]>getPolygons()Alle flade-definitioner som en liste af indeks‑arrays. Hvert indre array indeholder vertex‑indeksene (i controlPoints) for én flade.
edgesList<Integer>getEdges()Rå kant‑indeksdata. Primært til intern brug og avancerede topologi‑forespørgsler.
vertexElementsList<VertexElement>getVertexElements()Alle vertex‑elementlag, der i øjeblikket er knyttet til dette mesh (normals, UVs, farver osv.).
visiblebooleangetVisible()setVisible(boolean)Methods false, mesh’et er skjult i visningsprogrammer, der respekterer synlighed.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Om dette mesh kaster skygger i renderere, der understøtter shadow maps.
receiveShadowsbooleangetReceiveShadows()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.

MethodsMethodsMethods
indicesint...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());   // 2

triangulate()

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.

MethodsMethodsMethods
elementTypeVertexElementTypeTypen af data dette lag indeholder (f.eks., VertexElementType.NORMAL).
mappingModeMappingModeHvordan dataene kortlægges til geometri: CONTROL_POINT, POLYGON_VERTEX, POLYGON, osv.
referenceModeReferenceModeHvordan 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.

MethodsMethodsMethods
uvMappingTextureMappingFormålet med UV-kanalen: DIFFUSE, SPECULAR, NORMAL, AMBIENT, osv.
mappingModeMappingModeHvordan UV’er kortlægges til geometrieelementer.
referenceModeReferenceModeIndekseringstilstand: 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).

MethodsReturtypeMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: returnerer en klon af a. Beregnet til CSG-union.
static Mesh.difference(Mesh a, Mesh b)MeshStub: returnerer en klon af a. Beregnet til CSG-subtraktion.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: returnerer en klon af a. Beregnet til CSG-intersection.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: returnerer en klon af a. Beregnet til generel CSG med transformationer.
optimize(boolean removeVertices)MeshStub: returnerer en klon. Fire parameteroverbelastninger: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: returnerer en klon. Alternativ optimeringsindgangspunkt.

Se også

 Dansk