Rendu de scène et exportation

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

FormatExtensionMatériauxAnimationFichier uniqueIdéal pour
GLB.glbPBR (glTF 2.0)OuiOuiWeb, jeux, distribution générale
glTF.gltfPBR (glTF 2.0)OuiNon (+ .bin)Développement, inspection
STL.stlNonNonOui3D printing, geometry-only
FBX.fbxPhong/PBRNon*Non*L’importateur/exportateur existe mais n’est pas intégré à la détection automatique
COLLADA.daeOuiOuiOuiÉchange Cross-DCC
3MF.3mfCouleur/matériauNonOuiImpression 3D moderne

Problèmes d’exportation courants

SymptômeCauseCorrection
Le GLB de sortie s’ouvre en JSON dans le visualiseurbinaryMode laissé tel que falseDéfinir opts.binaryMode = true
Textures manquantes dans le GLB de sortiebinaryMode non définiDéfinir opts.binaryMode = true pour GLB autonome
Le fichier STL n’a pas de couleur dans le slicerLe format STL ne prend pas en charge la couleurUtilisez 3MF pour les données de couleur
saveToBuffer renvoie un tampon videArgument de chaîne de format manquant ou incorrectPassez la chaîne de format, par ex. 'glb', 'stl', ou 'obj'
FBX s’ouvre sans animation dans BlenderLe fichier source (OBJ/STL) n’a pas d’animationL’animation n’est conservée que si elle est présente dans la source
Le fichier de sortie est très volumineuxLe OBJ source contient de nombreux sommets dupliquésLa sortie binaire GLB déduplique déjà ; vérifiez la qualité de l’actif source

Voir aussi

 Français