Mesh — Aspose.3D FOSS for Java

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

Mesh speichert Polygongeometrie als eine Liste von Kontrollpunkten (Scheitelpositionen) und eine Liste von Polygonflächen. Jede Polygonfläche ist eine Liste von nullbasierten Indizes in das Kontrollpunkte‑Array. Flächen können Dreiecke, Vierecke oder Polygone höherer Arität sein. Zusätzliche pro‑Scheitel‑Daten – Normalen, UV‑Koordinaten, Scheitel‑Farben – werden angehängt als VertexElement Schichten.

public class Mesh extends Geometry

Methods

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


Methods

Erstelle ein einzelnes Dreiecks‑Mesh von Grund auf:

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

Erstelle ein Viereck‑Mesh (Hinweis: triangulate() ist ein Stub — siehe Warnung unten):

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-Positionsarray. Jeder Eintrag ist ein Vector4(x, y, z, w) wo w ist 1.0 für Positionsdaten. Füge Scheitelpunkte hinzu, indem du aufrufst add() auf der zurückgegebenen Liste.
polygonCountintgetPolygonCount()Anzahl der auf diesem Mesh definierten Polygonflächen.
polygonsList<int[]>getPolygons()Alle Flächendefinitionen als Liste von Index-Arrays. Jeder innere Array enthält die Scheitelpunktindizes (in controlPoints) für eine Fläche.
edgesList<Integer>getEdges()Rohdaten der Kantindizes. Primär für den internen Gebrauch und erweiterte Topologie‑Abfragen.
vertexElementsList<VertexElement>getVertexElements()Alle Vertex‑Element‑Layer, die derzeit an diesem Mesh angehängt sind (Normalen, UVs, Farben usw.).
visiblebooleangetVisible()setVisible(boolean)Methods false, das Mesh ist in Viewern, die Sichtbarkeit respektieren, verborgen.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Ob dieses Mesh Schatten wirft in Renderern, die Schattenkarten unterstützen.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Ob dieses Mesh Schatten von anderer, Schatten erzeugender Geometrie empfängt.

Methods

createPolygon(int... indices)

Definieren Sie eine neue Polygonfläche, indem Sie die Vertex‑Indizes in Reihenfolge angeben. Die Indizes verweisen auf Positionen in getControlPoints(). Akzeptiert drei oder mehr Indizes für Dreiecke, Vierecke und N‑Gons.

MethodsMethodsMethods
indicesint...Vertex‑Index‑Argumente in Windungsreihenfolge (typischerweise gegen den Uhrzeigersinn, wenn von außen betrachtet).

Rückgabe: 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: Gibt eine Kopie des ursprünglichen Mesh zurück. Vorgesehen, alle Polygone mittels Fächer‑Triangulation in Dreiecke zu zerlegen, aber die eigentliche Triangulationslogik ist noch nicht implementiert. Das ursprüngliche Mesh wird nicht verändert.

Rückgabe: Mesh – eine Kopie des ursprünglichen Mesh (Stub‑Verhalten).

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

Gib dies zurück Mesh als ein Mesh Instanz. Für Mesh Objekte ist dies eine Identitätsoperation (gibt zurück this) Geometry Basisklasse, um eine einheitliche Konvertierungsschnittstelle beim Arbeiten mit generischen Geometry Referenzen.

Rückgabe: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Füge ein neues VertexElement Layer des angegebenen Typs zum Mesh hinzufügen. Verwenden Sie dies, um Normalen, Tangenten, Binormalen, Vertex‑Farben und Glättungsgruppen anzuhängen.

MethodsMethodsMethods
elementTypeVertexElementTypeDie Art der Daten, die dieser Layer enthält (z. B., VertexElementType.NORMAL).
mappingModeMappingModeWie die Daten auf die Geometrie abgebildet werden: CONTROL_POINT, POLYGON_VERTEX, POLYGON, usw.
referenceModeReferenceModeWie Indizes verwendet werden: DIRECT oder INDEX_TO_DIRECT.

Rückgabe: 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)

Fügen Sie dem Mesh eine UV‑Koordinatenschicht hinzu. Dies ist die bevorzugte Methode, um Texturkoordinatendaten anzuhängen.

MethodsMethodsMethods
uvMappingTextureMappingDer Zweck des UV‑Kanals: DIFFUSE, SPECULAR, NORMAL, AMBIENT, usw.
mappingModeMappingModeWie UVs auf Geometrie‑Elemente abgebildet werden.
referenceModeReferenceModeIndexierungsmodus: DIRECT oder INDEX_TO_DIRECT.

Rückgabe: 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
);

Boolesche und Optimierungsmethoden (Stubs)

Die folgenden Methoden existieren auf Mesh sind jedoch Stubs die eine Kopie des ursprünglichen Mesh zurückgeben, ohne ihre beabsichtigte Operation auszuführen.

Wichtig: union, difference, intersect, und doBoolean sind statische Methoden, keine Instanzmethoden. Rufen Sie sie auf als Mesh.union(a, b), nicht a.union(b).

MethodsRückgabetypMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: gibt eine Kopie von a. Für CSG-Union vorgesehen.
static Mesh.difference(Mesh a, Mesh b)MeshStub: gibt eine Kopie von zurück a. Für CSG-Subtraktion vorgesehen.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: gibt eine Kopie von zurück a. Für CSG-Intersection vorgesehen.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: gibt eine Kopie von zurück a. Für allgemeines CSG mit Transformationen vorgesehen.
optimize(boolean removeVertices)MeshStub: gibt eine Kopie zurück. Vier Parameter‑Überladungen: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: gibt eine Kopie zurück. Alternativer Optimierungs‑Einstiegspunkt.

Siehe auch

 Deutsch