Redare scenă și export

@aspose/3d este o bibliotecă de procesare și conversie și nu efectuează randare GPU sau produce fișiere imagine. „Randarea” în contextul acestei biblioteci înseamnă exportarea unei scene într-un format pe care un renderer ulterior, motor de jocuri sau vizualizator îl poate consuma.

Această pagină acoperă toate căile de export: salvarea pe fișier, ieșirea în buffer în memorie, opțiuni specifice formatului și cum să pregătiți scenele pentru țintele comune ulterioare (Three.js, Babylon.js, vizualizatoare de modele și motoare de jocuri).

Export de bază

Apel scene.save() cu o cale de fișier. Biblioteca deduce formatul de ieșire din extensia fișierului:

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

Exportarea în GLB (Recomandat pentru Web și Jocuri)

GLB (glTF 2.0 binar) este un singur fișier autonom care încorporează toate datele de mesh, materialele și texturile. Este formatul de ieșire recomandat pentru vizualizatoare web (Three.js, Babylon.js, model-viewer) și motoare de jocuri (Godot, Unity prin importator):

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

Set binaryMode = true pentru a produce un fișier GLB autonom. Când false, ieșirea este un .gltf fișier JSON cu un .bin buffer sidecar.

Exportarea în glTF (Format JSON pentru Inspecție)

Varianta JSON (.gltf + .bin) este utilă în timpul dezvoltării deoarece JSON-ul este ușor de citit de către oameni:

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

Exportarea în STL (Fluxuri de lucru pentru imprimare 3D)

STL conține doar geometrie (fără materiale, fără animație). Este formatul standard de schimb pentru slicerele de imprimare 3D:

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

Set binaryMode = false pentru a produce STL ASCII, care este citibil ca text, dar este mai mare.

Exportarea în FBX (Fluxuri de lucru cu instrumente DCC)

Notă: Clasele de import și export FBX există în bibliotecă, dar detectarea automată a formatului FBX nu este integrată în scene.open() sau scene.save(). Apel scene.save('output.fbx', opts) nu va invoca exportatorul FBX — the .fbx extensia nu este recunoscută de dispatcher‑ul de salvare și apelul va reveni la ieșirea OBJ. Folosiți FbxExporter clasa direct dacă ai nevoie de FBX I/O. Tabelul de suport al formatelor marchează FBX ca No* din acest motiv.

Dacă trebuie să exporți într-un format acceptat de Blender, Maya sau Unreal Engine, folosește GLB sau COLLADA în schimb — ambele sunt complet integrate în. 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 în memorie cu saveToBuffer()

Pentru funcții serverless, răspunsuri HTTP și conducte de streaming, exportă direct către un Buffer fără a scrie pe disc:

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() primește un șir de format ca prim argument (de ex. 'glb', 'stl', 'obj') și aceleași obiecte de opțiuni ca save().

Combinarea openFromBuffer() și saveToBuffer()

Un pipeline de conversie complet în memorie, fără I/O pe disc în nicio etapă:

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

Pregătirea scenelor pentru randatoare specifice

Three.js / Babylon.js (Web)

Aceste randatoare încarcă nativ fișiere GLB. Exportă cu binaryMode = true. Dacă texturile sunt referențiate din OBJ-ul sursă, asigură-te că .mtl și fișierele de imagine sunt co-localizate la încărcare.

model-viewer (Componentă Web)

Acceptă .glb direct. Aceleași setări de export ca Three.js.

Godot Engine

Importă GLB prin importatorul Godot (Project → Import). Folosește binaryMode = true. Godot acceptă materialele PBR din glTF 2.0 în mod nativ.

Blender

Pentru cea mai bună fidelitate a importului, folosește glTF (output.gltf + output.bin) sau GLB (output.glb). Importatorul glTF 2.0 al Blenderului gestionează materialele PBR și animația. Notă: exportul FBX prin scene.save() nu este suportat — detectarea automată a formatului FBX nu este integrată în dispatcher-ul de salvare.

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

Exportă în STL sau 3MF. Folosește 3MF când ai nevoie să păstrezi culoarea sau metadatele materialului. Folosește STL pentru compatibilitate maximă.

Comparație de formate de export

FormatExtensieMaterialeAnimațieFișier unicCel mai potrivit pentru
GLB.glbPBR (glTF 2.0)DaDaWeb, jocuri, livrare generală
glTF.gltfPBR (glTF 2.0)DaNu (+ .bin)Dezvoltare, inspecție
STL.stlNuNuDa3D printing, geometry-only
FBX.fbxPhong/PBRNu*Nu*Importator/exportator există, dar nu este integrat în detectarea automată
COLLADA.daeDaDaDaSchimb Cross-DCC
3MF.3mfCuloare/materialNuDaImprimare 3D modernă

Probleme comune de exportare

SimptomCauzăRemediere
Output GLB se deschide ca JSON în vizualizatorbinaryMode lăsat ca falseSet opts.binaryMode = true
Texturi lipsă în output GLBbinaryMode nu este setatSetat opts.binaryMode = true pentru GLB auto-conținut
Fișierul STL nu are culoare în slicerFormatul STL nu suportă culoareaFolosește 3MF pentru date de culoare
saveToBuffer returnează un buffer golArgumentul șirului de format lipsește sau este greșitTransmite șirul de format, de exemplu. 'glb', 'stl', sau 'obj'
FBX se deschide fără animație în BlenderFișierul sursă (OBJ/STL) nu are animațieAnimația este păstrată doar dacă este prezentă în sursă
Fișierul de ieșire este foarte mareOBJ-ul sursă are multe vârfuri duplicateIeșirea binară GLB deduplicatează deja; verificați calitatea activului sursă

Vezi și

 Română