Mesh — Aspose.3D FOSS for Java

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

Mesh stochează geometria poligonului ca o listă de puncte de control (poziții ale vârfurilor) și o listă de fețe ale poligonului. Fiecare față a poligonului este o listă de indici cu bază zero în matricea de puncte de control. Fețele pot fi triunghiuri, cvadrilaterale sau poligoane cu aritate mai mare. Date suplimentare per‑vârf – normale, coordonate UV, culori ale vârfului – sunt atașate ca VertexElement straturi.

public class Mesh extends Geometry

Methods

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


Methods

Construiește o rețea (mesh) de un singur triunghi de la 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");

Construiește o rețea quad (observație: triangulate() este un stub — vezi avertismentul de mai jos):

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()Matricea poziţiilor vârfurilor. Fiecare intrare este un Vector4(x, y, z, w) unde w este 1.0 pentru datele de poziție. Adăugați vârfuri apelând add() pe lista returnată.
polygonCountintgetPolygonCount()Numărul de fețe poligonale definite pe această plasă.
polygonsList<int[]>getPolygons()Toate definițiile fețelor ca o listă de matrici de indici. Fiecare matrice internă conține indicii vârfurilor (în controlPoints) pentru o față.
edgesList<Integer>getEdges()Date brute de indici de muchii. În principal pentru utilizare internă și interogări avansate de topologie.
vertexElementsList<VertexElement>getVertexElements()Toate straturile de elemente ale vârfurilor atașate în prezent acestui mesh (normale, UV-uri, culori etc.).
visiblebooleangetVisible()setVisible(boolean)Methods false, mesh-ul este ascuns în vizualizatoare care respectă vizibilitatea.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Dacă acest mesh proiectează umbre în randatoare care suportă hărți de umbre.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Dacă acest mesh primește umbre de la alte geometrii care proiectează umbre.

Methods

createPolygon(int... indices)

Definește o nouă față poligonală furnizând indicii vârfurilor în ordine. Indicii fac referire la pozițiile în getControlPoints(). Acceptă trei sau mai mulți indici pentru triunghiuri, cvadrilaturi și n-goni.

MethodsMethodsMethods
indicesint...Argumente de indici de vârf în ordine de înfășurare (de obicei în sens trigonometric când sunt privite din exterior).

Returnează: 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: Returnează o clonă a rețelei originale. Este destinată să împartă toate poligoanele în triunghiuri utilizând triangulația tip fan, dar logica reală de triangulare nu este încă implementată. Rețeaua originală nu este modificată.

Returnează: Mesh – o clonă a rețelei originale (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()

Returnează acest Mesh ca un Mesh instanță. Pentru Mesh obiecte, aceasta este o operație de identitate (returnează this). Definit pe Geometry clasa de bază pentru a oferi o interfață uniformă de conversie când se lucrează cu generice Geometry referințe.

Returnează: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Adaugă un nou VertexElement layer de tipul specificat la mesh. Folosește-l pentru a atașa normale, tangente, binormale, culori de vârf și grupuri de netezire.

MethodsMethodsMethods
elementTypeVertexElementTypeTipul de date pe care îl conține acest layer (de exemplu,., VertexElementType.NORMAL).
mappingModeMappingModeCum se mapează datele pe geometrie: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc.
referenceModeReferenceModeCum sunt folosiți indices: DIRECT sau INDEX_TO_DIRECT.

Returnează: 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)

Adaugă un strat de coordonate UV la mesh. Aceasta este metoda preferată pentru atașarea datelor de coordonate de textură.

MethodsMethodsMethods
uvMappingTextureMappingScopul canalului UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc.
mappingModeMappingModeCum se mapă UV-urile la elementele geometriei.
referenceModeReferenceModeMod de indexare: DIRECT sau INDEX_TO_DIRECT.

Returnează: 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
);

Metode Boolean și de Optimizare (Stub-uri)

Următoarele metode există pe Mesh dar sunt stub-uri care returnează o clonă a rețelei originale fără a efectua operația lor intenționată.

Important: union, difference, intersect, și doBoolean sunt metode statice, nu metode de instanță. Apelă-le ca Mesh.union(a, b), nu a.union(b).

MethodsTip de returnareMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: returnează o clonă a a. Destinat pentru uniunea CSG.
static Mesh.difference(Mesh a, Mesh b)MeshStub: returnează o clonă a a. Destinat pentru scăderea CSG.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: returnează o clonă a a. Destinat pentru intersecția CSG.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: returnează o clonă a a. Destinat pentru CSG general cu transformări.
optimize(boolean removeVertices)MeshStub: returnează o clonă. Suprasarcini cu patru parametri: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: returnează o clonă. Punct de intrare alternativ pentru optimizare.

Vezi și

 Română