Mesh — Aspose.3D FOSS for Java
Paquet: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh emmagatzema la geometria del polígon com una llista de punts de control (posicions dels vèrtex) i una llista de cares del polígon. Cada cara del polígon és una llista d’índexs basats en zero cap a la matriu de punts de control. Les cares poden ser triangles, quàders o polígons d’aritat superior. Dades addicionals per vèrtex — normals, coordenades UV, colors del vèrtex — s’adhereixen com a VertexElement capes.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Construeix una malla de triangle única des de zero:
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");Construeix una malla de quad (nota: triangulate() és un stub — vegeu l’advertència a continuació):
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() | – | Matriu de posicions de vèrtex. Cada entrada és una Vector4(x, y, z, w) on w és 1.0 per a dades de posició. Afegeix vèrtexs cridant add() a la llista retornada. |
polygonCount | int | getPolygonCount() | – | Nombre de cares del polígon definides en aquesta malla. |
polygons | List<int[]> | getPolygons() | – | Totes les definicions de cares com una llista de matrius d’índexs. Cada matriu interna conté els índexs dels vèrtex (cap a controlPoints) per a una cara. |
edges | List<Integer> | getEdges() | – | Dades d’índex d’aresta en brut. Principalment per a ús intern i consultes avançades de topologia. |
vertexElements | List<VertexElement> | getVertexElements() | – | Totes les capes d’elements de vèrtex actualment adjuntes a aquesta malla (normals, UVs, colors, etc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, la malla està oculta en visualitzadors que respecten la visibilitat. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Si aquesta malla projecta ombres en renderitzadors que admeten mapes d’ombres. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Si aquesta malla rep ombres d’altres geometries que projecten ombres. |
Methods
createPolygon(int... indices)
Defineix una nova cara de polígon proporcionant els índexs de vèrtex en ordre. Els índexs fan referència a posicions a getControlPoints(). Accepta tres o més índexs per a triangles, quàders i n-gons.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Arguments d’índex de vèrtex en ordre d’enrotllament (normalment en sentit antihorari quan es veu des de fora). |
Retorna: 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: Retorna una còpia del mesh original. Destinat a dividir tots els polígons en triangles mitjançant triangulació en forma d’ala, però la lògica real de triangulació encara no està implementada. El mesh original no es modifica.
Retorna: Mesh – una còpia del mesh original (comportament stub).
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()
Retorna això Mesh com a Mesh instància. Per a Mesh objectes, això és una operació d’identitat (retorna this) Geometry classe base per proporcionar una interfície de conversió uniforme quan es treballa amb genèrics Geometry referències.
Retorna: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Afegeix un nou VertexElement capa del tipus especificat a la malla. Utilitza-ho per adjuntar normals, tangents, binormals, colors de vèrtex i grups d’allisat.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | El tipus de dades que aquesta capa conté (p. ex., VertexElementType.NORMAL). |
mappingMode | MappingMode | Com es mapegen les dades a la geometria: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc. |
referenceMode | ReferenceMode | Com s’utilitzen els índexs: DIRECT o INDEX_TO_DIRECT. |
Retorna: 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)
Afegeix una capa de coordenades UV a la malla. Aquest és el mètode preferit per adjuntar dades de coordenades de textura.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | La finalitat del canal UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc. |
mappingMode | MappingMode | Com es mapen els UVs als elements de geometria. |
referenceMode | ReferenceMode | Mode d’indexació: DIRECT o INDEX_TO_DIRECT. |
Retorna: 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
);Mètodes booleans i d’optimització (Stubs)
Els mètodes següents existeixen a Mesh però són esquelets que retorna una còpia del mesh original sense realitzar la seva operació prevista.
Important: union, difference, intersect, i doBoolean són mètodes estàtics, no mètodes d’instància. Crida’ls com a Mesh.union(a, b), no a.union(b).
| Methods | Tipus de retorn | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: retorna una còpia de a. Destinat a la unió CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: retorna una còpia de a. Destinat a la sustracció CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: retorna una còpia de a. Destinat a la intersecció CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: retorna una còpia de a. Destinat a CSG general amb transformacions. |
optimize(boolean removeVertices) | Mesh | Stub: retorna un clon. Quatre sobrecàrregues de paràmetres: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: retorna un clon. Punt d’entrada d’optimització alternativa. |