Ainas renderēšana un eksportēšana

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ātsPaplašinājumsMateriāliAnimācijaViens failsVislabāk piemērots
GLB.glbPBR (glTF 2.0)Tīmeklis, spēles, vispārēja piegāde
glTF.gltfPBR (glTF 2.0)Nē (+ .bin)Izstrāde, pārbaude
STL.stl3D printing, geometry-only
FBX.fbxPhong/PBRNē*Nē*Importētājs/eksportētājs pastāv, bet nav savienots ar automātisko noteikšanu
COLLADA.daeCross-DCC apmaiņa
3MF.3mfKrāsa/materialsMūsdienu 3D drukāšana

Biežāk sastopamās eksporta problēmas

SimptomsIemeslsLabojums
Izvade GLB atveras kā JSON skatītājābinaryMode atstāts kā falseIestatīt opts.binaryMode = true
Izvades GLB trūkst tekstūrubinaryMode nav iestatītsIestatīt opts.binaryMode = true pašpietiekamam GLB
STL fails slicerā nav krāsasSTL formāts neatbalsta krāsuLietojiet 3MF krāsu datiem
saveToBuffer atgriež tukšu buferiFormāta virknes arguments trūkst vai ir nepareizsPadodiet formāta virkni, piemēram,. 'glb', 'stl', vai 'obj'
FBX atveras bez animācijas BlenderāAvota fails (OBJ/STL) nav animācijasAnimācija tiek pārvietota tikai tad, ja tā ir klātesoša avotā
Izvades fails ir ļoti lielsAvota OBJ satur daudz dublētu virsotņuGLB binārais izvads jau noņem dublikātus; pārbaudiet avota līdzekļa kvalitāti

Skatīt arī

 Latviešu