Rendu de scène et exportation
@aspose/3d est une bibliothèque de traitement et de conversion, et elle n’effectue pas de rendu GPU ni ne produit de fichiers image. « Rendering » dans le contexte de cette bibliothèque signifie exporter une scène vers un format qu’un moteur de rendu en aval, un moteur de jeu ou un visualiseur peut consommer.
Cette page couvre tous les chemins d’exportation : sauvegarde basée sur des fichiers, sortie vers un tampon en mémoire, options spécifiques aux formats, et comment préparer les scènes pour les cibles en aval courantes (Three.js, Babylon.js, visionneuses de modèles et moteurs de jeu).
Exportation de base
Appeler scene.save() avec un chemin de fichier. La bibliothèque déduit le format de sortie à partir de l’extension du fichier :
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
Exportation vers GLB (recommandé pour le Web et les jeux)
GLB (glTF 2.0 binaire) est un fichier unique autonome qui intègre toutes les données de maillage, les matériaux et les textures. C’est le format de sortie recommandé pour les visualiseurs Web (Three.js, Babylon.js, model-viewer) et les moteurs de jeu (Godot, Unity via importateur) :
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');Définir binaryMode = true pour produire un fichier GLB autonome. Lorsque false, la sortie est un .gltf fichier JSON avec un .bin sidecar de tampon séparé.
Exportation vers glTF (format JSON pour l’inspection)
La variante JSON (.gltf + .bin) est utile pendant le développement car le JSON est lisible par l’homme :
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);Exportation vers STL (flux de travail d’impression 3D)
STL ne contient que la géométrie (pas de matériaux, pas d’animation). C’est le format d’échange standard pour les trancheurs d’impression 3D :
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);Définir binaryMode = false pour produire un STL ASCII, qui est lisible en texte mais plus volumineux.
Exportation vers FBX (flux de travail d’outils DCC)
Remarque: des classes d’importation et d’exportation FBX existent dans la bibliothèque, mais la détection automatique du format FBX n’est pas intégrée à scene.open() ou scene.save(). scene.save('output.fbx', opts) Appeler .fbx n’invoquera pas l’exportateur FBX — le FbxExporter extension n’est pas reconnu par le répartiteur de sauvegarde et l’appel reviendra à une sortie OBJ. Utilisez le No* classe directement si vous avez besoin d’E/S FBX. Le tableau de prise en charge des formats indique FBX comme.
pour cette raison. Si vous devez exporter vers un format accepté par Blender, Maya ou Unreal Engine, utilisez GLB ou COLLADA à la place — les deux sont entièrement intégrés à scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);Exportation en mémoire avec saveToBuffer()
Pour les fonctions serverless, les réponses HTTP et les pipelines de streaming, exportez directement vers un Buffer sans écrire sur le disque :
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() prend une chaîne de format comme premier argument (par ex. 'glb', 'stl', 'obj') et les mêmes objets d’options que save().
Combinaison de openFromBuffer() et saveToBuffer()
Un pipeline de conversion entièrement en mémoire, sans aucune I/O disque à aucune étape :
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}Préparer les scènes pour des moteurs de rendu spécifiques
Three.js / Babylon.js (Web)
Ces rendus chargent nativement les fichiers GLB. Exportez avec binaryMode = true. Si les textures sont référencées depuis le OBJ source, assurez-vous que le .mtl et les fichiers image soient co-localisés lors du chargement.
model-viewer (Web Component)
Accepte .glb directement. Même paramètres d’exportation que Three.js.
Godot Engine
Importez le GLB via l’importateur de Godot (Projet → Importer). Utilisez binaryMode = true. Godot prend en charge les matériaux PBR de glTF 2.0 nativement.
Blender
Pour la meilleure fidélité d’importation, utilisez glTF (output.gltf + output.bin) ou GLB (output.glb). L’importateur glTF 2.0 de Blender gère les matériaux PBR et l’animation. Remarque : la sortie FBX via scene.save() n’est pas prise en charge — la détection automatique du format FBX n’est pas intégrée au répartiteur d’enregistrement.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exportez en STL ou 3MF. Utilisez le 3MF lorsque vous avez besoin de conserver la couleur ou les métadonnées de matériau. Utilisez le STL pour une compatibilité maximale.
Comparaison des formats d’exportation
| Format | Extension | Matériaux | Animation | Fichier unique | Idéal pour |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Oui | Oui | Web, jeux, distribution générale |
| glTF | .gltf | PBR (glTF 2.0) | Oui | Non (+ .bin) | Développement, inspection |
| STL | .stl | Non | Non | Oui | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Non* | Non* | L’importateur/exportateur existe mais n’est pas intégré à la détection automatique |
| COLLADA | .dae | Oui | Oui | Oui | Échange Cross-DCC |
| 3MF | .3mf | Couleur/matériau | Non | Oui | Impression 3D moderne |
Problèmes d’exportation courants
| Symptôme | Cause | Correction |
|---|---|---|
| Le GLB de sortie s’ouvre en JSON dans le visualiseur | binaryMode laissé tel que false | Définir opts.binaryMode = true |
| Textures manquantes dans le GLB de sortie | binaryMode non défini | Définir opts.binaryMode = true pour GLB autonome |
| Le fichier STL n’a pas de couleur dans le slicer | Le format STL ne prend pas en charge la couleur | Utilisez 3MF pour les données de couleur |
saveToBuffer renvoie un tampon vide | Argument de chaîne de format manquant ou incorrect | Passez la chaîne de format, par ex. 'glb', 'stl', ou 'obj' |
| FBX s’ouvre sans animation dans Blender | Le fichier source (OBJ/STL) n’a pas d’animation | L’animation n’est conservée que si elle est présente dans la source |
| Le fichier de sortie est très volumineux | Le OBJ source contient de nombreux sommets dupliqués | La sortie binaire GLB déduplique déjà ; vérifiez la qualité de l’actif source |
Voir aussi
- Chargement du modèle: chargement de fichiers 3D depuis le disque et les tampons
- Graphe de scène: construction et modification de la scène avant l’exportation
- Prise en charge des formats: matrice complète de lecture/écriture
- Aperçu de l’API: toutes les classes et énumérations