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
.mtlmateriali, solo importazione), glTF 2.0 / GLB, STL (binario e ASCII), 3MF e COLLADA sia da percorsi file che da oggetti in memoriaBufferoggetti. 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,Lightgerarchia con gestione completa genitore/figlio; attraversa i nodi ricorsivamente tramitenode.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 diVector4), indici dei poligoni tramitemesh.polygonCount, e vertex element channels tramitemesh.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/SaveOptionsclassi 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');