Scene Rendering og eksport

Scene Rendering og eksport

@aspose/3d er et behandlings- og konverteringsbibliotek, og det utfører ikke GPU-rendering eller produserer bildefiler. “Rendering” i sammenheng med dette biblioteket betyr å eksportere en scene til et format som en etterfølgende renderer, spillmotor eller visningsprogram kan bruke.

Denne siden dekker alle eksportveier: filbasert lagring, minnebuffer‑utdata, formatspesifikke alternativer, og hvordan man forbereder scener for vanlige etterfølgende mål (Three.js, Babylon.js, modellvisere og spillmotorer).

Grunnleggende eksport

Kall scene.save() med en filsti. Biblioteket utleder utdataformatet 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 (anbefalt for nett og spill)

GLB (binær glTF 2.0) er en enkelt selvstendig fil som inneholder all mesh‑data, materialer og teksturer. Det er det anbefalte utdataformatet for nett‑visere (Three.js, Babylon.js, model-viewer) og spillmotorer (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');

Angi binaryMode = true for å produsere en selvstendig GLB-fil. Når false, er utdataene en .gltf JSON-fil med en separat .bin buffer-sidecar.

Eksport til glTF (JSON‑format for inspeksjon)

JSON-varianten (.gltf + .bin) er nyttig under utvikling fordi JSON er menneskelig lesbar:

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‑utskriftsarbeidsflyter)

STL inneholder kun geometri (ingen materialer, ingen animasjon). Det er standardutvekslingsformatet for 3D‑utskrifts‑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);

Angi binaryMode = false for å produsere ASCII STL, som er tekstlesbar men større.

Eksport til FBX (DCC‑verktøy‑arbeidsflyter)

Merk: FBX-import- og eksportklasser finnes i biblioteket, men automatisk gjenkjenning av FBX-format er ikke integrert i scene.open() eller scene.save(). Kaller scene.save('output.fbx', opts) vil ikke aktivere FBX-eksportøren — den .fbx utvidelsen er ikke gjenkjent av lagringsdistributøren og kallet vil falle tilbake til OBJ-utdata. Bruk FbxExporter klassen direkte hvis du trenger FBX I/O. Formatstøttabellen markerer FBX som No* av denne grunn.

Hvis du trenger å eksportere til et format som aksepteres av Blender, Maya eller Unreal Engine, bruk GLB eller COLLADA i stedet — begge er fullt integrert 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 funksjoner, HTTP-responser og streaming‑pipelines, eksporter direkte til en Buffer uten å 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() tar en formatstreng som første argument (f.eks. 'glb', 'stl', 'obj') og de samme alternativobjektene som save().

Kombinere openFromBuffer() og saveToBuffer()

En fullstendig minnebasert konverterings‑pipeline uten disk‑I/O på noen 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);
}

Forberede scener for spesifikke renderere

Three.js / Babylon.js (Web)

Disse rendererne laster GLB-filer nativt. Eksporter med binaryMode = true. Hvis teksturer refereres fra kilde‑OBJ‑filen, sørg for at .mtl og bildefiler er plassert sammen ved lasting.

model-viewer (Web‑komponent)

Godtar .glb direkte. Samme eksportinnstillinger som Three.js.

Godot Engine

Importer GLB via Godots importør (Project → Import). Bruk binaryMode = true. Godot støtter PBR‑materialer fra glTF 2.0 nativt.

Blender

For best importnøyaktighet, bruk glTF (output.gltf + output.bin) eller GLB (output.glb). Blenders glTF 2.0-importør håndterer PBR-materialer og animasjon. Merk: FBX-utdata via scene.save() støttes ikke — FBX-formatets autodeteksjon er ikke koblet til lagringsdistributøren.

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

Eksporter til STL eller 3MF. Bruk 3MF når du trenger farge‑ eller materialmetadata bevart. Bruk STL for maksimal kompatibilitet.

Sammenligning av eksportformater

FormatFiltypeMaterialerAnimasjonEnkelt filBest egnet for
GLB.glbPBR (glTF 2.0)JaJaWeb, spill, generell levering
glTF.gltfPBR (glTF 2.0)JaNei (+ .bin)Utvikling, inspeksjon
STL.stlNeiNeiJa3D printing, geometry-only
FBX.fbxPhong/PBRNei*Nei*Importer/exporter finnes, men er ikke koblet til automatisk gjenkjenning
COLLADA.daeJaJaJaCross-DCC-utveksling
3MF.3mfFarge/materialeNeiJaModerne 3D-utskrift

Vanlige eksportproblemer

SymptomÅrsakLøsning
Output-GLB åpnes som JSON i viserenbinaryMode gjenstår som falseSett opts.binaryMode = true
Teksturer mangler i utdata-GLBbinaryMode ikke sattAngi opts.binaryMode = true for selvstendig GLB
STL-filen har ingen farge i slicerenSTL-format støtter ikke fargeBruk 3MF for fargedata
saveToBuffer returnerer tom bufferFormatstreng-argument mangler eller er feilSend inn formatstrengen, f.eks. 'glb', 'stl', eller 'obj'
FBX åpnes uten animasjon i BlenderKildefilen (OBJ/STL) har ingen animasjonAnimasjon overføres kun hvis den er tilstede i kilden
Utdatafilen er veldig storKilde‑OBJ har mange dupliserte verticesGLB-binærutdata dedupliserer allerede; sjekk kvaliteten på kilde‑assetet

Se også

 Norsk