Mesh — Aspose.3D FOSS for Java
Paket: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh pohranjuje geometriju poligona kao popis kontrolnih točaka (položaja vrhova) i popis poligonskih lica. Svako poligonsko lice je popis nultog indeksiranja u niz kontrolnih točaka. Lica mogu biti trokuti, četverokuti ili poligoni veće arnosti. Dodatni podaci po vrhu – normale, UV koordinate, boje vrhova – pričvršćeni su kao VertexElement slojevi.
public class Mesh extends GeometryEnumerations
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Enumerations
Izradite jedinstveni trokutni mesh od početka:
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");Izradite kvadratni mesh i triangulirajte ga prije izvoza:
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
Mesh triangulated = mesh.triangulate();
System.out.println("Polygons after triangulate: " + triangulated.getPolygonCount()); // 2
Scene scene = new Scene();
scene.getRootNode().createChildNode("quad", triangulated);
scene.save("quad.glb");Enumerations
| Enumerations | Enumerations | Enumerations | Enumerations | Enumerations |
|---|---|---|---|---|
controlPoints | List<Vector4> | getControlPoints() | – | Niz položaja vrhova. Svaki unos je Vector4(x, y, z, w) gdje w je 1.0 za podatke o položaju. Dodajte vrhove pozivom add() na vraćenom popisu. |
polygonCount | int | getPolygonCount() | – | Broj poligonskih lica definiranih na ovoj mreži. |
polygons | List<int[]> | getPolygons() | – | Sve definicije lica kao popis nizova indeksa. Svaki unutarnji niz sadrži indekse vrhova (u controlPoints) za jedno lice. |
edges | List<Integer> | getEdges() | – | Sirovi podaci indeksa rubova. Primarno za internu upotrebu i napredna upita topologije. |
vertexElements | List<VertexElement> | getVertexElements() | – | Svi slojevi elemenata vrhova trenutno pričvršćeni na ovu mrežu (normale, UV‑e, boje, itd.). |
visible | boolean | getVisible() | setVisible(boolean) | Enumerations false, mreža je skrivena u preglednicima koji poštuju vidljivost. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Da li ova mreža baca sjene u rendererima koji podržavaju sjenske mape. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Da li ova mreža prima sjene od druge geometrije koja baca sjene. |
Enumerations
createPolygon(int... indices)
Definirajte novo poligonalno lice pružanjem indeksa vrhova redom. Indeksi referenciraju položaje u getControlPoints(). Prihvaća tri ili više indeksa za trokute, četverokute i n-gone.
| Enumerations | Enumerations | Enumerations |
|---|---|---|
indices | int... | Argumenti indeksa vrhova u redoslijedu uvijanja (obično suprotno od smjera kazaljke na satu kada se gleda izvana). |
Vraća: 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()
Zamjena: Vraća klon originalne mreže. Namijenjeno je za razdvajanje svih poligona u trokute pomoću fan triangulacije, ali stvarna logika triangulacije još nije implementirana. Originalna mreža nije modificirana.
Vraća: Mesh – klon originalne mreže (stub ponašanje).
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()
Vrati ovo Mesh kao Mesh instanca. Za Mesh objekti ovo je identitetska operacija (vraća this). Definirano na Geometry bazna klasa za pružanje jedinstvenog sučelja za konverziju pri radu s generičkim Geometry reference.
Vraća: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Dodaj novo VertexElement sloj specificirane vrste na mrežu. Upotrijebite ovo za dodavanje normala, tangensa, binormala, boja vrhova i grupa zaglađivanja.
| Enumerations | Enumerations | Enumerations |
|---|---|---|
elementType | VertexElementType | Vrsta podataka koju ovaj sloj drži (npr., VertexElementType.NORMAL). |
mappingMode | MappingMode | Kako podaci mapiraju na geometriju: CONTROL_POINT, POLYGON_VERTEX, POLYGON, itd. |
referenceMode | ReferenceMode | Kako se koriste indeksi: DIRECT ili INDEX_TO_DIRECT. |
Vraća: 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)
Dodajte UV koordinatni sloj u mrežu. Ovo je preferirani način za povezivanje podataka o teksturnim koordinatama.
| Enumerations | Enumerations | Enumerations |
|---|---|---|
uvMapping | TextureMapping | Svrha UV kanala: DIFFUSE, SPECULAR, NORMAL, AMBIENT, itd. |
mappingMode | MappingMode | Kako se UV-ovi mapiraju na elemente geometrije. |
referenceMode | ReferenceMode | Način indeksiranja: DIRECT ili INDEX_TO_DIRECT. |
Vraća: 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
);Logičke i optimizacijske metode (Stubovi)
Sljedeće metode postoje na Mesh ali su skeleti koji vraćaju klon originalne mreže bez izvršavanja njihove namijenjene operacije:
| Enumerations | Vrsta povratne vrijednosti | Enumerations |
|---|---|---|
union(Mesh other) | Mesh | Skelet: vraća klon. Namijenjeno za CSG uniju. |
difference(Mesh other) | Mesh | Stub: vraća klon. Namijenjeno za CSG oduzimanje. |
intersect(Mesh other) | Mesh | Stub: vraća klon. Namijenjeno za CSG presjek. |
optimize() | Mesh | Stub: vraća klon. Namijenjeno za optimizaciju mreže. |