Introduzione

Aspose.3D FOSS per TypeScript (@aspose/3d) è una libreria open-source, con licenza MIT, per formati di file 3D per Node.js e ambienti browser moderni. Gli sviluppatori che creano visualizzatori di modelli 3D, convertitori di formati, strumenti di elaborazione geometrica o pipeline 3D lato server possono installarla con un unico npm install @aspose/3d comando e iniziare immediatamente a caricare, costruire ed esportare contenuti 3D.

La libreria supporta i principali formati di interscambio — glTF 2.0 / GLB, STL, 3MF e COLLADA sia per l’importazione che per l’esportazione, e OBJ solo per l’importazione. Esistono classi di importazione/esportazione FBX ma non sono ancora integrate nella rilevazione automatica del formato. L’API del grafo della scena rispecchia il modello familiare degli strumenti di authoring 3D: un Scene contiene un rootNode, ciascuno Node può contenere nodi figli e oggetti entità (Mesh, Camera, Light), e la gerarchia di trasformazione è completamente accessibile per lettura e scrittura.

Caratteristiche principali

  • I/O multi-formato: Importa OBJ (con .mtl materiali, solo importazione), glTF 2.0 / GLB, STL (binario e ASCII), 3MF e COLLADA sia da percorsi file che da oggetti in memoria Buffer oggetti. glTF, STL, 3MF e COLLADA supportano anche l’esportazione. Il supporto FBX non è ancora integrato nella rilevazione automatica.
  • API del grafo della scena: Scene, Node, Mesh, Camera, Light gerarchia con gestione completa genitore/figlio; attraversa i nodi ricorsivamente tramite node.childNodes
  • sistema di materiali PBR: materiali Lambert, Phong e PBR (metallico/ruvidità) accessibili tramite node.entity.material
  • Operazioni mesh: Accedi ai dati grezzi dei vertici tramite mesh.controlPoints (array di Vector4), indici dei poligoni tramite mesh.polygonCount, e vertex element channels tramite mesh.getElement()
  • Utility matematiche: Vector2, Vector3, Vector4, Matrix4, Quaternion, e tipi di bounding box per calcoli spaziali
  • Sistema di animazione: Animazione a fotogrammi chiave con AnimationClip, AnimationChannel, e curve di interpolazione (lineare, Bezier, spline TCB)
  • Opzioni specifiche del formato: Per-formato LoadOptions / SaveOptions classi controllano il ribaltamento delle coordinate, la scala, il caricamento dei materiali e altro

Iniziare

Installa da npm. È richiesto Node.js 18 o successivo; è consigliato TypeScript 5.0+.

npm install @aspose/3d

Carica un file OBJ e ispeziona la scena:

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`);
    }
}

Esporta in glTF

Salva qualsiasi scena caricata o costruita in glTF 2.0 binario (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');

La libreria rileva automaticamente il formato di output dall’estensione del file. Passa un GltfSaveOptions istanza per il controllo dell’incorporamento dei materiali PBR, delle texture e della codifica binaria vs. JSON.

Costruzione della scena

Crea una scena programmaticamente ed esportala:

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');

Vedi anche