Mesh — Aspose.3D FOSS for Java
Csomag: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh poligon geometriai adatokat tárol egy vezérlőpontok (csúcspozíciók) listájaként és egy poligon felületek listájaként. Minden poligon felület egy nullától indexelt indexek listája a vezérlőpontok tömbjébe. A felületek lehetnek háromszögek, négyszögek vagy magasabb aritású poligonok. További csúcsonkénti adatok – normálok, UV koordináták, csúcs színek – rétegekként vannak csatolva. VertexElement rétegek.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Építs egy egyszerű háromszög mesh-et a semmiből:
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");Építs egy négyszög mesh-et (megjegyzés: a triangulate() egy helykitöltő — lásd az alábbi figyelmeztetést):
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() | – | Csúcs pozíció tömb. Minden bejegyzés egy Vector4(x, y, z, w) ahol w van 1.0 pozíció adatokhoz. Csúcsokat adhat hozzá a következő hívásával add() az eredményül kapott listán. |
polygonCount | int | getPolygonCount() | – | A hálón definiált poligon felületek száma. |
polygons | List<int[]> | getPolygons() | – | Minden felületdefiníció egy index tömbök listájaként. Minden belső tömb a csúcs indexeket tartalmazza (a controlPoints). |
edges | List<Integer> | getEdges() | – | Nyers él index adatok. Elsősorban belső használatra és fejlett topológiai lekérdezésekhez. |
vertexElements | List<VertexElement> | getVertexElements() | – | Az összes csúcs elem réteg, amely jelenleg ehhez a hálóhoz csatolva van (normálok, UV-k, színek stb.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, a háló rejtett a láthatóságot tiszteletben tartó megjelenítőkben. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Azt jelzi, hogy ez a háló vet-e árnyékot azokban a renderelőkben, amelyek támogatják az árnyéktérképeket. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Az, hogy ez a háló kap-e árnyékot más árnyékot vető geometriától. |
Methods
createPolygon(int... indices)
Definiáljon egy új sokszög felületet a csúcspont indexek sorrendjének megadásával. Az indexek a pozíciókra hivatkoznak a getControlPoints(). Három vagy több indexet fogad háromszögekhez, négyszögekhez és n-gonokhoz.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Csúcspont index argumentumok tekercselési sorrendben (általában az óramutatóval ellentétes irányban, ha kívülről nézzük). |
Visszatér: 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()
Helyettesítő: Visszaad egy klónt az eredeti mesh‑ből. A cél, hogy az összes polygont háromszögekre bontsa fan triangulation használatával, de a tényleges triangulációs logika még nincs megvalósítva. Az eredeti mesh nem módosul.
Visszatér: Mesh – az eredeti mesh klónja (stub viselkedés).
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()
Visszaadja ezt Mesh mint egy Mesh példány. A Mesh objektumok ez egy identitás művelet (visszaad this). Definiálva a Geometry alaposztályban, hogy egységes konverziós felületet biztosítson általános Geometry hivatkozások.
Visszatér: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Adj hozzá egy újat VertexElement Adj hozzá egy új, a megadott típusú réteget a hálóhoz. Ezt használhatod normálok, tangensek, binormálok, csúcsszínek és simítási csoportok csatolására.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Az a típusú adat, amelyet ez a réteg tartalmaz (pl., VertexElementType.NORMAL). |
mappingMode | MappingMode | Hogyan térképeződik az adat a geometriára: CONTROL_POINT, POLYGON_VERTEX, POLYGON, stb. |
referenceMode | ReferenceMode | Hogyan használják az indexeket: DIRECT vagy INDEX_TO_DIRECT. |
Visszatér: 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)
Adj hozzá egy UV koordináta réteget a hálóhoz. Ez a preferált módszer a textúra koordináta adatok csatolásához.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Az UV csatorna célja: DIFFUSE, SPECULAR, NORMAL, AMBIENT, stb. |
mappingMode | MappingMode | Hogyan térképeződnek az UV-k a geometriai elemekre. |
referenceMode | ReferenceMode | Indexelési mód: DIRECT vagy INDEX_TO_DIRECT. |
Visszatér: 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 és optimalizációs módszerek (helyőrzők)
A következő metódusok léteznek a Mesh de helyőrzők amelyek visszaadják az eredeti háló másolatát anélkül, hogy végrehajtanák a szándékolt műveletet.
Fontos: union, difference, intersect, és doBoolean vannak statikus metódusok, nem példány metódusok. Hívd meg őket így Mesh.union(a, b), nem a.union(b).
| Methods | Visszatérési típus | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: visszaad egy klónt a a. CSG unióhoz szánt. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: visszaad egy klónt a a. CSG kivonáshoz szánt. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: visszaad egy klónt a a. CSG metszéshez szánt. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: visszaad egy klónt a a. Általános CSG-hez transzformációkkal szánt. |
optimize(boolean removeVertices) | Mesh | Stub: visszaad egy klónt. Négy paraméteres túlterhelés: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: visszaad egy klónt. Alternatív optimalizálási belépési pont. |