Vykreslování scény a export

@aspose/3d je knihovna pro zpracování a konverzi a neprovádí GPU renderování ani nevytváří soubory s obrázky. “Rendering” v kontextu této knihovny znamená export scény do formátu, který může spotřebovat downstream renderér, herní engine nebo prohlížeč.

Tato stránka pokrývá všechny cesty exportu: ukládání do souboru, výstup do paměťového bufferu, možnosti specifické pro formáty a jak připravit scény pro běžné downstream cíle (Three.js, Babylon.js, prohlížeče modelů a herní enginy).

Základní export

Zavolejte scene.save() s cestou k souboru. Knihovna odvozuje výstupní formát z přípony souboru:

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 (doporučeno pro web a hry)

GLB (binární glTF 2.0) je jediný samostatný soubor, který obsahuje všechna data mesh, materiály a textury. Je doporučeným výstupním formátem pro webové prohlížeče (Three.js, Babylon.js, model-viewer) a herní enginy (Godot, Unity přes 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');

Nastavte binaryMode = true pro vytvoření samostatného souboru GLB. Když false, výstup je .gltf JSON soubor s odděleným .bin bufferovým souborem.

Export do glTF (JSON formát pro inspekci)

JSON varianta (.gltf + .bin) je užitečná během vývoje, protože JSON je čitelný pro člověka:

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

STL obsahuje pouze geometrii (žádné materiály, žádná animace). Je standardním výměnným formátem pro slicery 3D tisku:

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

Nastavte binaryMode = false pro vytvoření ASCII STL, který je čitelný jako text, ale je větší.

Export do FBX (pracovní postupy DCC nástrojů)

Poznámka: Třídy pro import a export FBX existují v knihovně, ale automatické rozpoznání formátu FBX není napojeno do scene.open() nebo scene.save(). Volání scene.save('output.fbx', opts) nevyvolá exportér FBX — .fbx rozšíření není rozpoznáno ukládacím dispatcherem a volání se vrátí k výstupu OBJ. Použijte FbxExporter třídu přímo, pokud potřebujete FBX I/O. Tabulka podpory formátů označuje FBX jako No* z tohoto důvodu.

Pokud potřebujete exportovat do formátu, který přijímají Blender, Maya nebo Unreal Engine, použijte místo toho GLB nebo COLLADA — oba jsou plně integrovány 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 v paměti s saveToBuffer()

Pro serverless funkce, HTTP odpovědi a streamovací pipeline exportujte přímo 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() přijímá řetězec formátu jako první argument (např. 'glb', 'stl', 'obj') a stejné objekty možností jako save().

Kombinování openFromBuffer() a saveToBuffer()

Plně paměťová konverzní pipeline bez jakéhokoli I/O na disku v jakékoli fázi:

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

Příprava scén pro konkrétní renderery

Three.js / Babylon.js (Web)

Tyto renderery nativně načítají soubory GLB. Exportujte pomocí binaryMode = true. Pokud jsou textury odkazovány ze zdrojového OBJ, ujistěte se, že .mtl a soubory obrázků jsou při načítání umístěny ve stejném adresáři.

model-viewer (Web Component)

Přijímá .glb přímo. Stejné nastavení exportu jako u Three.js.

Godot Engine

Importujte GLB pomocí importéru Godotu (Project → Import). Použijte binaryMode = true. Godot nativně podporuje PBR materiály z glTF 2.0.

Blender

Pro nejlepší věrnost importu použijte glTF (output.gltf + output.bin) nebo GLB (output.glb). Importér glTF 2.0 v Blenderu zvládá PBR materiály a animaci. Poznámka: výstup FBX přes scene.save() není podporováno — automatické rozpoznávání formátu FBX není napojeno do dispečera ukládání.

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

Exportujte do STL nebo 3MF. Použijte 3MF, pokud potřebujete zachovat barvu nebo metadata materiálu. Použijte STL pro maximální kompatibilitu.

Porovnání exportních formátů

FormátPříponaMateriályAnimaceJeden souborNejvhodnější pro
GLB.glbPBR (glTF 2.0)AnoAnoWeb, hry, obecné doručení
glTF.gltfPBR (glTF 2.0)AnoNe (+ .bin)Vývoj, kontrola
STL.stlNeNeAno3D printing, geometry-only
FBX.fbxPhong/PBRNe*Ne*Importér/exportér existuje, ale není napojen do automatického rozpoznávání
COLLADA.daeAnoAnoAnoCross-DCC výměna
3MF.3mfBarva/materiálNeAnoModerní 3D tisk

Běžné problémy s exportem

PříznakPříčinaOprava
Výstupní GLB se v prohlížeči otevírá jako JSONbinaryMode zůstává jako falseNastavit opts.binaryMode = true
Textury chybí ve výstupním GLBbinaryMode není nastavenoNastavit opts.binaryMode = true pro samostatný GLB
STL soubor nemá v sliceru žádnou barvuFormát STL nepodporuje barvuPoužijte 3MF pro barevná data
saveToBuffer vrací prázdný bufferArgument formátového řetězce chybí nebo je nesprávnýPředávejte formátový řetězec, např. 'glb', 'stl', nebo 'obj'
FBX se v Blenderu otevře bez animaceZdrojový soubor (OBJ/STL) nemá animaciAnimace se přenese pouze pokud je přítomna ve zdroji
Výstupní soubor je velmi velkýZdrojový OBJ má mnoho duplicitních vrcholůBinární výstup GLB již odstraňuje duplicity; zkontrolujte kvalitu zdrojového assetu

Viz také

 Čeština