Renderització d'escenes i exportació

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ó

FormatExtensióMaterialsAnimacióFitxer únicIdeal per a
GLB.glbPBR (glTF 2.0)Web, jocs, distribució general
glTF.gltfPBR (glTF 2.0)No (+ .bin)Desenvolupament, inspecció
STL.stlNoNo3D printing, geometry-only
FBX.fbxPhong/PBRNo*No*L’importador/exportador existeix però no està connectat a la detecció automàtica
COLLADA.daeIntercanvi Cross-DCC
3MF.3mfColor/materialNoImpressió 3D moderna

Problemes comuns d’exportació

SímptomaCausaSolució
La sortida GLB s’obre com a JSON al visualitzadorbinaryMode deixat com a falseConjunt opts.binaryMode = true
Falten textures a la sortida GLBbinaryMode no establertEstablir opts.binaryMode = true per a GLB autocontingut
El fitxer STL no té color al talladorEl format STL no admet colorUtilitzeu 3MF per a dades de color
saveToBuffer retorna buffer buitFalta l’argument de cadena de format o és incorrectePasseu la cadena de format, p. ex. 'glb', 'stl', o 'obj'
FBX s’obre sense animació a BlenderEl 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 granL’OBJ d’origen té molts vèrtexs duplicatsLa sortida binària GLB ja elimina duplicats; verifica la qualitat de l’actiu d’origen

Vegeu també

 Català