Mesh — Aspose.3D FOSS for Java

Pakke: com.aspose.threed (aspose-3d-foss 26.1.0)

Mesh lagrer polygongeometri som en liste over kontrollpunkter (vertex‑posisjoner) og en liste over polygonflater. Hver polygonflate er en liste med null‑baserte indekser inn i kontrollpunkts‑arrayen. Flater kan være trekanter, firkanter eller polygoner med høyere aritet. Ekstra per‑vertex‑data – normaler, UV‑koordinater, vertex‑farger – festes som VertexElement lag.

public class Mesh extends Geometry

Methods

A3DObject -> SceneObject -> Entity -> Geometry -> Mesh


Methods

Bygg et enkelt trekant‑mesh fra bunnen av:

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");

Bygg et kvadrat‑mesh (merk: triangulate() er en stub — se advarselen 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‑posisjonsarray. Hvert element er en Vector4(x, y, z, w) hvor w er 1.0 for posisjonsdata. Legg til vertexer ved å kalle add() på den returnerte listen.
polygonCountintgetPolygonCount()Antall polygonflater definert på dette nettet.
polygonsList<int[]>getPolygons()Alle flatedefinisjoner som en liste av indeks‑arrayer. Hver indre array inneholder vertex‑indeksene (inn i controlPoints) for en flate.
edgesList<Integer>getEdges()Rå kant‑indeksdata. Primært for intern bruk og avanserte topologi‑spørringer.
vertexElementsList<VertexElement>getVertexElements()Alle vertex‑elementlag som for øyeblikket er festet til dette nettet (normaler, UV‑er, farger, osv.).
visiblebooleangetVisible()setVisible(boolean)Methods false, nettet er skjult i visningsprogrammer som respekterer synlighet.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Om dette nettet kaster skygger i renderere som støtter skyggekart.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Om dette mesh-et mottar skygger fra annen skyggekastende geometri.

Methods

createPolygon(int... indices)

Definer et nytt polygon‑flatede ved å oppgi vertex‑indeksene i rekkefølge. Indeksene refererer til posisjoner i getControlPoints(). Aksepterer tre eller flere indekser for trekanter, firkanter og n‑gons.

MethodsMethodsMethods
indicesint...Vertex‑indeksargumenter i winding order (vanligvis mot klokken når de ses fra utsiden).

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 klone av den opprinnelige mesh-en. Tenkt å splitte alle polygoner i trekanter ved hjelp av fan-triangulering, men den faktiske trianguleringslogikken er ennå ikke implementert. Den opprinnelige mesh-en blir ikke endret.

Returnerer: Mesh – en klone av den opprinnelige mesh-en (stub-oppførsel).

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 identitetsoperasjon (returnerer this) Geometry Definert på den Geometry basisklasse for å tilby et ensartet konverteringsgrensesnitt når man arbeider med generiske referanser.

Returnerer: Mesh

import com.aspose.threed.*;

Mesh ensureMesh(Geometry geom) {
    return geom.toMesh();
}

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Legg til en ny VertexElement lag av den angitte typen til mesh-en. Bruk dette for å legge til normaler, tangenter, binormaler, vertex-farger og glatthetsgrupper.

MethodsMethodsMethods
elementTypeVertexElementTypeTypen data dette laget inneholder (f.eks.,)., VertexElementType.NORMAL).
mappingModeMappingModeHvordan dataene kartlegges til geometri: CONTROL_POINT, POLYGON_VERTEX, POLYGON, osv.
referenceModeReferenceModeHvordan indekser brukes: 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)

Legg til et UV-koordinatlag i mesh-en. Dette er den foretrukne metoden for å knytte teksturkoordinatdata.

MethodsMethodsMethods
uvMappingTextureMappingFormålet med UV-kanalen: DIFFUSE, SPECULAR, NORMAL, AMBIENT, osv.
mappingModeMappingModeHvordan UV-er kartlegges til geometrielementer.
referenceModeReferenceModeIndekseringsmodus: 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
);

Boolske og optimaliseringsmetoder (stubber)

Følgende metoder finnes på Mesh men er stubber som returnerer en klone av den opprinnelige mesh-en uten å utføre den tiltenkte operasjonen.

Viktig: union, difference, intersect, og doBoolean er statiske metoder, ikke instansmetoder. Kall dem som Mesh.union(a, b), ikke a.union(b).

MethodsReturtypeMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: returnerer en klone av a. Beregnet for CSG-union.
static Mesh.difference(Mesh a, Mesh b)MeshStub: returnerer en klone av a. Beregnet for CSG-subtraksjon.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: returnerer en klone av a. Beregnet for CSG-interseksjon.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: returnerer en klone av a. Beregnet for generell CSG med transformasjoner.
optimize(boolean removeVertices)MeshStub: returnerer en klone. Fire parameteroverbelastninger: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: returnerer en klone. Alternativ optimaliseringsinngangspunkt.

Se også

 Norsk