Introduzione

Siamo lieti di annunciare la disponibilità di Aspose.3D FOSS per TypeScript come il @aspose/3d pacchetto npm. Questa libreria con licenza MIT offre elaborazione di scene 3D di qualità produzione per applicazioni TypeScript e Node.js senza richiedere binari nativi, toolchain specifici per piattaforma o licenze commerciali.

La libreria è progettata attorno a un’interfaccia semplice Scene API: carica un file 3D con scene.open(), ispeziona o trasforma il grafo della scena e scrivi il risultato con scene.save(). Le definizioni di tipo complete per TypeScript sono incluse; non è necessario alcun @types/ pacchetto aggiuntivo.

Caratteristiche principali

I/O multiformato. Il pacchetto legge e scrive sei principali formati 3D in un’unica installazione. OBJ è supportato per l’importazione; glTF 2.0, GLB, STL, 3MF e COLLADA supportano sia l’importazione che l’esportazione. Esistono classi di import/export FBX ma il rilevamento automatico del formato non è ancora implementato, quindi i file FBX non possono essere caricati tramite scene.open().

Supporto TypeScript di prima classe. Tutte le classi pubbliche, le enumerazioni e i tipi di opzione sono completamente tipizzati. Gli IDE con supporto al servizio linguistico TypeScript (VS Code, WebStorm, ecc.) forniscono completamento automatico accurato e documentazione in linea per ogni chiamata API.

Compatibilità con Node.js 18–22+. Il pacchetto è testato con le versioni LTS di Node.js 18, 20 e 22. Nessun addon nativo viene compilato durante l’installazione, quindi funziona su tutte le piattaforme supportate da Node.js.

Una dipendenza a runtime. L’unica dipendenza è xmldom, usato esclusivamente per l’analisi XML di COLLADA. Tutti gli altri parser di formato sono implementazioni pure in JavaScript.

Licenza MIT. Usa @aspose/3d in progetti commerciali, open-source o interni senza restrizioni.

Avvio rapido

Installa il pacchetto:

npm install @aspose/3d

Carica un file OBJ e convertilo in un GLB binario:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

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

const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;   // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);

console.log('Converted to GLB successfully');

Itera sui nodi della scena per ispezionare la geometria:

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

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

for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}`);
    if (node.entity) {
        console.log(`  Entity type: ${node.entity.constructor.name}`);
    }
}

Formati supportati

FormatoEstensioneImportaEsportaNote
Wavefront OBJ.objNoSolo importazione; legge .mtl file dei materiali
glTF 2.0.gltfJSON con esterno .bin buffer
GLB binario.glbImposta binaryMode: true in GltfSaveOptions
STL.stlSTL ASCII e binario
3MF.3mfarchivio Open Packaging Convention
FBX.fbxNo*No*Importer/exporter esistono ma il rilevamento automatico del formato non è collegato
COLLADA.daeRichiede bundled xmldom dipendenza

Vantaggi di TypeScript

Lavorare con @aspose/3d in TypeScript rileva gli errori di categoria al momento della compilazione piuttosto che a runtime. Quando chiami scene.save(), il compilatore verifica che l’oggetto options corrisponda al tipo previsto SaveOptions sottotipo per il formato scelto. Le opzioni di caricamento e salvataggio specifiche del formato espongono solo le proprietà rilevanti per quel formato; non esiste un contenitore di opzioni non tipizzate da indovinare.

Ad esempio, GltfSaveOptions.binaryMode è un typed boolean, quindi il compilatore rifiuta saveOpts.binaryMode = 'yes' prima che venga eseguito alcun codice. Proprietà di animazione su AnimationClip, canali di materiale su PbrMaterial, e tipi di elementi vertice su VertexElement sono tutti tipizzati in modo simile e scopriibili tramite IntelliSense senza consultare documentazione esterna.

Open source e gratuito

Il pacchetto è pubblicato sotto la MIT License. Il codice sorgente è disponibile su GitHub. Contributi, segnalazioni di bug e richieste di supporto per formati sono benvenuti tramite il tracker delle issue del repository.

La libreria ha una dipendenza runtime: xmldom versione 0.9+, usata solo durante la lettura o scrittura di file COLLADA. Tutti gli altri parser e writer sono implementazioni pure-JavaScript autonome senza componenti binari.

Iniziare

Conclusione

@aspose/3d la versione 24.12.0 fornisce una base stabile, tipizzata, leggera in dipendenze per l’elaborazione di file 3D in TypeScript e Node.js. Che il caso d’uso sia la conversione di formati, l’ispezione della scena, l’estrazione di geometria o l’integrazione in pipeline, la libreria copre i formati di interscambio 3D più comuni sotto una licenza open-source permissiva.

Installa oggi e facci sapere cosa costruisci.