Scene Rendering og Eksport

Scene Rendering og Eksport

@aspose/3d er et behandlings- og konverteringsbibliotek, og det udfører ikke GPU-rendering eller producerer billedfiler. “Rendering” i denne biblioteks kontekst betyder eksportere en scene til et format, som en efterfølgende renderer, spilmotor eller visningsprogram kan bruge.

Denne side dækker alle eksportveje: filbaseret gemning, output til buffer i hukommelsen, format‑specifikke indstillinger og hvordan man forbereder scener til almindelige efterfølgende mål (Three.js, Babylon.js, model‑visere og spilmotorer).

Grundlæggende eksport

Kald scene.save() med en filsti. Biblioteket udleder outputformatet ud fra filendelsen:

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

Eksport til GLB (anbefalet til web og spil)

GLB (binær glTF 2.0) er en enkelt selvstændig fil, der indlejrer al mesh‑data, materialer og teksturer. Det er det anbefalede outputformat for web‑visere (Three.js, Babylon.js, model-viewer) og spilmotorer (Godot, Unity via importør):

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');

Indstil binaryMode = true for at producere en selvstændig GLB-fil. Når false, outputtet er en .gltf JSON-fil med en separat .bin buffer-sidecar.

Eksport til glTF (JSON‑format til inspektion)

JSON-varianten (.gltf + .bin) er nyttig under udvikling, fordi JSON er menneskelæselig:

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);

Eksport til STL (3D‑print‑arbejdsgange)

STL indeholder kun geometri (ingen materialer, ingen animation). Det er standardudvekslingsformatet for 3D‑print‑slicere:

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);

Indstil binaryMode = false for at producere ASCII STL, som er tekstlæselig men større.

Eksport til FBX (DCC‑værktøjsarbejdsgange)

Bemærk: FBX-import- og eksportklasser findes i biblioteket, men automatisk genkendelse af FBX-format er ikke integreret i scene.open() eller scene.save(). Kald scene.save('output.fbx', opts) vil ikke aktivere FBX-eksportøren — den .fbx udvidelsen genkendes ikke af gemme-dispatcheren, og kaldet falder tilbage til OBJ-output. Brug FbxExporter klasse direkte, hvis du har brug for FBX I/O. Formatunderstøttelsestabellen markerer FBX som No* af denne grund.

Hvis du har brug for at eksportere til et format, der accepteres af Blender, Maya eller Unreal Engine, skal du i stedet bruge GLB eller COLLADA — begge er fuldt integreret i 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);

In-Memory-eksport med saveToBuffer()

For serverløse funktioner, HTTP-svar og streaming-pipelines, eksporter direkte til en Buffer uden at skrive til disk:

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() tager en formatstreng som første argument (f.eks. 'glb', 'stl', 'obj') og de samme options objects som save().

Kombinering openFromBuffer() og saveToBuffer()

En fuldstændig in‑memory konverterings‑pipeline uden disk‑I/O på noget trin:

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);
}

Forberedelse af scener til specifikke renderere

Three.js / Babylon.js (Web)

Disse renderere indlæser GLB-filer nativt. Eksporter med binaryMode = true. Hvis teksturer refereres fra kilde-OBJ’en, skal du sikre at .mtl og billedfiler er placeret sammen ved indlæsning.

model-viewer (Web‑komponent)

Accepterer .glb direkte. Samme eksportindstillinger som Three.js.

Godot Engine

Importér GLB via Godots importør (Project → Import). Brug binaryMode = true. Godot understøtter PBR-materialer fra glTF 2.0 nativt.

Blender

For den bedste importnøjagtighed brug glTF (output.gltf + output.bin) eller GLB (output.glb). Blenders glTF 2.0-importør håndterer PBR-materialer og animation. Bemærk: FBX-output via scene.save() er ikke understøttet — FBX-formatets automatisk genkendelse er ikke indbygget i gemme-dispatcheren.

3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)

Eksporter til STL eller 3MF. Brug 3MF når du har brug for at bevare farve‑ eller materialmetadata. Brug STL for maksimal kompatibilitet.

Sammenligning af eksportformater

FormatFiltypeMaterialerAnimationEnkelt filBedst til
GLB.glbPBR (glTF 2.0)JaJaWeb, spil, generel levering
glTF.gltfPBR (glTF 2.0)JaNej (+ .bin)Udvikling, inspektion
STL.stlNejNejJa3D printing, geometry-only
FBX.fbxPhong/PBRNej*Nej*Importer/exporter findes, men er ikke tilknyttet automatisk genkendelse
COLLADA.daeJaJaJaCross-DCC-udveksling
3MF.3mfFarve/materialeNejJaModerne 3D-printning

Almindelige eksportproblemer

SymptomÅrsagLøsning
Output-GLB åbnes som JSON i viserenbinaryMode efterladt som falseSæt opts.binaryMode = true
Teksturer mangler i output-GLBbinaryMode ikke indstilletIndstil opts.binaryMode = true til selvstændig GLB
STL-fil har ingen farve i slicerenSTL-format understøtter ikke farveBrug 3MF til farvedata
saveToBuffer returnerer tom bufferFormatstreng-argument mangler eller er forkertVideregiv formatstrengen, f.eks. 'glb', 'stl', eller 'obj'
FBX åbnes uden animation i BlenderKildefil (OBJ/STL) har ingen animationAnimation overføres kun, hvis den er til stede i kilden
Outputfilen er meget storKilde-OBJ har mange duplikerede vertexerGLB-binæroutput deduplicerer allerede; tjek kilde‑asset‑kvaliteten

Se også

 Dansk