Mesh — Aspose.3D FOSS for Java

Balík: com.aspose.threed (aspose-3d-foss 26.1.0)

Mesh ukladá geometriu polygonov ako zoznam kontrolných bodov (pozície vrcholov) a zoznam polygonových plôch. Každá polygonová plocha je zoznamom nulovo‑základných indexov do poľa kontrolných bodov. Plochy môžu byť trojuholníky, štvoruholníky alebo polygonov vyššej arity. Ďalšie údaje na vrchol – normály, UV súradnice, farby vrcholov – sú pripojené ako VertexElement vrstvy.

public class Mesh extends Geometry

Methods

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


Methods

Vytvorte mesh s jedným trojuholníkom od začiatku:

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");

Vytvorte quad mesh (poznámka: triangulate() je stub — pozri varovanie nižšie):

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()Pole pozícií vrcholov. Každý záznam je Vector4(x, y, z, w) kde w je 1.0 pre údaje o pozícii. Pridajte vrcholy volaním add() na vrátenom zozname.
polygonCountintgetPolygonCount()Počet polygonových plôch definovaných na tejto sieti.
polygonsList<int[]>getPolygons()Všetky definície plôch ako zoznam polí indexov. Každé vnútorné pole obsahuje indexy vrcholov (do controlPoints) pre jednu plochu.
edgesList<Integer>getEdges()Nehodnotená (raw) dátová sada indexov hrán. Primárne pre interné použitie a pokročilé dotazy na topológiu.
vertexElementsList<VertexElement>getVertexElements()Všetky vrstvy elementov vrcholov momentálne pripojené k tejto sieti (normály, UV, farby, atď.).
visiblebooleangetVisible()setVisible(boolean)Methods false, sieť je skrytá v prehliadačoch, ktoré rešpektujú viditeľnosť.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Určuje, či táto sieť vrhá tiene v rendereroch, ktoré podporujú tieňové mapy.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Či tento mesh prijíma tiene od inej geometrie, ktorá vrhá tiene.

Methods

createPolygon(int... indices)

Definujte novú polygonálnu plochu poskytnutím indexov vrcholov v poradí. Indexy odkazujú na pozície v getControlPoints(). Prijíma tri alebo viac indexov pre trojuholníky, štvoruholníky a n‑góny.

MethodsMethodsMethods
indicesint...Argumenty indexov vrcholov v poradí vinutia (zvyčajne proti smeru hodinových ručičiek pri pohľade z vonkajšej strany).

Vráti: 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()

Zástupný kód: Vráti kópiu pôvodnej siete. Je určené na rozdelenie všetkých polygónov na trojuholníky pomocou fan triangulácie, ale skutočná logika triangulácie ešte nie je implementovaná. Pôvodná sieť nie je upravená.

Vráti: Mesh – kópiu pôvodnej siete (správanie stubu).

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()

Vráť tento Mesh ako Mesh inštanciu. Pre Mesh objekty je to identická operácia (vracia this) Geometry Definované na Geometry základnej triede, aby poskytlo jednotné rozhranie konverzie pri práci s generickými referenciami.

Vráti: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Pridajte novú VertexElement vrstvu špecifikovaného typu do siete. Použite to na pripojenie normál, tangenciál, binormál, farieb vrcholov a skupín vyhladzovania.

MethodsMethodsMethods
elementTypeVertexElementTypeTyp dát, ktoré táto vrstva obsahuje (napr.,)., VertexElementType.NORMAL).
mappingModeMappingModeAko sa dáta mapujú na geometriu: CONTROL_POINT, POLYGON_VERTEX, POLYGON, atď.
referenceModeReferenceModeAko sa používajú indexy: DIRECT alebo INDEX_TO_DIRECT.

Vráti: 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)

Pridajte vrstvu UV súradníc do siete. Toto je preferovaný spôsob, ako pripojiť dáta textúrových súradníc.

MethodsMethodsMethods
uvMappingTextureMappingÚčel UV kanála: DIFFUSE, SPECULAR, NORMAL, AMBIENT, atď.
mappingModeMappingModeAko sa UV mapujú na geometrické prvky.
referenceModeReferenceModeRežim indexovania: DIRECT alebo INDEX_TO_DIRECT.

Vráti: 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
);

Boolean a optimalizačné metódy (Stuby)

Nasledujúce metódy existujú na Mesh ale sú zástupné funkcie ktoré vracajú klon pôvodnej mesh bez vykonania ich zamýšľanej operácie.

Dôležité: union, difference, intersect, a doBooleanstatické metódy, nie inštančné metódy. Volajte ich ako Mesh.union(a, b), nie a.union(b).

MethodsNávratový typMethods
static Mesh.union(Mesh a, Mesh b)MeshZástupný kód: vracia kópiu a. Určené pre CSG zjednotenie.
static Mesh.difference(Mesh a, Mesh b)MeshZástupný kód: vracia kópiu a. Určené pre CSG odčítanie.
static Mesh.intersect(Mesh a, Mesh b)MeshZástupný kód: vracia kópiu a. Určené pre CSG prienik.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshZástupný kód: vracia kópiu a. Určené pre všeobecný CSG s transformáciami.
optimize(boolean removeVertices)MeshZástupca: vracia klon. Štyri preťaženia s parametrami: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshZástupca: vracia klon. Alternatívny vstupný bod optimalizácie.

Pozri tiež

 Slovenčina