Comment enregistrer des modèles 3D en TypeScript

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

ExtensionFormatRemarques
.glbglTF 2.0 binaireRecommandé pour glTF ; tous les actifs sont intégrés dans un seul fichier
.gltfglTF 2.0 JSONSéparer .bin et fichiers de texture à côté du JSON
.objWavefront OBJÉcrit .mtl fichier de matériau à côté .obj lorsque des matériaux sont présents
.stlSTLPar défaut : STL binaire ; utilisez StlSaveOptions.ascii = true pour le texte
.fbxAutodesk FBXFormat FBX binaire
.3mf3D ManufacturingAdapté aux flux de travail d’impression 3D
.daeCOLLADAFormat 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.


Voir aussi

 Français