Renderització d'escenes i exportació
@aspose/3d és una biblioteca de processament i conversió, i no realitza renderització amb GPU ni genera fitxers d’imatge. “Renderització” en el context d’aquesta biblioteca vol dir exportar una escena a un format que un renderitzador, motor de joc o visualitzador posterior pugui consumir.
Aquesta pàgina cobreix tots els camins d’exportació: desament basat en fitxers, sortida a buffer en memòria, opcions específiques de format i com preparar escenes per a destinataris downstream comuns (Three.js, Babylon.js, visualitzadors de models i motors de joc).
Exportació bàsica
Crida scene.save() amb una ruta de fitxer. La biblioteca infereix el format de sortida a partir de l’extensió del fitxer:
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
Exportació a GLB (Recomanat per a Web i Jocs)
GLB (binary glTF 2.0) és un únic fitxer autònom que incrusta totes les dades de malla, materials i textures. És el format de sortida recomanat per a visualitzadors web (Three.js, Babylon.js, model-viewer) i motors de joc (Godot, Unity via importador):
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');Estableix binaryMode = true per generar un fitxer GLB autònom. Quan false, la sortida és un .gltf fitxer JSON amb un .bin buffer sidecar.
Exportació a glTF (Format JSON per a inspecció)
La variant JSON (.gltf + .bin) és útil durant el desenvolupament perquè el JSON és llegible per humans:
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);Exportació a STL (Fluxos de treball d’impressió 3D)
STL és només geometria (sense materials, sense animació). És el format d’intercanvi estàndard per a talladors d’impressió 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);Estableix binaryMode = false per generar ASCII STL, que és llegible com a text però més gran.
Exportació a FBX (Fluxos de treball d’eines DCC)
Nota: Les classes d’importador i exportador FBX existeixen a la biblioteca, però la detecció automàtica del format FBX no està integrada a scene.open() o scene.save(). scene.save('output.fbx', opts) Cridar .fbx no invocarà l’exportador FBX — el FbxExporter extensió no és reconeguda pel despachador de desament i la crida tornarà a la sortida OBJ. Utilitzeu el No* classe directament si necessiteu I/O FBX. La taula de suport de formats marca FBX com a.
per aquesta raó. Si necessiteu exportar a un format acceptat per Blender, Maya o Unreal Engine, utilitzeu GLB o COLLADA en canvi — ambdós estan completament integrats a 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);Exportació en memòria amb saveToBuffer()
Per a funcions sense servidor, respostes HTTP i canals de transmissió, exporta directament a un Buffer sense escriure al disc:
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() pren una cadena de format com a primer argument (p. ex. 'glb', 'stl', 'obj') i els mateixos objectes d’opcions que save().
Combinant openFromBuffer() i saveToBuffer()
Una canalització de conversió completament en memòria, sense I/O de disc en cap fase:
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);
}Preparació d’escenes per a renderitzadors específics
Three.js / Babylon.js (Web)
Aquests renderitzadors carreguen nativament fitxers GLB. Exporta amb binaryMode = true. Si les textures es refereixen des de l’OBJ d’origen, assegura’t que el .mtl i els fitxers d’imatge estiguin co‑localitzats en carregar-los.
model-viewer (Component Web)
Accepta .glb directament. Les mateixes configuracions d’exportació que Three.js.
Godot Engine
Importa GLB mitjançant l’importador de Godot (Project → Import). Utilitza binaryMode = true. Godot admet materials PBR de glTF 2.0 de manera nativa.
Blender
Per a la màxima fidelitat d’importació, utilitza glTF (output.gltf + output.bin) o GLB (output.glb). L’importador glTF 2.0 de Blender gestiona materials PBR i animació. Nota: la sortida FBX via scene.save() no és compatible — la detecció automàtica del format FBX no està connectada al despachador de desament.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Exporta a STL o 3MF. Utilitza 3MF quan necessitis conservar el color o les metadades de material. Utilitza STL per a la màxima compatibilitat.
Comparació de formats d’exportació
| Format | Extensió | Materials | Animació | Fitxer únic | Ideal per a |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Sí | Sí | Web, jocs, distribució general |
| glTF | .gltf | PBR (glTF 2.0) | Sí | No (+ .bin) | Desenvolupament, inspecció |
| STL | .stl | No | No | Sí | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | No* | No* | L’importador/exportador existeix però no està connectat a la detecció automàtica |
| COLLADA | .dae | Sí | Sí | Sí | Intercanvi Cross-DCC |
| 3MF | .3mf | Color/material | No | Sí | Impressió 3D moderna |
Problemes comuns d’exportació
| Símptoma | Causa | Solució |
|---|---|---|
| La sortida GLB s’obre com a JSON al visualitzador | binaryMode deixat com a false | Conjunt opts.binaryMode = true |
| Falten textures a la sortida GLB | binaryMode no establert | Establir opts.binaryMode = true per a GLB autocontingut |
| El fitxer STL no té color al tallador | El format STL no admet color | Utilitzeu 3MF per a dades de color |
saveToBuffer retorna buffer buit | Falta l’argument de cadena de format o és incorrecte | Passeu la cadena de format, p. ex. 'glb', 'stl', o 'obj' |
| FBX s’obre sense animació a Blender | El fitxer d’origen (OBJ/STL) no té animació | L’animació només es manté si està present a l’origen |
| El fitxer de sortida és molt gran | L’OBJ d’origen té molts vèrtexs duplicats | La sortida binària GLB ja elimina duplicats; verifica la qualitat de l’actiu d’origen |
Vegeu també
- Càrrega del model: carregant fitxers 3D des del disc i buffers
- Graf de l’escena: construint i modificant l’escena abans de l’exportació
- Compatibilitat de formats: matriu completa de lectura/escriptura
- Visió general de l’API: totes les classes i enumeracions