Podrška za 3D formate

Aspose.3D FOSS za TypeScript čita i piše sedam glavnih 3D formata datoteka. Detekcija formata je automatska prilikom učitavanja: biblioteka pregleda binarne magične brojeve, tako da ne morate da navodite izvorni format. Klase opcija specifičnih za format se uvoze iz pod‑putanja paketa. @aspose/3d paket.

Podržani formati

FormatEkstenzijaČitanjePisanjeKlasa formataNapomene
Wavefront OBJ.objDaDaObjFormatČita .mtl materijale; piše .mtl pored .obj
glTF 2.0.gltfDaDaGltfFormatJSON tekst + .bin sidecar
GLB.glbDaDaGltfFormatBinarni glTF; set binaryMode = true
STL.stlDaDaStlFormatBinarni i ASCII režimi
3MF.3mfDaDaThreeMfFormat3D Manufacturing Format
FBX.fbxNe*Ne*FbxFormatPostoji uvoz/izvoz, ali automatsko otkrivanje formata nije povezano; nije upotrebljivo putem scene.open()
COLLADA.daeDaDaColladaFormatZahteva xmldom (automatski instalirano)

OBJ (Wavefront)

OBJ podržava i uvoz i izvoz u @aspose/3d. Prilikom čuvanja kao OBJ, biblioteka materijala (.mtl) se automatski zapisuje pored .obj datoteke. Koristite ObjLoadOptions za kontrolu učitavanja materijala i ponašanja koordinatnog sistema.

Ključne opcije za ObjLoadOptions:

OpcijaTipPodrazumevanoEfekat
enableMaterialsbooleantrueParsiraj .mtl datoteku na koju se referiše mtllib
flipCoordinateSystembooleanfalseOkreni Y/Z ose da odgovaraju desnorukim sistemima
scalenumber1.0Jednoliko skaliranje primenjeno na sve vrhove pri učitavanju
normalizeNormalbooleantrueNormalizujte normale vrhova na jedinicnu dužinu
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;

scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);

Da biste konvertovali OBJ u bilo koji format koji se može zapisati, učitajte ga i pozovite scene.save() sa klasom ciljnog formata.

glTF i GLB

glTF 2.0 je preporučeni format za razmenu za upotrebu na webu i u game engine-ima. Biblioteka koristi isti GltfFormat (JSON + sidecar) i .gltf (binarni, samostalni) izlaz. Prebacujte se između njih pomoću .glb Prebacujte se između njih pomoću GltfSaveOptions.binaryMode.

Učitaj glTF ili GLB:

import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb');  // format detected from magic bytes

Izvezi kao JSON glTF (.gltf + .bin):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.fbx');

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);

Izvezi kao binarni GLB (.glb):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;  // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);

Koristi binaryMode = true za isporuku proizvodnih sredstava. Jedan .glb se učitava brže u pregledačima i motorima nego razdvojeni tekst + binarni par.

STL

STL je format trouglovanog mrežnog modela koji se koristi u CAD-u i 3D štampi. I binarni i ASCII STL su podržani za unos i izvoz. StlSaveOptions.binaryMode kontroliše da li je izlaz binaran (kompaktniji) ili ASCII (čitljiv za ljude).

import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());

// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);

// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);

STL čuva samo trianguliranu geometriju i normale vrhova. Materijal i UV podaci se ne čuvaju u STL‑u.

3MF (3D Manufacturing Format)

3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.

import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';

const scene = new Scene();
scene.open('model.3mf');

// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());

3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.

FBX

Upozorenje: FBX klase za uvoz i izvoz (FbxImporter, FbxExporter) postoje u biblioteci, ali automatsko otkrivanje FBX formata je nije povezan u scene.open() ili scene.save(). Pozivanje scene.open('file.fbx') neće pozvati FBX uvoznik — fajl će pasti na STL rezervu. Pozivanje scene.save('output.fbx', opts) neće pozvati FBX izvoznik. Tabela podrške formata iznad označava FBX kao No* iz tog razloga. Koristite GLB ili COLLADA za potpuno funkcionalni uvoz i izvoz putem scene.open() / scene.save().

COLLADA (DAE)

COLLADA je XML‑bazirani format za razmenu podržan od strane širokog spektra DCC alata (Blender, Maya, Cinema 4D). Biblioteka koristi the xmldom dependency for XML parsing; it is installed automatically with npm install @aspose/3d.

import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';

const scene = new Scene();
scene.open('model.dae');

// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);

COLLADA files may contain unit-scaling metadata (<unit> element). The library applies unit conversion automatically when loading.

Automatsko otkrivanje formata

When loading from a file path, the library tries format detection from binary magic numbers before falling back to the file extension. This means you can load a GLB file named .bin or an STL file named .model without specifying the format explicitly.

When loading from a Buffer sa scene.openFromBuffer(), detekcija magičnog broja je primarni mehanizam:

import { Scene } from '@aspose/3d';
import * as fs from 'fs';

const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer);  // format detected from magic bytes: 'glTF'

console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);

Formati sa pouzdanim magičnim brojevima: GLB (glTF), STL binarni (80‑bajt zaglavlje + broj trouglova), 3MF (ZIP magija PK). OBJ i COLLADA su tekstualni i detektuju se po ekstenziji fajla ili po klasi opcija koju prosledite.

Saveti

  • OBJ podržava i uvoz i izvoz: prilikom čuvanja kao OBJ, .mtl datoteka materijala se automatski piše pored the .obj datoteka.
  • Koristite GLB za isporuku na webu: samostalni binarni format izbegava CORS probleme sa .bin sporednim fajlovima i učitava se brže u WebGL rendererima.
  • Prosledite opcije specifične za format: generički scene.open(path) radi za većinu formata, ali prosleđivanje klase opcija učitavača omogućava ponašanje specifično za format, kao što su učitavanje materijala za OBJ ili normalizacija koordinata za STL.
  • xmldom je neophodan za COLLADA: se instalira automatski. Nemojte ga dodavati u peerDependencies ili pokušajte da ga uklonite; COLLADA čitač ga poziva direktno.

Uobičajeni problemi

SimptomVerovatni uzrokPopravka
OBJ materijali su prazni nakon učitavanjaenableMaterials nije postavljenoProlaz ObjLoadOptions sa enableMaterials = true
GLB proizvodi .bin sidecarbinaryMode podrazumevano na falsePostavi opts.binaryMode = true u GltfSaveOptions
scene.open() baca “unsupported format”Ekstenzija fajla nije prepoznataProsledite podudaranje *LoadOptions klasu ili koristite openFromBuffer()
Učitavanje COLLADA ne uspeva sa XML greškomxmldom nedostaje ili ne podudara sePokreni npm install @aspose/3d ponovo; xmldom je direktna zavisnost
STL normale izgubljene pri ASCII izvozuASCII STL odbacuje normale po površiniKoristi binaryMode = true za izlaz koji čuva normale

Vidi takođe

 Српски