Renderovanje scene i izvoz

@aspose/3d je biblioteka za obradu i konverziju, i ne vrši GPU renderovanje niti proizvodi slikovne fajlove. „Rendering“ u kontekstu ove biblioteke znači izvoz scene u format koji downstream renderer, game engine ili viewer može da konzumira.

Ova stranica pokriva sve puteve izvoza: čuvanje u fajl, izlaz u memorijski bafer, opcije specifične za format i kako pripremiti scene za uobičajene downstream ciljeve (Three.js, Babylon.js, preglednike modela i game engine‑e).

Osnovni izvoz

Pozovite scene.save() sa putanjom do fajla. Biblioteka zaključuje izlazni format iz ekstenzije fajla:

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

Izvoz u GLB (preporučeno za web i igre)

GLB (binarni glTF 2.0) je jedan samostalni fajl koji sadrži sve podatke o mrežama, materijalima i teksturama. To je preporučeni izlazni format za web preglednike (Three.js, Babylon.js, model-viewer) i game engine‑e (Godot, Unity putem importera):

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

Postavite binaryMode = true da proizvede samostalni GLB fajl. Kada false, izlaz je .gltf JSON fajl sa odvojenim .bin buffer sidecar.

Izvoz u glTF (JSON format za inspekciju)

JSON varijanta (.gltf + .bin) je korisna tokom razvoja jer je JSON čitljiv za ljude:

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

Izvoz u STL (radni tokovi 3D štampe)

STL sadrži samo geometriju (bez materijala, bez animacije). To je standardni format za razmenu podataka za 3D štampu (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);

Postavi binaryMode = false da proizvede ASCII STL, koji je čitljiv kao tekst, ali veći.

Izvoz u FBX (radni tokovi DCC alata)

Napomena: U biblioteci postoje klase za uvoz i izvoz FBX-a, ali automatsko prepoznavanje FBX formata nije integrisano u scene.open() ili scene.save(). Pozivanje scene.save('output.fbx', opts) neće pozvati FBX izvoznik — the .fbx ekstenzija nije prepoznata od strane dispečera za čuvanje i poziv će se vratiti na OBJ izlaz. Koristite the FbxExporter klasu direktno ako vam je potreban FBX I/O. Tabela podrške formata označava FBX kao No* iz tog razloga.

Ako trebate izvesti u format koji prihvataju Blender, Maya ili Unreal Engine, koristite GLB ili COLLADA umesto — oba su potpuno integrisana u 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);

Izvoz u memoriji uz saveToBuffer()

Za serverless funkcije, HTTP odgovore i streaming pipeline‑ove, izvezite direktno u a Buffer bez pisanja na 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() uzima format string kao prvi argument (npr. 'glb', 'stl', 'obj') i iste options objekte kao save().

Kombinovanje openFromBuffer() i saveToBuffer()

Potpuno in‑memory pipeline za konverziju bez ikakvog I/O na disku u bilo kojoj fazi:

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

Priprema scena za određene renderere

Three.js / Babylon.js (Web)

Ovi rendereri nativno učitavaju GLB fajlove. Izvezi pomoću binaryMode = true. Ako su teksture referencirane iz izvornog OBJ, osiguraj da .mtl i image fajlovi budu ko‑lokirani prilikom učitavanja.

model-viewer (Web Component)

Prihvata .glb direktno. Ista podešavanja izvoza kao i u Three.js.

Godot Engine

Uvezite GLB putem Godotovog uvoznika (Project → Import). Koristite binaryMode = true. Godot nativno podržava PBR materijale iz glTF 2.0.

Blender

Za najbolju vernost uvoza koristite glTF (output.gltf + output.bin) ili GLB (output.glb). Blenderov glTF 2.0 uvoznik obrađuje PBR materijale i animacije. Napomena: FBX izlaz putem scene.save() nije podržan — automatsko prepoznavanje FBX formata nije povezano u dispatcher za čuvanje.

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

Izvezite u STL ili 3MF. Koristite 3MF kada je potrebno sačuvati boju ili metapodatke o materijalu. Koristite STL za maksimalnu kompatibilnost.

Uporedba formata izvoza

FormatEkstenzijaMaterijaliAnimacijaJedna datotekaNajbolje za
GLB.glbPBR (glTF 2.0)DaDaWeb, igre, opšta isporuka
glTF.gltfPBR (glTF 2.0)DaNe (+ .bin)Razvoj, inspekcija
STL.stlNeNeDa3D printing, geometry-only
FBX.fbxPhong/PBRNe*Ne*Uvoznik/izvoznik postoje, ali nisu povezani sa automatskim otkrivanjem
COLLADA.daeDaDaDaCross-DCC razmena
3MF.3mfBoja/materijalNeDaModerno 3D štampanje

Uobičajeni problemi pri izvozu

SimptomUzrokIspravi
Izlazni GLB se otvara kao JSON u preglednikubinaryMode ostavljeno kao falsePostavi opts.binaryMode = true
Teksture nedostaju u izlaznom GLBbinaryMode nije postavljenoPostavi opts.binaryMode = true za samostalni GLB
STL fajl nema boju u sliceruSTL format ne podržava bojuKoristite 3MF za podatke o boji
saveToBuffer vraća prazan baferArgument format stringa nedostaje ili je pogrešanProsledite format string, npr. 'glb', 'stl', ili 'obj'
FBX se otvara bez animacije u BlenderuIzvorni fajl (OBJ/STL) nema animacijuAnimacija se prenosi samo ako je prisutna u izvoru
Izlazni fajl je veoma velikIzvorni OBJ ima mnogo duplih vrhovaGLB binarni izlaz već eliminiše duplikate; proverite kvalitet izvorne imovine

Vidi takođe

 Српски