Mesh — Aspose.3D FOSS for Java
Pacchetto: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh memorizza la geometria del poligono come un elenco di control points (vertex positions) e un elenco di polygon faces. Ogni polygon face è un elenco di zero-based indices nell’array dei control points. Le faces possono essere triangles, quads o polygon con arità più alta. Dati aggiuntivi per-vertex – normals, UV coordinates, vertex colours – sono collegati come VertexElement livelli.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Crea una mesh a triangolo singolo da 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");Crea una mesh a quadrilatero (nota: triangulate() è un stub — vedi l’avviso sotto):
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() | – | Array di posizioni dei vertici. Ogni voce è un Vector4(x, y, z, w) dove w è 1.0 per i dati di posizione. Aggiungi i vertici chiamando add() sulla lista restituita. |
polygonCount | int | getPolygonCount() | – | Numero di facce poligonali definite su questa mesh. |
polygons | List<int[]> | getPolygons() | – | Tutte le definizioni delle facce come un elenco di array di indici. Ogni array interno contiene gli indici dei vertici (in controlPoints) per una faccia. |
edges | List<Integer> | getEdges() | – | Dati grezzi degli indici dei bordi. Principalmente per uso interno e query di topologia avanzata. |
vertexElements | List<VertexElement> | getVertexElements() | – | Tutti i layer di elementi dei vertici attualmente collegati a questa mesh (normali, UV, colori, ecc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, la mesh è nascosta nei visualizzatori che rispettano la visibilità. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Se questa mesh proietta ombre nei renderer che supportano le shadow map. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Se questa mesh riceve ombre da altre geometrie che proiettano ombre. |
Methods
createPolygon(int... indices)
Definisci una nuova faccia poligonale fornendo gli indici dei vertici in ordine. Gli indici fanno riferimento alle posizioni in getControlPoints(). Accetta tre o più indici per triangoli, quadrilateri e n-gon.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Argomenti di indice dei vertici in ordine di avvolgimento (tipicamente in senso antiorario quando visti dall’esterno). |
Restituisce: 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: Restituisce una copia della mesh originale. È destinata a suddividere tutti i poligoni in triangoli usando la triangolazione a ventaglio, ma la logica di triangolazione effettiva non è ancora implementata. La mesh originale non viene modificata.
Restituisce: Mesh – una copia della mesh originale (comportamento 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()
Restituisci questo Mesh come un Mesh istanza. Per Mesh gli oggetti questa è un’operazione di identità (restituisce this). Definito sulla Geometry classe base per fornire un’interfaccia di conversione uniforme quando si lavora con generici Geometry riferimenti.
Restituisce: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Aggiungi un nuovo VertexElement livello del tipo specificato alla mesh. Usa questo per allegare normals, tangents, binormals, vertex colours e smoothing groups.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Il tipo di dati che questo livello contiene (ad es., VertexElementType.NORMAL). |
mappingMode | MappingMode | Come i dati si mappano alla geometria: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ecc. |
referenceMode | ReferenceMode | Come vengono usati gli indici: DIRECT o INDEX_TO_DIRECT. |
Restituisce: 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)
Aggiungi un livello di coordinate UV alla mesh. Questo è il metodo consigliato per associare i dati delle coordinate di texture.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Lo scopo del canale UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, ecc. |
mappingMode | MappingMode | Come le UV mappano gli elementi della geometria. |
referenceMode | ReferenceMode | Modalità di indicizzazione: DIRECT o INDEX_TO_DIRECT. |
Restituisce: 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
);Metodi Booleani e di Ottimizzazione (Stub)
I seguenti metodi esistono su Mesh ma sono stub che restituiscono una copia della mesh originale senza eseguire l’operazione prevista.
Importante: union, difference, intersect, e doBoolean sono metodi statici, non metodi di istanza. Chiamali come Mesh.union(a, b), non a.union(b).
| Methods | Tipo di ritorno | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: restituisce una copia di a. Destinato all’unione CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: restituisce una copia di a. Destinato alla sottrazione CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: restituisce una copia di a. Destinato all’intersezione CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: restituisce una copia di a. Destinato a CSG generico con trasformazioni. |
optimize(boolean removeVertices) | Mesh | Stub: restituisce un clone. Quattro overload con parametri: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: restituisce un clone. Punto di ingresso alternativo per l’ottimizzazione. |