Scenrendering och export

@aspose/3d är ett bearbetnings- och konverteringsbibliotek, och det utför inte GPU-rendering eller producerar bildfiler. “Rendering” i detta biblioteks sammanhang betyder exportera en scen till ett format som en efterföljande renderare, spelmotor eller visare kan konsumera.

Denna sida täcker alla exportvägar: filbaserad sparning, minnesbuffertutmatning, format‑specifika alternativ och hur man förbereder scener för vanliga efterföljande mål (Three.js, Babylon.js, modellvisare och spelmotorer).

Grundläggande export

Anropa scene.save() med en filsökväg. Biblioteket härleder utdataformatet från filändelsen:

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

Export till GLB (rekommenderas för webb och spel)

GLB (binär glTF 2.0) är en enda självständig fil som inbäddar all mesh‑data, material och texturer. Det är det rekommenderade utdataformatet för webbvisare (Three.js, Babylon.js, model-viewer) och spelmotorer (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');

Ställ in binaryMode = true för att producera en självständig GLB-fil. När false, är utdata en .gltf JSON-fil med en separat .bin buffer‑sidecar.

Export till glTF (JSON‑format för inspektion)

JSON‑varianten (.gltf + .bin) är användbar under utveckling eftersom JSON är människoläsbar:

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

Export till STL (3D‑utskriftsarbetsflöden)

STL är enbart geometri (inga material, ingen animation). Det är standardutbytesformatet för 3D‑utskrifts‑slicers:

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

Ställ in binaryMode = false för att producera ASCII STL, vilket är textläsbart men större.

Export till FBX (DCC‑verktygsarbetsflöden)

Obs: FBX‑import‑ och exportklasser finns i biblioteket, men automatisk detektering av FBX-format är inte integrerad i scene.open() eller scene.save(). Anropar scene.save('output.fbx', opts) kommer inte att anropa FBX-exportören — fil .fbx ändelsen känns inte igen av sparningshanteraren och anropet kommer att falla tillbaka till OBJ-utdata. Använd FbxExporter klassen direkt om du behöver FBX I/O. Formatstödtabellen markerar FBX som No* av den här anledningen.

Om du behöver exportera till ett format som accepteras av Blender, Maya eller Unreal Engine, använd GLB eller COLLADA istället — båda är fullt integrerade 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-export med saveToBuffer()

För serverlösa funktioner, HTTP-svar och streaming-pipelines, exportera direkt till en Buffer utan att skriva till 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 formatsträng som första argument (t.ex. 'glb', 'stl', 'obj') och samma options-objekt som save().

Kombinera openFromBuffer() och saveToBuffer()

En helt minnesbaserad konverteringspipeline utan någon disk‑I/O i något steg:

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

Förbereda scener för specifika renderare

Three.js / Babylon.js (Web)

Dessa renderare laddar GLB-filer nativt. Exportera med binaryMode = true. Om texturer refereras från käll-OBJ, se till att .mtl och bildfiler är samlokalerade vid inläsning.

model-viewer (Web Component)

Accepterar .glb direkt. Samma exportinställningar som Three.js.

Godot Engine

Importera GLB via Godots importör (Project → Import). Använd binaryMode = true. Godot stöder PBR-material från glTF 2.0 nativt.

Blender

För bästa importnoggrannhet använd glTF (output.gltf + output.bin) eller GLB (output.glb). Blenders glTF 2.0-importör hanterar PBR-material och animation. Obs: FBX-utdata via scene.save() stöds inte — FBX-formatets autodetektering är inte kopplad till spara‑distributören.

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

Exportera till STL eller 3MF. Använd 3MF när du behöver färg eller materialmetadata bevarade. Använd STL för maximal kompatibilitet.

Jämförelse av exportformat

FormatFiländelseMaterialAnimationEn filBäst för
GLB.glbPBR (glTF 2.0)JaJaWebb, spel, allmän leverans
glTF.gltfPBR (glTF 2.0)JaNej (+ .bin)Utveckling, inspektion
STL.stlNejNejJa3D printing, geometry-only
FBX.fbxPhong/PBRNej*Nej*Importör/exportör finns men är inte ansluten till automatisk detektering
COLLADA.daeJaJaJaCross-DCC-utbyte
3MF.3mfFärg/materialNejJaModern 3D-utskrift

Vanliga exportproblem

SymtomOrsakÅtgärd
Utdata GLB öppnas som JSON i visarenbinaryMode lämnad som falseSätt opts.binaryMode = true
Texturer saknas i utdata-GLBbinaryMode inte inställtStäll in opts.binaryMode = true för självständig GLB
STL-fil har ingen färg i slicernSTL-format stöder inte färgAnvänd 3MF för färgdata
saveToBuffer returnerar tom bufferFormatsträngsargument saknas eller är felaktigtSkicka formatsträngen, t.ex. 'glb', 'stl', eller 'obj'
FBX öppnas utan animation i BlenderKällfilen (OBJ/STL) har ingen animationAnimationen överförs bara om den finns i källan
Utdatafilen är mycket storKäll-OBJ har många duplicerade vertexarGLB-binärutdata deduplicerar redan; kontrollera kvaliteten på källtillgången

Se även

 Svenska