Pengenalan

Aspose.3D FOSS untuk TypeScript (@aspose/3d) ialah perpustakaan format fail 3D sumber terbuka, berlesen MIT untuk Node.js dan persekitaran pelayar moden. Pembangun yang membina penonton model 3D, penukar format, alat pemprosesan geometri, atau paip 3D sisi pelayan boleh memasangnya dengan satu npm install @aspose/3d perintah dan serta-merta mula memuatkan, membina, dan mengeksport kandungan 3D.

Perpustakaan ini menyokong format pertukaran utama — glTF 2.0 / GLB, STL, 3MF, dan COLLADA untuk import dan eksport, serta OBJ untuk import sahaja. Kelas import/eksport FBX wujud tetapi belum disambungkan ke pengesanan automatik format. Scene API graf adegan mencerminkan model yang biasa dari alat authoring 3D: satu rootNode,menyimpan satu Node boleh membawa nod anak dan objek entiti (Mesh, Camera, Light), dan hierarki transformasi dapat diakses sepenuhnya untuk bacaan dan penulisan.

Ciri-ciri Utama

  • I/O berbilang format: Import OBJ (dengan .mtl bahan, import sahaja), glTF 2.0 / GLB, STL (binari dan ASCII), 3MF, dan COLLADA daripada kedua-dua laluan fail dan dalam memori Buffer objek. glTF, STL, 3MF, dan COLLADA juga menyokong eksport. Sokongan FBX belum disambungkan ke pengesanan automatik.
  • API graf adegan: Scene, Node, Mesh, Camera, Light hierarki dengan pengurusan ibu/anak penuh; lalui nod secara rekursif melalui node.childNodes
  • sistem bahan PBR: bahan Lambert, Phong, dan PBR (logam/kekasaran) dapat diakses melalui node.entity.material
  • Operasi mesh: Akses data vertex mentah melalui mesh.controlPoints (susunan Vector4), indeks poligon melalui mesh.polygonCount, dan saluran elemen vertex melalui mesh.getElement()
  • Utiliti Matematik: Vector2, Vector3, Vector4, Matrix4, Quaternion, dan jenis kotak sempadan untuk pengiraan spasial
  • Sistem animasi: Animasi keyframe dengan AnimationClip, AnimationChannel, dan lengkung interpolasi (linear, Bezier, TCB spline)
  • Pilihan khusus format: Per-format LoadOptions / SaveOptions kelas mengawal pembalikan koordinat, skala, pemuatan bahan, dan banyak lagi

Mula Menggunakan

Pasang melalui npm. Node.js 18 atau lebih baru diperlukan; TypeScript 5.0+ disarankan.

npm install @aspose/3d

Muatkan fail OBJ dan periksa 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`);
    }
}

Eksport ke glTF

Simpan sebarang adegan yang dimuatkan atau dibina ke dalam glTF 2.0 binari (GLB):

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

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

Pustaka secara automatik mengesan format output daripada sambungan fail. Hantar satu GltfSaveOptions instans untuk mengawal penyematan bahan PBR, tekstur, dan pengekodan binari vs. JSON.

Pembinaan Adegan

Bina adegan secara programatik dan eksportkan ia:

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

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

juga