Ainas renderēšana un eksportēšana
@aspose/3d ir apstrādes un konvertēšanas bibliotēka, un tā neveic GPU renderēšanu vai neveido attēlu failus. “Renderēšana” šīs bibliotēkas kontekstā nozīmē eksportēt ainu uz formātu, ko var izmantot lejupplūstošais renderētājs, spēļu dzinējs vai skatītājs.
Šī lapa aptver visus eksportēšanas ceļus: saglabāšanu failā, izvadi atmiņas buferī, formāta specifiskās opcijas un to, kā sagatavot ainas parastiem turpmākajiem mērķiem (Three.js, Babylon.js, modeļu skatītāji un spēļu dzinēji).
Pamata eksportēšana
Izsaukt scene.save() ar faila ceļu. Bibliotēka secina izvades formātu no faila paplašinājuma:
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
Eksportēšana uz GLB (ieteicams tīmeklim un spēlēm)
GLB (binārais glTF 2.0) ir viens pašpietiekams fails, kas ietver visus režģa datus, materiālus un tekstūras. Tas ir ieteicamais izvades formāts tīmekļa skatītājiem (Three.js, Babylon.js, model-viewer) un spēļu dzinējiem (Godot, Unity caur importētāju):
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');Iestatīt binaryMode = true lai izveidotu pašpietiekamu GLB failu. Kad false, izvade ir .gltf JSON fails ar atsevišķu .bin bufera blakusfailu.
Eksportēšana uz glTF (JSON formāts pārbaudei)
JSON variants (.gltf + .bin) ir noderīgs izstrādes laikā, jo JSON ir cilvēkam lasāms:
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);Eksportēšana uz STL (3D drukāšanas darba plūsmas)
STL ir tikai ģeometrija (nav materiālu, nav animācijas). Tas ir standarta apmaiņas formāts 3D drukāšanas sliceriem:
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);Iestatīt binaryMode = false lai izveidotu ASCII STL, kas ir teksta lasāms, bet lielāks.
Eksportēšana uz FBX (DCC rīku darba plūsmas)
Piezīme: FBX importētāja un eksportētāja klases pastāv bibliotēkā, bet FBX formāta automātiskā noteikšana nav integrēta scene.open() vai scene.save(). Izsaucot scene.save('output.fbx', opts) neizsauks FBX eksportētāju — tas .fbx paplašinājums netiek atpazīts saglabāšanas izsūtītājā, un izsaukums nokļūs atpakaļ uz OBJ izvadi. Izmantojiet šo FbxExporter klasi tieši, ja jums ir vajadzīgs FBX I/O. Formāta atbalsta tabula norāda FBX kā No* šī iemesla dēļ.
Ja jums ir jāeksportē formātā, ko pieņem Blender, Maya vai Unreal Engine, tā vietā izmantojiet GLB vai COLLADA — abi ir pilnībā integrēti 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);Eksportēšana atmiņā ar saveToBuffer()
Serverless funkcijām, HTTP atbildēm un straumēšanas cauruļvadiem eksportējiet tieši uz Buffer nesaglabājot uz diska:
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() pieņem formāta virkni kā pirmo argumentu (piemēram. 'glb', 'stl', 'obj') un tos pašus opciju objektus kā save().
Apvienojot openFromBuffer() un saveToBuffer()
Pilnīgi atmiņā balstīta konversijas cauruļvads bez diska I/O jebkurā posmā:
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);
}Ainu sagatavošana konkrētām renderētājām
Three.js / Babylon.js (Web)
Šie renderētāji iebūvēti ielādē GLB failus. Eksportējiet ar binaryMode = true. Ja tekstūras tiek atsauktas no avota OBJ, pārliecinieties, ka .mtl un attēlu faili ir kopā novietoti, ielādējot.
model-viewer (Web Component)
Pieņem .glb tieši. Tie pašie eksportēšanas iestatījumi kā Three.js.
Godot Engine
Importējiet GLB, izmantojot Godot importētāju (Project → Import). Izmantojiet binaryMode = true. Godot iebūvēti atbalsta PBR materiālus no glTF 2.0.
Blender
Lai sasniegtu vislabāko importēšanas precizitāti, izmantojiet glTF (output.gltf + output.bin) vai GLB (output.glb). Blender glTF 2.0 importētājs apstrādā PBR materiālus un animāciju. Piezīme: FBX izvade caur scene.save() nav atbalstīta — FBX formāta automātiskā noteikšana nav integrēta saglabāšanas izsūtē.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Eksportējiet uz STL vai 3MF. Izmantojiet 3MF, ja nepieciešams saglabāt krāsu vai materiālu metadatus. Izmantojiet STL, lai nodrošinātu maksimālu saderību.
Eksporta formātu salīdzinājums
| Formāts | Paplašinājums | Materiāli | Animācija | Viens fails | Vislabāk piemērots |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Jā | Jā | Tīmeklis, spēles, vispārēja piegāde |
| glTF | .gltf | PBR (glTF 2.0) | Jā | Nē (+ .bin) | Izstrāde, pārbaude |
| STL | .stl | Nē | Nē | Jā | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Nē* | Nē* | Importētājs/eksportētājs pastāv, bet nav savienots ar automātisko noteikšanu |
| COLLADA | .dae | Jā | Jā | Jā | Cross-DCC apmaiņa |
| 3MF | .3mf | Krāsa/materials | Nē | Jā | Mūsdienu 3D drukāšana |
Biežāk sastopamās eksporta problēmas
| Simptoms | Iemesls | Labojums |
|---|---|---|
| Izvade GLB atveras kā JSON skatītājā | binaryMode atstāts kā false | Iestatīt opts.binaryMode = true |
| Izvades GLB trūkst tekstūru | binaryMode nav iestatīts | Iestatīt opts.binaryMode = true pašpietiekamam GLB |
| STL fails slicerā nav krāsas | STL formāts neatbalsta krāsu | Lietojiet 3MF krāsu datiem |
saveToBuffer atgriež tukšu buferi | Formāta virknes arguments trūkst vai ir nepareizs | Padodiet formāta virkni, piemēram,. 'glb', 'stl', vai 'obj' |
| FBX atveras bez animācijas Blenderā | Avota fails (OBJ/STL) nav animācijas | Animācija tiek pārvietota tikai tad, ja tā ir klātesoša avotā |
| Izvades fails ir ļoti liels | Avota OBJ satur daudz dublētu virsotņu | GLB binārais izvads jau noņem dublikātus; pārbaudiet avota līdzekļa kvalitāti |
Skatīt arī
- Modeļa ielāde: ielādē 3D failus no diska un buferiem
- Ainas grafiks: ainas izveide un modificēšana pirms eksportēšanas
- Formāta atbalsts: pilna lasīšanas/rakstīšanas matrica
- API pārskats: visas klases un enumerācijas