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át | Přípona | Materiály | Animace | Jeden soubor | Nejvhodnější pro |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Ano | Ano | Web, hry, obecné doručení |
| glTF | .gltf | PBR (glTF 2.0) | Ano | Ne (+ .bin) | Vývoj, kontrola |
| STL | .stl | Ne | Ne | Ano | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Ne* | Ne* | Importér/exportér existuje, ale není napojen do automatického rozpoznávání |
| COLLADA | .dae | Ano | Ano | Ano | Cross-DCC výměna |
| 3MF | .3mf | Barva/materiál | Ne | Ano | Moderní 3D tisk |
Běžné problémy s exportem
| Příznak | Příčina | Oprava |
|---|---|---|
| Výstupní GLB se v prohlížeči otevírá jako JSON | binaryMode zůstává jako false | Nastavit opts.binaryMode = true |
| Textury chybí ve výstupním GLB | binaryMode není nastaveno | Nastavit opts.binaryMode = true pro samostatný GLB |
| STL soubor nemá v sliceru žádnou barvu | Formát STL nepodporuje barvu | Použijte 3MF pro barevná data |
saveToBuffer vrací prázdný buffer | Argument 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 animace | Zdrojový soubor (OBJ/STL) nemá animaci | Animace 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é
- Načítání modelu: načítání 3D souborů z disku a bufferů
- Scénový graf: vytváření a úprava scény před exportem
- Podpora formátů: úplná matice čtení/zápisu
- Přehled API: všechny třídy a výčty