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
| Format | Ekstenzija | Čitanje | Pisanje | Klasa formata | Napomene |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Da | Da | ObjFormat | Čita .mtl materijale; piše .mtl pored .obj |
| glTF 2.0 | .gltf | Da | Da | GltfFormat | JSON tekst + .bin sidecar |
| GLB | .glb | Da | Da | GltfFormat | Binarni glTF; set binaryMode = true |
| STL | .stl | Da | Da | StlFormat | Binarni i ASCII režimi |
| 3MF | .3mf | Da | Da | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Ne* | Ne* | FbxFormat | Postoji uvoz/izvoz, ali automatsko otkrivanje formata nije povezano; nije upotrebljivo putem scene.open() |
| COLLADA | .dae | Da | Da | ColladaFormat | Zahteva 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:
| Opcija | Tip | Podrazumevano | Efekat |
|---|---|---|---|
enableMaterials | boolean | true | Parsiraj .mtl datoteku na koju se referiše mtllib |
flipCoordinateSystem | boolean | false | Okreni Y/Z ose da odgovaraju desnorukim sistemima |
scale | number | 1.0 | Jednoliko skaliranje primenjeno na sve vrhove pri učitavanju |
normalizeNormal | boolean | true | Normalizujte 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,
.mtldatoteka materijala se automatski piše pored the.objdatoteka. - Koristite GLB za isporuku na webu: samostalni binarni format izbegava CORS probleme sa
.binsporednim 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. xmldomje neophodan za COLLADA: se instalira automatski. Nemojte ga dodavati upeerDependenciesili pokušajte da ga uklonite; COLLADA čitač ga poziva direktno.
Uobičajeni problemi
| Simptom | Verovatni uzrok | Popravka |
|---|---|---|
| OBJ materijali su prazni nakon učitavanja | enableMaterials nije postavljeno | Prolaz ObjLoadOptions sa enableMaterials = true |
GLB proizvodi .bin sidecar | binaryMode podrazumevano na false | Postavi opts.binaryMode = true u GltfSaveOptions |
scene.open() baca “unsupported format” | Ekstenzija fajla nije prepoznata | Prosledite podudaranje *LoadOptions klasu ili koristite openFromBuffer() |
| Učitavanje COLLADA ne uspeva sa XML greškom | xmldom nedostaje ili ne podudara se | Pokreni npm install @aspose/3d ponovo; xmldom je direktna zavisnost |
| STL normale izgubljene pri ASCII izvozu | ASCII STL odbacuje normale po površini | Koristi binaryMode = true za izlaz koji čuva normale |
Vidi takođe
- Karakteristike i funkcionalnosti: graf scena, mreža, materijali, animacija i matematički API‑ji.
- Graf scena: izgradnja i prolazak kroz stablo čvorova.
- Kako programatski izgraditi 3D mesh.