Pendahuluan

Aspose.3D FOSS untuk TypeScript (@aspose/3d) adalah perpustakaan format file 3D sumber terbuka dengan lisensi MIT yang terutama dirancang untuk Node.js. Pengembang yang membuat penampil model 3D, konverter format, alat pemrosesan geometri, atau pipeline 3D sisi server dapat menginstalnya dengan satu perintah (lihat Panduan Instalasi) dan langsung mulai memuat, membangun, serta mengekspor konten 3D. Perpustakaan ini menggunakan require('fs') dan Buffer dari Node.js; penggunaan di browser memerlukan shim yang tepat untuk API tersebut dan tidak didukung secara resmi.

Perpustakaan ini mendukung format pertukaran utama — OBJ, glTF 2.0 / GLB, STL, 3MF, dan COLLADA untuk impor dan ekspor. Kelas pengimpor/pengekspor FBX ada tetapi belum terhubung ke deteksi otomatis format. API scene graph mencerminkan model yang dikenal dari alat authoring 3D: sebuah Scene berisi rootNode, setiap Node dapat membawa node anak dan objek entitas (Mesh, Camera, Light), dan hierarki transformasi dapat diakses sepenuhnya untuk membaca dan menulis.

Fitur Utama

  • I/O multi-format: Impor dan ekspor OBJ (dengan .mtl material), glTF 2.0 / GLB, STL (biner dan ASCII), 3MF, dan COLLADA dari jalur file maupun memori Buffer objek. Dukungan FBX belum terhubung ke deteksi otomatis.
  • Grafik adegan API: Scene, Node, Mesh, Camera, Light hierarki dengan manajemen induk/anak penuh; telusuri node secara rekursif melalui node.childNodes
  • sistem material PBR: Material Lambert, Phong, dan PBR (metallic/roughness) dapat diakses melalui node.material
  • Operasi mesh: Akses data vertex mentah via mesh.controlPoints (array of Vector4), indeks poligon melalui mesh.polygonCount, dan saluran elemen vertex melalui mesh.getElement()
  • Utilitas Matematika: Vector2, Vector3, Vector4, Matrix4, Quaternion, dan tipe kotak pembatas untuk perhitungan spasial
  • Sistem Animasi: animasi keyframe dengan AnimationClip, AnimationChannel, dan kurva interpolasi (linear, Bezier, TCB spline)
  • Opsi khusus format: Per format LoadOptions / SaveOptions kelas mengontrol pembalikan koordinat, skala, pemuatan material, dan lainnya

Memulai

Bangun paket dari sumber. Node.js 18 atau yang lebih baru diperlukan; TypeScript 5.0+ direkomendasikan.

git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run build

Muat file OBJ dan inspeksi adegan:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

Grafik Adegan API

Setiap adegan adalah pohon objek Node yang berakar pada scene.rootNode. Bangun hierarki dengan addChildNode(), lampirkan entitas seperti Camera atau Light ke sebuah node melalui properti entity-nya, dan baca transformasi lokal atau ruang dunia masing-masing node melalui transform dan globalTransform.

import { Scene, Node, Camera, Light } from '@aspose/3d';

const scene = new Scene();

const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);

const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);

for (const child of scene.rootNode.childNodes) {
    console.log(`${child.name}: ${child.entity?.constructor.name}`);
}

Utilitas Matematika

Vector3, Vector4, Matrix4, dan Quaternion mendukung setiap operasi geometris dalam perpustakaan. Vector3 dan Vector4 mengekspos komponen x/y/z(/w) plus length, dot(), dan cross(); Matrix4 adalah grid 4×4 yang diakses melalui m00–m33 dengan transpose() dan concatenate(); Quaternion menyediakan normalize(), conjugate(), inverse(), dan dot() untuk matematika rotasi.

import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';

const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();

console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);

Lihat Juga

Sumber Daya Terkait