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 Geometry

Methods

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

MethodsMethodsMethodsMethodsMethods
controlPointsList<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.
polygonCountintgetPolygonCount()Numero di facce poligonali definite su questa mesh.
polygonsList<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.
edgesList<Integer>getEdges()Dati grezzi degli indici dei bordi. Principalmente per uso interno e query di topologia avanzata.
vertexElementsList<VertexElement>getVertexElements()Tutti i layer di elementi dei vertici attualmente collegati a questa mesh (normali, UV, colori, ecc.).
visiblebooleangetVisible()setVisible(boolean)Methods false, la mesh è nascosta nei visualizzatori che rispettano la visibilità.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Se questa mesh proietta ombre nei renderer che supportano le shadow map.
receiveShadowsbooleangetReceiveShadows()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.

MethodsMethodsMethods
indicesint...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());   // 2

triangulate()

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.

MethodsMethodsMethods
elementTypeVertexElementTypeIl tipo di dati che questo livello contiene (ad es., VertexElementType.NORMAL).
mappingModeMappingModeCome i dati si mappano alla geometria: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ecc.
referenceModeReferenceModeCome 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.

MethodsMethodsMethods
uvMappingTextureMappingLo scopo del canale UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, ecc.
mappingModeMappingModeCome le UV mappano gli elementi della geometria.
referenceModeReferenceModeModalità 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).

MethodsTipo di ritornoMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: restituisce una copia di a. Destinato all’unione CSG.
static Mesh.difference(Mesh a, Mesh b)MeshStub: restituisce una copia di a. Destinato alla sottrazione CSG.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: restituisce una copia di a. Destinato all’intersezione CSG.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: restituisce una copia di a. Destinato a CSG generico con trasformazioni.
optimize(boolean removeVertices)MeshStub: restituisce un clone. Quattro overload con parametri: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: restituisce un clone. Punto di ingresso alternativo per l’ottimizzazione.

Vedi anche

 Italiano