Mesh — Aspose.3D FOSS for Java

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

Mesh slaat polygon geometry op als een lijst van control points (vertex positions) en een lijst van polygon faces. Elke polygon face is een lijst van zero-based indices in de control points array. Faces kunnen triangles, quads, of higher-arity polygons zijn. Additional per-vertex data – normals, UV coordinates, vertex colours – is attached as VertexElement lagen.

public class Mesh extends Geometry

Methods

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


Methods

Bouw een enkel driehoek‑mesh vanaf nul:

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

Bouw een quad‑mesh (opmerking: triangulate() is een stub — zie waarschuwing hieronder):

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-positie-array. Elke invoer is een Vector4(x, y, z, w) waar w is 1.0 voor positiedata. Voeg vertices toe door aan te roepen add() op de geretourneerde lijst.
polygonCountintgetPolygonCount()Aantal polygonvlakken gedefinieerd op dit mesh.
polygonsList<int[]>getPolygons()Alle vlakdefinities als een lijst van indexarrays. Elke binnenste array bevat de vertex‑indices (naar controlPoints) voor één vlak.
edgesList<Integer>getEdges()Ruwe rand‑indexgegevens. Voornamelijk voor intern gebruik en geavanceerde topologie‑query’s.
vertexElementsList<VertexElement>getVertexElements()Alle vertex‑elementlagen die momenteel aan dit mesh zijn gekoppeld (normals, UV’s, kleuren, enz.).
visiblebooleangetVisible()setVisible(boolean)Methods false, de mesh is verborgen in viewers die zichtbaarheid respecteren.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Of dit mesh schaduwen werpt in renderers die schaduwkaarten ondersteunen.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Of dit mesh schaduwen ontvangt van andere schaduwwerpend geometrie.

Methods

createPolygon(int... indices)

Definieer een nieuw polygonvlak door de vertex‑indices in volgorde op te geven. De indices verwijzen naar posities in getControlPoints(). Accepteert drie of meer indices voor driehoeken, quads en n‑gons.

MethodsMethodsMethods
indicesint...Vertex‑indexargumenten in winding‑volgorde (meestal tegen de klok in wanneer bekeken van buitenaf).

Retourneert: 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: Retourneert een kloon van het oorspronkelijke mesh. Bedoeld om alle polygonen te splitsen in driehoeken met behulp van fan‑triangulatie, maar de daadwerkelijke triangulatie‑logica is nog niet geïmplementeerd. Het oorspronkelijke mesh wordt niet gewijzigd.

Retourneert: Mesh – een kloon van het oorspronkelijke mesh (stub‑gedrag).

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()

Retourneer dit Mesh als een Mesh instantie. Voor Mesh objecten is dit een identiteitsoperatie (retourneert this) Geometry Gedefinieerd op de Geometry basisklasse om een uniforme conversie‑interface te bieden bij het werken met generieke.

Retourneert: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Voeg een nieuwe VertexElement laag van het opgegeven type toe aan het mesh. Gebruik dit om normalen, tangenten, binormalen, vertexkleuren en smoothing‑groepen toe te voegen.

MethodsMethodsMethods
elementTypeVertexElementTypeHet type gegevens dat deze laag bevat (bijv., VertexElementType.NORMAL).
mappingModeMappingModeHoe de data wordt gemapt op geometrie: CONTROL_POINT, POLYGON_VERTEX, POLYGON, enz.
referenceModeReferenceModeHoe indexen worden gebruikt: DIRECT of INDEX_TO_DIRECT.

Retourneert: 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)

Voeg een UV‑coördinatenlaag toe aan het mesh. Dit is de voorkeursmethode om textuurcoördinaatgegevens toe te voegen.

MethodsMethodsMethods
uvMappingTextureMappingHet doel van het UV-kanaal: DIFFUSE, SPECULAR, NORMAL, AMBIENT, enz.
mappingModeMappingModeHoe UV’s worden toegewezen aan geometrie-elementen.
referenceModeReferenceModeIndexeringsmodus: DIRECT of INDEX_TO_DIRECT.

Retourneert: 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‑ en optimalisatiemethoden (stubs)

De volgende methoden bestaan op Mesh maar zijn stubs die een kloon van het oorspronkelijke mesh teruggeven zonder hun beoogde bewerking uit te voeren.

Belangrijk: union, difference, intersect, en doBoolean zijn statische methoden, geen instantiemethoden. Roep ze aan als Mesh.union(a, b), niet a.union(b).

MethodsRetourtypeMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: geeft een kloon van terug a. Bedoeld voor CSG-unie.
static Mesh.difference(Mesh a, Mesh b)MeshStub: geeft een kloon van terug a. Bedoeld voor CSG-aftrekking.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: geeft een kloon van terug a. Bedoeld voor CSG-intersectie.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: geeft een kloon van terug a. Bedoeld voor algemene CSG met transformaties.
optimize(boolean removeVertices)MeshStub: geeft een kloon terug. Vier parameter‑overloads: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: geeft een kloon terug. Alternatief optimalisatie‑instappunt.

Zie ook

 Nederlands