Mesh — Aspose.3D FOSS for Java
Paket: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh lagrar polygongeometri som en lista av kontrollpunkter (vertex positions) och en lista av polygonytor. Varje polygonyta är en lista av nollbaserade index i kontrollpunktsarrayen. Ytor kan vara trianglar, fyrhörningar eller polygoner med högre aritet. Ytterligare per-vertex-data – normals, UV coordinates, vertex colours – bifogas som VertexElement lager.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Bygg ett enstaka triangel‑mesh från grunden:
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 ett fyrkant‑mesh (obs: triangulate() är en stub — se varningen nedan):
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. Varje post är en Vector4(x, y, z, w) var w är 1.0 för positionsdata. Lägg till vertexar genom att anropa add() på den returnerade listan. |
polygonCount | int | getPolygonCount() | – | Antal polygonytor som definierats på detta mesh. |
polygons | List<int[]> | getPolygons() | – | Alla ansiktsdefinitioner som en lista av indexarrayer. Varje inre array innehåller vertexindexen (in i controlPoints) för ett ansikte. |
edges | List<Integer> | getEdges() | – | Rå kantindexdata. Främst för internt bruk och avancerade topologiförfrågningar. |
vertexElements | List<VertexElement> | getVertexElements() | – | Alla vertexelementlager som för närvarande är fästa vid detta mesh (normals, UVs, färger, etc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, meshen är dold i visare som respekterar synlighet. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Om detta mesh kastar skuggor i renderare som stödjer skuggkartor. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Om detta mesh tar emot skuggor från annan skuggkastande geometri. |
Methods
createPolygon(int... indices)
Definiera ett nytt polygonansikte genom att ange vertexindexen i ordning. Indexen refererar till positioner i getControlPoints(). Accepterar tre eller fler index för trianglar, fyrhörningar och n-goner.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Vertexindexargument i lindningsordning (vanligtvis moturs när de ses från utsidan). |
Returnerar: 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: Returnerar en klon av den ursprungliga meshen. Avsedd att dela alla polygoner i trianglar med hjälp av fan-triangulering, men den faktiska trianguleringslogiken är ännu inte implementerad. Den ursprungliga meshen modifieras inte.
Returnerar: Mesh – en klon av den ursprungliga meshen (stub-beteende).
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()
Returnera detta Mesh som en Mesh instans. För Mesh objekt är detta en identitetsoperation (returnerar this). Definierad på den Geometry bas-klassen för att tillhandahålla ett enhetligt konverteringsgränssnitt när man arbetar med generiska Geometry referenser.
Returnerar: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Lägg till en ny VertexElement lager av den angivna typen till meshen. Använd detta för att fästa normaler, tangenter, binormaler, vertex-färger och mjukgöringsgrupper.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Typen av data som detta lager innehåller (t.ex., VertexElementType.NORMAL). |
mappingMode | MappingMode | Hur data mappas till geometri: CONTROL_POINT, POLYGON_VERTEX, POLYGON, osv. |
referenceMode | ReferenceMode | Hur index används: DIRECT eller INDEX_TO_DIRECT. |
Returnerar: 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)
Lägg till ett UV-koordinatlager till meshen. Detta är den föredragna metoden för att fästa texturkoordinatdata.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Syftet med UV-kanalen: DIFFUSE, SPECULAR, NORMAL, AMBIENT, osv. |
mappingMode | MappingMode | Hur UV:er mappar till geometrielement. |
referenceMode | ReferenceMode | Indexeringsläge: DIRECT eller INDEX_TO_DIRECT. |
Returnerar: 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
);Booleska och optimeringsmetoder (stubbar)
Följande metoder finns på Mesh men är stubbar som returnerar en klon av den ursprungliga meshen utan att utföra deras avsedda operation.
Viktigt: union, difference, intersect, och doBoolean är statiska metoder, inte instansmetoder. Anropa dem som Mesh.union(a, b), inte a.union(b).
| Methods | Returtyp | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: returnerar en klon av a. Avsedd för CSG-union. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: returnerar en klon av a. Avsedd för CSG-subtraktion. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: returnerar en klon av a. Avsedd för CSG-intersektion. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: returnerar en klon av a. Avsedd för generell CSG med transformationer. |
optimize(boolean removeVertices) | Mesh | Stub: returnerar en klon. Fyra parameteröverladdningar: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: returnerar en klon. Alternativ optimeringsingångspunkt. |