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 GeometryMethods
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
| Methods | Methods | Methods | Methods | Methods |
|---|---|---|---|---|
controlPoints | List<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. |
polygonCount | int | getPolygonCount() | – | Verkossa määriteltyjen monikulmion tahkojen määrä. |
polygons | List<int[]> | getPolygons() | – | Kaikki tahkomääritelmät listana indeksitaulukoita. Jokainen sisempi taulukko sisältää solmujen indeksit (kohteeseen controlPoints) yhdelle tahkolle. |
edges | List<Integer> | getEdges() | – | Raaka reunojen indeksidata. Pääasiassa sisäiseen käyttöön ja kehittyneisiin topologia‑kyselyihin. |
vertexElements | List<VertexElement> | getVertexElements() | – | Kaikki solmu‑elementtikerrokset, jotka on tällä hetkellä liitetty tähän verkkoon (normaalit, UV:t, värit jne.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, verkko on piilotettu katselimissa, jotka kunnioittavat näkyvyyttä. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Määrittää, piirtääkö tämä verkko varjoja renderöijissä, jotka tukevat varjokarttoja. |
receiveShadows | boolean | getReceiveShadows() | 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.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | 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()); // 2triangulate()
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.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Tämän kerroksen sisältämän datan tyyppi (esim., VertexElementType.NORMAL). |
mappingMode | MappingMode | Kuinka data kartoitetaan geometriaan: CONTROL_POINT, POLYGON_VERTEX, POLYGON, jne. |
referenceMode | ReferenceMode | Miten 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.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | UV-kanavan tarkoitus: DIFFUSE, SPECULAR, NORMAL, AMBIENT, jne. |
mappingMode | MappingMode | Miten UV:t kartoittuvat geometrian elementteihin. |
referenceMode | ReferenceMode | Indeksointitila: 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).
| Methods | Paluutyyppi | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: palauttaa kloonin a. Tarkoitettu CSG-yhdisteelle. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: palauttaa kloonin a. Tarkoitettu CSG-vähennökselle. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: palauttaa kloonin a. Tarkoitettu CSG-leikkaukseen. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: palauttaa kloonin a. Tarkoitettu yleiseen CSG:hen, jossa on transformaatioita. |
optimize(boolean removeVertices) | Mesh | Stub: palauttaa kloonin. Neljä parametrin ylikuormitusta: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: palauttaa kloonin. Vaihtoehtoinen optimoinnin sisäänkäynti. |