Mesh — Aspose.3D FOSS for Java
Paket: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh menyimpan geometri poligon sebagai daftar titik kontrol (posisi vertex) dan daftar wajah poligon. Setiap wajah poligon adalah daftar indeks berbasis nol ke array titik kontrol. Wajah dapat berupa segitiga, kuad, atau poligon dengan aritas lebih tinggi. Data tambahan per-vertex – normal, koordinat UV, warna vertex – dilampirkan sebagai VertexElement lapisan.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Bangun mesh segitiga tunggal dari awal:
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");Bangun mesh kuad (catatan: triangulate() adalah stub — lihat peringatan di bawah):
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() | – | Array posisi vertex. Setiap entri adalah sebuah Vector4(x, y, z, w) di mana w adalah 1.0 untuk data posisi. Tambahkan vertex dengan memanggil add() pada daftar yang dikembalikan. |
polygonCount | int | getPolygonCount() | – | Jumlah wajah poligon yang didefinisikan pada mesh ini. |
polygons | List<int[]> | getPolygons() | – | Semua definisi wajah sebagai daftar array indeks. Setiap array dalam menyimpan indeks vertex (ke controlPoints). |
edges | List<Integer> | getEdges() | – | Data indeks tepi mentah. Utamanya untuk penggunaan internal dan kueri topologi lanjutan. |
vertexElements | List<VertexElement> | getVertexElements() | – | Semua lapisan elemen vertex yang saat ini terlampir pada mesh ini (normal, UV, warna, dll.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, mesh ini disembunyikan di penampil yang menghormati visibilitas. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Apakah mesh ini menghasilkan bayangan dalam renderer yang mendukung peta bayangan. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Apakah mesh ini menerima bayangan dari geometri lain yang memancarkan bayangan. |
Methods
createPolygon(int... indices)
Definisikan sebuah wajah poligon baru dengan memberikan indeks vertex secara berurutan. Indeks-indeks tersebut merujuk pada posisi di getControlPoints(). Menerima tiga atau lebih indeks untuk segitiga, kuad, dan n-gon.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Argumen indeks vertex dalam urutan winding (biasanya berlawanan arah jarum jam ketika dilihat dari luar). |
Mengembalikan: 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: Mengembalikan klon dari mesh asli. Dimaksudkan untuk membagi semua poligon menjadi segitiga menggunakan fan triangulation, tetapi logika triangulasi sebenarnya belum diimplementasikan. Mesh asli tidak dimodifikasi.
Mengembalikan: Mesh – sebuah klon dari mesh asli (perilaku stub).
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()
Kembalikan ini Mesh sebagai Mesh instance. Untuk Mesh objek ini adalah operasi identitas (mengembalikan this). Didefinisikan pada Geometry kelas dasar untuk menyediakan antarmuka konversi seragam saat bekerja dengan Geometry referensi.
Mengembalikan: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Tambahkan VertexElement lapisan dengan tipe yang ditentukan ke mesh. Gunakan ini untuk melampirkan normal, tangent, binormal, warna vertex, dan grup smoothing.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Jenis data yang disimpan lapisan ini (misalnya,., VertexElementType.NORMAL). |
mappingMode | MappingMode | Bagaimana data dipetakan ke geometri: CONTROL_POINT, POLYGON_VERTEX, POLYGON, dll. |
referenceMode | ReferenceMode | Bagaimana indeks digunakan: DIRECT atau INDEX_TO_DIRECT. |
Mengembalikan: 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)
Tambahkan lapisan koordinat UV ke mesh. Ini adalah metode yang disarankan untuk melampirkan data koordinat tekstur.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Tujuan saluran UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, dll. |
mappingMode | MappingMode | Bagaimana UV dipetakan ke elemen geometri. |
referenceMode | ReferenceMode | Mode pengindeksan: DIRECT atau INDEX_TO_DIRECT. |
Mengembalikan: 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
);Metode Boolean dan Optimisasi (Stubs)
Metode berikut ada pada Mesh tetapi adalah stub yang mengembalikan klon mesh asli tanpa melakukan operasi yang dimaksud.
Penting: union, difference, intersect, dan doBoolean adalah metode statis, bukan metode instance. Panggil mereka sebagai Mesh.union(a, b), bukan a.union(b).
| Methods | Tipe Pengembalian | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: mengembalikan klon dari a. Ditujukan untuk union CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: mengembalikan klon dari a. Ditujukan untuk pengurangan CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: mengembalikan klon dari a. Ditujukan untuk interseksi CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: mengembalikan klon dari a. Ditujukan untuk CSG umum dengan transformasi. |
optimize(boolean removeVertices) | Mesh | Stub: mengembalikan sebuah klon. Empat overload parameter: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: mengembalikan sebuah klon. Titik masuk optimasi alternatif. |