Comment enregistrer des modèles 3D en TypeScript
Aspose.3D FOSS pour TypeScript enregistre les scènes dans tous les formats pris en charge avec un seul scene.save() appel. Le format de sortie est détecté automatiquement à partir de l’extension du fichier. Ce guide couvre l’enregistrement dans chaque format et l’utilisation des options spécifiques à chaque format.
Guide étape par étape
Étape 1 : Installer @aspose/3d
npm install @aspose/3dÉtape 2 : charger ou créer une scène
Chargez un fichier existant ou construisez une scène programmatiquement avant de l’enregistrer.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());
// Or create a new empty scene
const emptyScene = new Scene();Étape 3 : enregistrer avec le format détecté automatiquement
scene.save(path) détecte le format de sortie à partir de l’extension du fichier :
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
// Save as binary glTF
scene.save('output.glb');
// Save as JSON glTF
scene.save('output.gltf');
// Save as STL
scene.save('output.stl');
// Save as OBJ
scene.save('output.obj');
// Save as FBX
scene.save('output.fbx');
// Save as 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Étape 4 : utiliser les SaveOptions spécifiques au format
Pour un contrôle fin, transmettez un objet d’options spécifique au format :
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true; // produce GLB (binary glTF)
scene.save('output.glb', saveOptions);Étape 5 : enregistrer dans un tampon (en mémoire)
Utilisez scene.saveToBuffer() pour obtenir la sortie sous forme de Buffer sans écrire sur le disque :
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Étape 6 : vérifier la sortie
Après l’enregistrement, vérifiez que le fichier existe et qu’il a une taille non nulle :
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Matrice de prise en charge des formats
| Extension | Format | Remarques |
|---|---|---|
.glb | glTF 2.0 binaire | Recommandé pour glTF ; tous les actifs sont intégrés dans un seul fichier |
.gltf | glTF 2.0 JSON | Séparer .bin et fichiers de texture à côté du JSON |
.obj | Wavefront OBJ | Écrit .mtl fichier de matériau à côté .obj lorsque des matériaux sont présents |
.stl | STL | Par défaut : STL binaire ; utilisez StlSaveOptions.ascii = true pour le texte |
.fbx | Autodesk FBX | Format FBX binaire |
.3mf | 3D Manufacturing | Adapté aux flux de travail d’impression 3D |
.dae | COLLADA | Format d’échange basé sur XML |
Problèmes courants et solutions
Error: Unsupported format lors de l’enregistrement
Vérifiez que l’extension du fichier correspond à un format pris en charge. La bibliothèque utilise l’extension pour détecter le format ; un fichier nommé output.xyz échouera.
.obj le fichier s’enregistre mais les matériaux sont manquants
Lors de l’enregistrement au format OBJ, la bibliothèque de matériaux (.mtl) est écrite automatiquement à côté du .obj. Les deux fichiers doivent se trouver dans le même répertoire lors de la réouverture. Si vous avez seulement besoin de la géométrie, définissez ObjSaveOptions.enableMaterials = false.
Grand .gltf avec des textures séparées
Utilisez .glb au lieu de .gltf; il regroupe des données binaires dans un seul fichier autonome. Définissez GltfSaveOptions.binaryMode = true lors du passage d’un GltfSaveOptions instance.
Questions fréquentes
Puis-je enregistrer dans plusieurs formats en une seule exécution ?
Oui ; appelez scene.save() plusieurs fois avec des chemins différents :
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');L’enregistrement modifie-t-il la scène ?
Non. scene.save() est une opération en lecture seule sur le graphe de scène. Vous pouvez enregistrer la même scène dans plusieurs formats sans aucun effet secondaire.
Puis-je écraser le fichier source ?
Oui. Passez le même chemin à scene.save() que vous avez utilisé dans scene.open(). La bibliothèque écrit dans un tampon puis écrit sur le disque.