Kohtauksen renderöinti ja vienti
@aspose/3d on prosessointi- ja muunnoskirjasto, eikä se suorita GPU-renderöintiä tai tuota kuvatiedostoja. “Renderöinti” tässä kirjastossa tarkoittaa viedä kohtauksen formaattiin, jonka alavirta-renderöijä, pelimoottori tai katseluohjelma voi käyttää.
Tämä sivu kattaa kaikki vientireitit: tiedostopohjainen tallennus, muistissa oleva puskurituloste, formaattikohtaiset asetukset sekä kuinka valmistella kohtauksia yleisille alapuolisille kohteille (Three.js, Babylon.js, mallikatseluohjelmat ja pelimoottorit).
Perusvienti
Kutsu scene.save() tiedostopolulla. Kirjasto päätelsee tulostusformaatin tiedostopäätteestä:
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
Vienti GLB-muotoon (Suositeltu verkkoon ja peleihin)
GLB (binäärinen glTF 2.0) on yksi itsenäinen tiedosto, joka upottaa kaikki verkkomateriaalit, materiaalit ja tekstuurit. Se on suositeltu tulostusformaatti verkkokatseluohjelmille (Three.js, Babylon.js, model-viewer) ja pelimoottoreille (Godot, Unity tuontityökalun kautta):
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');Aseta binaryMode = true tuottamaan itsenäisen GLB-tiedoston. Kun false, tulos on .gltf JSON-tiedosto, jossa on erillinen .bin puskuritiedosto.
Vienti glTF-muotoon (JSON‑formaatti tarkastelua varten)
JSON-muunnelma (.gltf + .bin) on hyödyllinen kehityksen aikana, koska JSON on luettavissa ihmisluettavassa muodossa:
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);Vienti STL-muotoon (3D‑tulostusprosessit)
STL sisältää vain geometriaa (ei materiaaleja, ei animaatioita). Se on 3D‑tulostuksen leikkausohjelmien vakiomuoto:
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);Aseta binaryMode = false tuottamaan ASCII STL:n, joka on tekstitiedostona luettavissa, mutta suurempi.
Vienti FBX-muotoon (DCC‑työkaluprosessit)
Huomaa: FBX-tuonti- ja vientiluokat ovat kirjastossa, mutta FBX-formaatin automaattinen tunnistus ei ole kytketty scene.open() tai scene.save(). Kutsuminen scene.save('output.fbx', opts) ei käynnistä FBX-vientoa — the .fbx tiedostopääte ei ole tunnistettu tallennusjakelijassa, ja kutsu palaa OBJ-tulosteeseen. Käytä the FbxExporter luokkaa suoraan, jos tarvitset FBX I/O. Formaattituen taulukko merkitsee FBX:n No* tämän vuoksi.
Jos sinun täytyy viedä formaattiin, jonka Blender, Maya tai Unreal Engine hyväksyy, käytä sen sijaan GLB- tai COLLADA-muotoa — molemmat on täysin integroituna 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);Muistissa tapahtuva vienti saveToBuffer()
Serverittomille funktioille, HTTP-vastauksille ja suoratoistoputkille, vie suoraan Buffer kirjoittamatta levylle:
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() ottaa formaattimerkkijonon ensimmäisenä argumenttina (esim. 'glb', 'stl', 'obj') ja samat options objects kuin save().
Yhdistämällä openFromBuffer() ja saveToBuffer()
Täysin muistissa toimiva muunnosputki ilman levy‑I/O:tä missään vaiheessa:
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);
}Kohtien (Scene) valmistelu tiettyihin renderöijiin
Three.js / Babylon.js (Web)
Nämä renderöijät lataavat GLB-tiedostot natiivisti. Vie binaryMode = true. Jos tekstuurit viittaavat lähde-OBJ:stä, varmista että .mtl ja kuvatiedostot sijaitsevat samassa hakemistossa latauksen aikana.
model-viewer (Web‑komponentti)
Hyväksyy .glb suoraan. Samat vientiasetukset kuin Three.js.
Godot Engine
Tuo GLB Godotin tuontityökalulla (Project → Import). Käytä binaryMode = true. Godot tukee PBR-materiaaleja glTF 2.0:sta natiivisti.
Blender
Parhaan tuonnin tarkkuuden saavuttamiseksi käytä glTF (output.gltf + output.bin) tai GLB (output.glb). Blenderin glTF 2.0 -tuonti käsittelee PBR-materiaaleja ja animaatiota. Huomaa: FBX-tulostus kautta scene.save() ei ole tuettu — FBX-muodon automaattitunnistus ei ole kytketty tallennusjakajaan.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Vie STL‑ tai 3MF‑muotoon. Käytä 3MF:ää, kun tarvitset värin tai materiaalimetatiedon säilymisen. Käytä STL:ää maksimaalisen yhteensopivuuden vuoksi.
Vientiformaattien vertailu
| Muoto | Tiedostopääte | Materiaalit | Animaatio | Yksi tiedosto | Paras käyttötarkoitus |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Kyllä | Kyllä | Web, pelit, yleinen jakelu |
| glTF | .gltf | PBR (glTF 2.0) | Kyllä | Ei (+ .bin) | Kehitys, tarkastus |
| STL | .stl | Ei | Ei | Kyllä | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Ei* | Ei* | Tuonti/vienti on olemassa, mutta ei ole kytketty automaattitunnistukseen |
| COLLADA | .dae | Kyllä | Kyllä | Kyllä | Cross-DCC-vaihto |
| 3MF | .3mf | Väri/materiaali | Ei | Kyllä | Moderni 3D-tulostus |
Yleisiä vientiongelmia
| Oire | Syy | Korjaus |
|---|---|---|
| Tuloste GLB avautuu JSON-muodossa katselimessa | binaryMode jäljelle jätetty false | Aseta opts.binaryMode = true |
| Tekstuureja puuttuu GLB‑tulosteessa | binaryMode ei asetettu | Aseta opts.binaryMode = true itsenäistä GLB:tä varten |
| STL-tiedostossa ei ole väriä leikkausohjelmassa | STL-muoto ei tue väriä | Käytä 3MF:ää väridataa varten |
saveToBuffer palauttaa tyhjän puskurin | Muotoilumerkkijonon argumentti puuttuu tai on väärä | Anna muotoilumerkkijono, esim. 'glb', 'stl', tai 'obj' |
| FBX avautuu ilman animaatiota Blenderissä | Lähdetiedostossa (OBJ/STL) ei ole animaatiota | Animaatio siirtyy vain, jos se on läsnä lähteessä |
| Tulostiedosto on erittäin suuri | Lähde-OBJ:ssä on paljon päällekkäisiä verteksipisteitä | GLB-binäärituloste poistaa kaksoiskappaleet jo itsessään; tarkista lähde‑omaisuuden laatu |
Katso myös
- Mallin lataus: 3D-tiedostojen lataus levystä ja puskureista
- Kohtausgrafi: kohtauksen rakentaminen ja muokkaaminen ennen vientiä
- Formaattituki: täydellinen luku/kirjoitusmatriisi
- API-yleiskatsaus: kaikki luokat ja enumit