Mesh — Aspose.3D FOSS for Java

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

Mesh saugo daugiakampio geometriją kaip valdymo taškų (viršūnių pozicijų) sąrašą ir daugiakampio veidų sąrašą. Kiekvienas daugiakampio veidas yra nulinio indekso indeksų sąrašas į valdymo taškų masyvą. Veidai gali būti trikampiai, keturkampiai arba didesnės aritmetikos daugiakampiai. Papildomi duomenys vienam viršūnei – normalių, UV koordinatės, viršūnių spalvos – pridedami kaip VertexElement sluoksniai.

public class Mesh extends Geometry

Methods

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


Methods

Sukurkite vieną trikampio tinklelį nuo nulio:

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

Sukurkite kvadrato tinklelį (pastaba: triangulate() yra stub — žiūrėkite įspėjimą žemiau):

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()Viršūnės pozicijų masyvas. Kiekvienas įrašas yra Vector4(x, y, z, w) kur w yra 1.0 pozicijos duomenims. Pridėkite viršūnes kviesdami add() grąžintame sąraše.
polygonCountintgetPolygonCount()Daugiakampio veidų skaičius, apibrėžtas šiame tinklelyje.
polygonsList<int[]>getPolygons()Visi veidų apibrėžimai kaip indeksų masyvų sąrašas. Kiekvienas vidinis masyvas saugo viršūnių indeksus (į controlPoints).
edgesList<Integer>getEdges()Neapdoroti kraštų indeksų duomenys. Pagrindinė naudoti vidiniam naudojimui ir sudėtingoms topologijos užklausoms.
vertexElementsList<VertexElement>getVertexElements()Visi viršūnių elementų sluoksniai, šiuo metu prijungti prie šio tinklelio (normalių, UV, spalvų ir kt.).
visiblebooleangetVisible()setVisible(boolean)Methods false, tinklelį slepia peržiūros programos, kurios gerbia matomumą.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Ar šis tinklelį meta šešėlius renderiuoklėse, kurios palaiko šešėlių žemėlapius.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Ar šis tinklelis gauna šešėlius iš kitos šešėlius meta geometrijos.

Methods

createPolygon(int... indices)

Apibrėžkite naują daugiakampio paviršių pateikdami viršūnių indeksus tvarka. Indeksai nurodo pozicijas getControlPoints(). Priima tris ar daugiau indeksų trikampiams, kvadratams ir n‑kampiams.

MethodsMethodsMethods
indicesint...Viršūnių indekso argumentai vėjimo tvarka (dažniausiai prieš laikrodžio rodyklę, kai žiūrima iš išorės).

Grąžina: 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()

Stubas: Grąžina originalaus tinklelio kopiją. Skirta suskaidyti visas daugiakampes į trikampius naudojant šakų trianguliaciją, tačiau faktinė trianguliacijos logika dar neįgyvendinta. Originalus tinklelis nepakinta.

Grąžina: Mesh – originalaus tinklelio kopija (stub elgsena).

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

Grąžink šį Mesh kaip Mesh objektas. Dėl Mesh objektų tai yra identiškumo operacija (grąžina this) Geometry bazinėje klasėje, kad būtų suteikta vienoda konvertavimo sąsaja dirbant su bendriniais Geometry referencijomis.

Grąžina: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Pridėkite naują VertexElement sluoksnį nurodyto tipo prie tinklelio. Naudokite tai norėdami pridėti normalės, tangentes, binormales, viršūnių spalvas ir glotninimo grupes.

MethodsMethodsMethods
elementTypeVertexElementTypeŠio sluoksnio duomenų tipas (pvz.,)., VertexElementType.NORMAL).
mappingModeMappingModeKaip duomenys susiejami su geometrija: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ir t.t.
referenceModeReferenceModeKaip naudojami indeksai: DIRECT arba INDEX_TO_DIRECT.

Grąžina: 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)

Pridėkite UV koordinatų sluoksnį prie tinklelio. Tai yra pageidautinas metodas tekstūros koordinatų duomenims prijungti.

MethodsMethodsMethods
uvMappingTextureMappingUV kanalo paskirtis: DIFFUSE, SPECULAR, NORMAL, AMBIENT, ir t.t.
mappingModeMappingModeKaip UV susiejami su geometrijos elementais.
referenceModeReferenceModeIndeksavimo režimas: DIRECT arba INDEX_TO_DIRECT.

Grąžina: 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
);

Loginiai ir optimizavimo metodai (Stubai)

Toliau pateikti metodai egzistuoja Mesh bet yra stubai kurie grąžina originalaus mesh kloną, neįvykdydami numatytos operacijos.

Svarbu: union, difference, intersect, ir doBoolean yra statiniai metodai, ne egzemplioriaus metodai. Kvieskite juos kaip Mesh.union(a, b), ne a.union(b).

MethodsGrąžinimo tipasMethods
static Mesh.union(Mesh a, Mesh b)MeshStubas: grąžina kloną a. Skirta CSG susijungimui.
static Mesh.difference(Mesh a, Mesh b)MeshStubas: grąžina kloną a. Skirta CSG atimčiai.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: grąžina kloną a. Skirta CSG sankirčiai.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: grąžina kloną a. Skirta bendram CSG su transformacijomis.
optimize(boolean removeVertices)MeshStubas: grąžina kopiją. Keturių parametrų perkrovimai: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStubas: grąžina kopiją. Alternatyvi optimizacijos įėjimo vieta.

Žr. taip pat

 Lietuvių