Class Mesh

Paket: @aspose/3d (v24.12.0)

Mesh juga tersedia melalui impor sub‑path @aspose/3d/entities.

Mesh adalah entitas geometri poligon utama dalam @aspose/3d. Ia menyimpan posisi vertex sebagai control point, mendefinisikan wajah poligon melalui daftar indeks vertex, dan mendukung beberapa lapisan data elemen vertex seperti normal dan koordinat UV.

export class Mesh extends Geometry

ImageRenderOptions

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

ImageRenderOptions

Bangun sebuah mesh segitiga tunggal, lampirkan ke scene, dan simpan ke GLB.

import { Scene, Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

// Create the mesh and define three control points (vertices)
const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 1, 0, 1),   // apex
  new Vector4(-1, 0, 0, 1),  // bottom-left
  new Vector4(1, 0, 0, 1),   // bottom-right
);

// Define one triangular polygon using vertex indices
mesh.createPolygon(0, 1, 2);

// Attach the mesh to the scene and save (extension infers GLB format)
const scene = new Scene();
scene.rootNode.createChildNode('triangle', mesh);
scene.save('triangle.glb');
console.log(`Polygon count: ${mesh.polygonCount}`); // 1

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]Posisi vertex dari mesh. Setiap titik menggunakan koordinat homogen (x, y, z, w). Tambahkan titik dengan mendorong ke array ini sebelum mendefinisikan poligon.
polygonCountnumberHanya-baca. Jumlah poligon (wajah) yang saat ini didefinisikan pada mesh.
polygonsnumber[][]Hanya-baca. Tabel indeks poligon. Setiap entri adalah array indeks control point yang mendefinisikan satu wajah.
edgesnumber[]Daftar tepi, digunakan untuk penandaan hard‑edge dan pemberian bobot crease.
vertexElementsVertexElement[]Koleksi lapisan elemen vertex (normal, UV, warna vertex, dll.) yang terlampir pada mesh ini.
visiblebooleanApakah mesh dirender. Defaultnya adalah true.
castShadowsbooleanApakah mesh memancarkan bayangan pada renderer yang didukung. Defaultnya adalah true.
receiveShadowsbooleanApakah mesh menerima bayangan dari objek lain. Defaultnya adalah true.

ImageRenderOptions

createPolygon(…indices)

Mendefinisikan wajah poligon baru menggunakan indeks control point yang diberikan. Indeks harus merujuk pada posisi yang valid dalam controlPoints.

createPolygon(...indices: number[]): void

ImageRenderOptions

...indices number[]

Tiga atau lebih indeks berbasis nol ke dalam controlPoints array, dalam urutan lilitan berlawanan arah jarum jam.

ImageRenderOptions

void

ImageRenderOptions

import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 0, 0, 1),
  new Vector4(1, 0, 0, 1),
  new Vector4(1, 1, 0, 1),
  new Vector4(0, 1, 0, 1),
);
// Define a quad as two triangles, or a single quad polygon:
mesh.createPolygon(0, 1, 2, 3);
console.log(`Polygons: ${mesh.polygonCount}`); // 1

triangulate()

Mengonversi semua poligon non‑segitiga dalam mesh ini menjadi segitiga. Mengembalikan mesh yang telah ditriangulasi (bisa berupa instance yang sama atau yang baru).

triangulate(): Mesh

ImageRenderOptions

Mesh

Mesh yang telah ditriangulasi.

ImageRenderOptions

import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 0, 0, 1),
  new Vector4(1, 0, 0, 1),
  new Vector4(1, 1, 0, 1),
  new Vector4(0, 1, 0, 1),
);
mesh.createPolygon(0, 1, 2, 3); // quad
const triangulated = mesh.triangulate();
console.log(`Polygons after triangulation: ${triangulated.polygonCount}`); // 2

toMesh()

Mengembalikan mesh sebagai Mesh instance. Untuk Mesh objek ini adalah operasi identitas; metode ini lebih bermakna pada tipe geometri primitif yang mewarisi dari Geometry.

toMesh(): Mesh

ImageRenderOptions

Mesh

Instansi mesh ini.


static union(a, b)

NOT IMPLEMENTED. Metode ini didefinisikan dalam antarmuka API tetapi melempar Error('union is not implemented') pada waktu berjalan. Jangan panggil ini dalam kode produksi.

Melakukan union Boolean dari dua mesh. Hasilnya berisi volume gabungan dari kedua input.

static union(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Operand mesh pertama.

b Mesh

Operand mesh kedua.

ImageRenderOptions

Mesh

Mesh baru yang mewakili gabungan dari a dan b.

ImageRenderOptions

import { Mesh } from '@aspose/3d/entities';

// Assumes meshA and meshB are already populated Mesh instances
const combined = Mesh.union(meshA, meshB);
console.log(`Union polygon count: ${combined.polygonCount}`);

static difference(a, b)

NOT IMPLEMENTED. Metode ini didefinisikan dalam antarmuka API tetapi melempar Error('difference is not implemented') pada waktu berjalan. Jangan panggil ini dalam kode produksi.

Melakukan perbedaan Boolean, mengurangkan volume mesh b dari mesh a.

static difference(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Mesh dasar.

b Mesh

Mesh yang akan dikurangkan a.

ImageRenderOptions

Mesh

Mesh baru yang mewakili a kurang b.

ImageRenderOptions

import { Mesh } from '@aspose/3d/entities';

const result = Mesh.difference(meshA, meshB);
console.log(`Difference polygon count: ${result.polygonCount}`);

static intersect(a, b)

NOT IMPLEMENTED. Metode ini didefinisikan dalam antarmuka API tetapi melempar Error('intersect is not implemented') pada waktu berjalan. Jangan panggil ini dalam kode produksi.

Melakukan interseksi Boolean dari dua mesh. Hasilnya hanya berisi volume yang tumpang tindih.

static intersect(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Operand mesh pertama.

b Mesh

Operand mesh kedua.

ImageRenderOptions

Mesh

Mesh baru yang mewakili perpotongan dari a dan b.

ImageRenderOptions

import { Mesh } from '@aspose/3d/entities';

const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);

createElement(type, mapping?, reference?)

Membuat yang baru VertexElement lapisan data pada mesh ini untuk atribut per-vertex khusus.

createElement(
  type: VertexElementType,
  mapping?: MappingMode,
  reference?: ReferenceMode
): VertexElement

ImageRenderOptions

type VertexElementType

Jenis atribut vertex yang akan dibuat (misalnya, VertexElementType.Normal).

mapping MappingMode (opsional)

Bagaimana data elemen dipetakan ke topologi mesh. Defaultnya adalah MappingMode.ControlPoint.

reference ReferenceMode (opsional)

Bagaimana indeks elemen merujuk ke array data. Defaultnya adalah ReferenceMode.Direct.

ImageRenderOptions

VertexElement

Lapisan elemen vertex yang baru dibuat.


createElementUV(mapping, mappingMode?, referenceMode?)

Membuat lapisan koordinat UV pada mesh ini.

createElementUV(
  mapping: TextureMapping,
  mappingMode?: MappingMode,
  referenceMode?: ReferenceMode
): VertexElementUV

ImageRenderOptions

mapping TextureMapping

Saluran UV yang akan dibuat (misalnya, TextureMapping.Diffuse).

mappingMode MappingMode (opsional)

Bagaimana koordinat UV dipetakan ke vertex.

referenceMode ReferenceMode (opsional)

Bagaimana data indeks UV merujuk ke array UV.

ImageRenderOptions

VertexElementUV

Lapisan elemen UV yang baru dibuat.

ImageRenderOptions

import { Mesh } from '@aspose/3d/entities';
import { TextureMapping } from '@aspose/3d';

const mesh = new Mesh();
// ... define control points and polygons ...
const uvLayer = mesh.createElementUV(TextureMapping.Diffuse);
console.log(`UV element created: ${uvLayer !== undefined}`);
 Bahasa Indonesia