Mesh — Aspose.3D FOSS for Java

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

Mesh tallentaa monikulmion geometrian listana ohjauspisteitä (solmupisteet) ja listana monikulmion tahkoja. Jokainen monikulmion tahko on lista nollapohjaisia indeksejä ohjauspisteiden taulukkoon. Tahkot voivat olla kolmioita, nelikulmioita tai korkeamman asteen monikulmioita. Lisäperusolion data – normaalit, UV-koordinaatit, solmujen värit – liitetään VertexElement kerroksina.

public class Mesh extends Geometry

Methods

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


Methods

Rakenna yksittäinen kolmioverkko alusta alkaen:

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

Rakenna nelikulmioverkko (huomaa: triangulate() on testirutiini — katso varoitus alapuolella):

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()Solmupisteiden taulukko. Jokainen alkio on a Vector4(x, y, z, w) jossa w on 1.0 positio‑tietoja varten. Lisää solmuja kutsumalla add() palautetussa listassa.
polygonCountintgetPolygonCount()Verkossa määriteltyjen monikulmion tahkojen määrä.
polygonsList<int[]>getPolygons()Kaikki tahkomääritelmät listana indeksitaulukoita. Jokainen sisempi taulukko sisältää solmujen indeksit (kohteeseen controlPoints) yhdelle tahkolle.
edgesList<Integer>getEdges()Raaka reunojen indeksidata. Pääasiassa sisäiseen käyttöön ja kehittyneisiin topologia‑kyselyihin.
vertexElementsList<VertexElement>getVertexElements()Kaikki solmu‑elementtikerrokset, jotka on tällä hetkellä liitetty tähän verkkoon (normaalit, UV:t, värit jne.).
visiblebooleangetVisible()setVisible(boolean)Methods false, verkko on piilotettu katselimissa, jotka kunnioittavat näkyvyyttä.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Määrittää, piirtääkö tämä verkko varjoja renderöijissä, jotka tukevat varjokarttoja.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Saako tämä verkko varjoja muulta varjoja heittävältä geometrialta.

Methods

createPolygon(int... indices)

Määritä uusi monikulmion pinta antamalla kärkinumerot järjestyksessä. Numerot viittaavat paikkoihin kohteessa getControlPoints(). Hyväksyy kolme tai useampia indeksejä kolmioille, nelikulmioille ja n‑goneille.

MethodsMethodsMethods
indicesint...Kärkinumeron argumentit kierrejärjestyksessä (yleensä vastapäivään katsottuna ulkopuolelta).

Palauttaa: 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: Palauttaa alkuperäisen verkon kloonin. Tarkoitus on jakaa kaikki polygonit kolmioiksi fan‑triangulaatiota käyttäen, mutta varsinaista triangulaatiologiikkaa ei ole vielä toteutettu. Alkuperäistä verkkoa ei muuteta.

Palauttaa: Mesh – alkuperäisen verkon klooni (stub‑käyttäytyminen).

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

Palauta tämä Mesh kuten Mesh instanssi. Kohteille Mesh objekteille tämä on identiteettitoiminto (palauttaa this). Määritelty Geometry perusluokassa tarjoamaan yhtenäisen muunnosrajapinnan työskennellessä geneeristen Geometry viitteiden.

Palauttaa: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Lisää uusi VertexElement kerros määritellyntyyppinen verkkoon. Käytä tätä liittämään normaalit, tangentit, binormaalit, vertex‑värit ja tasoitusryhmät.

MethodsMethodsMethods
elementTypeVertexElementTypeTämän kerroksen sisältämän datan tyyppi (esim., VertexElementType.NORMAL).
mappingModeMappingModeKuinka data kartoitetaan geometriaan: CONTROL_POINT, POLYGON_VERTEX, POLYGON, jne.
referenceModeReferenceModeMiten indeksejä käytetään: DIRECT tai INDEX_TO_DIRECT.

Palauttaa: 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)

Lisää UV-koordinaattilayer verkkoon. Tämä on suositeltu tapa liittää tekstuurikoordinaattitiedot.

MethodsMethodsMethods
uvMappingTextureMappingUV-kanavan tarkoitus: DIFFUSE, SPECULAR, NORMAL, AMBIENT, jne.
mappingModeMappingModeMiten UV:t kartoittuvat geometrian elementteihin.
referenceModeReferenceModeIndeksointitila: DIRECT tai INDEX_TO_DIRECT.

Palauttaa: 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
);

Boolen- ja optimointimenetelmät (Stubit)

Seuraavat metodit ovat olemassa Mesh mutta ovat testirakenteet jotka palauttavat alkuperäisen verkon kloonin suorittamatta niiden suunniteltua toimintoa.

Tärkeää: union, difference, intersect, ja doBoolean ovat staattiset metodit, ei instanssimetodeja. Kutsu niitä muodossa Mesh.union(a, b), ei a.union(b).

MethodsPaluu­tyyppiMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: palauttaa kloonin a. Tarkoitettu CSG-yhdisteelle.
static Mesh.difference(Mesh a, Mesh b)MeshStub: palauttaa kloonin a. Tarkoitettu CSG-vähennökselle.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: palauttaa kloonin a. Tarkoitettu CSG-leikkaukseen.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: palauttaa kloonin a. Tarkoitettu yleiseen CSG:hen, jossa on transformaatioita.
optimize(boolean removeVertices)MeshStub: palauttaa kloonin. Neljä parametrin ylikuormitusta: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: palauttaa kloonin. Vaihtoehtoinen optimoinnin sisäänkäynti.

Katso myös

 Suomi