Vykresľovanie scény a export

@aspose/3d je knižnica na spracovanie a konverziu a nevykonáva GPU renderovanie ani nevytvára obrazové súbory. „Rendering“ v kontexte tejto knižnice znamená exportovať scénu do formátu, ktorý môže spotrebovať následný renderér, herný engine alebo prehliadač.

Táto stránka pokrýva všetky cesty exportu: ukladanie do súboru, výstup do pamäťového bufferu, možnosti špecifické pre formáty a ako pripraviť scény pre bežné cieľové systémy (Three.js, Babylon.js, prehliadače modelov a herné enginy).

Základný export

Zavolať scene.save() s cestou k súboru. Knižnica odvodí výstupný formát z prípony súboru:

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 do GLB (odporúčané pre web a hry)

GLB (binárny glTF 2.0) je jeden samostatný súbor, ktorý obsahuje všetky dáta o meshoch, materiáloch a textúrach. Je odporúčaným výstupným formátom pre webové prehliadače (Three.js, Babylon.js, model-viewer) a herné enginy (Godot, Unity cez 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');

Nastaviť binaryMode = true na vytvorenie samostatného GLB súboru. Keď false, výstup je .gltf JSON súbor s oddeleným .bin bufferovým doplnkom.

Export do glTF (JSON formát pre kontrolu)

Variant JSON (.gltf + .bin) je užitočný počas vývoja, pretože JSON je čitateľný pre človeka:

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 do STL (pracovné postupy 3D tlače)

STL obsahuje iba geometriu (žiadne materiály, žiadna animácia). Je štandardným výmenným formátom pre slicery 3D tlače:

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

Nastaviť binaryMode = false na vytvorenie ASCII STL, ktorý je čitateľný ako text, ale je väčší.

Export do FBX (pracovné postupy DCC nástrojov)

Poznámka: Triedy importéra a exportéra FBX existujú v knižnici, ale automatické rozpoznávanie formátu FBX nie je prepojené do scene.open() alebo scene.save(). Volanie scene.save('output.fbx', opts) nevyvolá exportér FBX — .fbx rozšírenie nie je rozpoznané dispečerom ukladania a volanie sa vráti k výstupu OBJ. Použite FbxExporter triedu priamo, ak potrebujete FBX I/O. Tabuľka podpory formátov označuje FBX ako No* z tohto dôvodu.

Ak potrebujete exportovať do formátu akceptovaného programami Blender, Maya alebo Unreal Engine, použite namiesto toho GLB alebo COLLADA — oba sú plne integrované do 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);

Export do pamäte s saveToBuffer()

Pre serverless funkcie, HTTP odpovede a streamingové pipeline, exportujte priamo do Buffer bez zápisu 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() prijíma reťazec formátu ako prvý argument (napr. 'glb', 'stl', 'obj') a rovnaké objekty možností ako save().

Kombinovanie openFromBuffer() a saveToBuffer()

Úplne pamäťová konverzná pipeline bez diskových I/O na žiadnej fáze:

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

Príprava scén pre konkrétne renderery

Three.js / Babylon.js (Web)

Tieto renderery natívne načítavajú GLB súbory. Exportujte s binaryMode = true. Ak sú textúry odkazované zo zdrojového OBJ, uistite sa, že .mtl a súbory obrázkov sú pri načítaní umiestnené spolu.

model-viewer (Web Component)

Akceptuje .glb priamo. Rovnaké nastavenia exportu ako v Three.js.

Godot Engine

Importujte GLB cez Godotov importér (Project → Import). Použite binaryMode = true. Godot natívne podporuje PBR materiály z glTF 2.0.

Blender

Pre najvyššiu vernosť importu použite glTF (output.gltf + output.bin) alebo GLB (output.glb). Importér glTF 2.0 v Blenderi spracováva PBR materiály a animáciu. Poznámka: výstup FBX cez scene.save() nie je podporovaný — automatické rozpoznávanie formátu FBX nie je zapojené do dispečera ukladania.

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

Exportujte do STL alebo 3MF. Použite 3MF, keď potrebujete zachovať farbu alebo metadáta materiálu. Použite STL pre maximálnu kompatibilitu.

Porovnanie exportných formátov

FormátRozšírenieMateriályAnimáciaJeden súborNajlepšie pre
GLB.glbPBR (glTF 2.0)ÁnoÁnoWeb, hry, všeobecné doručenie
glTF.gltfPBR (glTF 2.0)ÁnoNie (+ .bin)Vývoj, kontrola
STL.stlNieNieÁno3D printing, geometry-only
FBX.fbxPhong/PBRNie*Nie*Importér/exportér existuje, ale nie je prepojený s automatickým rozpoznávaním
COLLADA.daeÁnoÁnoÁnoCross-DCC výmena
3MF.3mfFarba/materiálNieÁnoModerná 3D tlač

Bežné problémy pri exporte

SymptómPríčinaOprava
Výstup GLB sa otvára ako JSON v prehliadačibinaryMode zostáva ako falseNastaviť opts.binaryMode = true
Chýbajú textúry vo výstupnom GLBbinaryMode nenastavenéNastaviť opts.binaryMode = true pre samostatný GLB
Súbor STL nemá farbu v sliceriFormát STL nepodporuje farbuPoužite 3MF pre farebné dáta
saveToBuffer vracia prázdny bufferArgument formátového reťazca chýba alebo je nesprávnyZadajte formátový reťazec, napr. 'glb', 'stl', alebo 'obj'
FBX sa otvorí bez animácie v BlenderiZdrojový súbor (OBJ/STL) nemá animáciuAnimácia sa prenesie len vtedy, ak je prítomná v zdroji
Výstupný súbor je veľmi veľkýZdrojový OBJ má veľa duplicitných vrcholovBinárny výstup GLB už odstraňuje duplikáty; skontrolujte kvalitu zdrojového assetu

Pozri tiež

 Slovenčina