3D formátumtámogatás
Aspose.3D FOSS TypeScript-hez olvas és ír hét fő 3D fájlformátumot. A formátumdetektálás automatikus betöltéskor: a könyvtár a bináris varázsszámokat vizsgálja, így nem kell megadni a forrásformátumot. Formátumspecifikus opcióosztályok az al-útvonalakból importálódnak a @aspose/3d csomag.
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás | Formátumosztály | Megjegyzések |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Igen | Igen | ObjFormat | Olvas .mtl anyagokat; ír .mtl együtt .obj |
| glTF 2.0 | .gltf | Igen | Igen | GltfFormat | JSON szöveg + .bin sidecar |
| GLB | .glb | Igen | Igen | GltfFormat | Bináris glTF; beállítva binaryMode = true |
| STL | .stl | Igen | Igen | StlFormat | Bináris és ASCII módok |
| 3MF | .3mf | Igen | Igen | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Nem* | Nem* | FbxFormat | Az importáló/exportáló létezik, de a formátum automatikus felismerése nincs bekötve; nem használható a scene.open() |
| COLLADA | .dae | Igen | Igen | ColladaFormat | Szükséges xmldom (automatikusan telepítve) |
OBJ (Wavefront)
Az OBJ támogatja az importot és az exportot a @aspose/3d. OBJ mentésekor a material library (.mtl) automatikusan a … mellé íródik .obj fájl. Használja ObjLoadOptions az anyagbetöltés és a koordináta‑rendszer viselkedésének szabályozásához.
Kulcsfontosságú beállítások a ObjLoadOptions:
| Beállítás | Típus | Alapértelmezett | Hatás |
|---|---|---|---|
enableMaterials | boolean | true | Elemezze a .mtl a következő által hivatkozott fájl mtllib |
flipCoordinateSystem | boolean | false | Fordítsa meg az Y/Z tengelyeket a jobbkezes rendszereknek megfelelően |
scale | number | 1.0 | Egységes skálázás alkalmazva minden csúcsra betöltéskor |
normalizeNormal | boolean | true | Normalizálja a csúcsnormálvektorokat egység hosszra |
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)`);Az OBJ bármely írható formátumba konvertálásához töltse be, majd hívja meg scene.save() a célformátum osztállyal.
glTF and GLB
A glTF 2.0 a webes és játékenginekhez ajánlott csereformátum. A könyvtár ugyanazt a GltfFormat osztályt mindkettőhöz .gltf (JSON + sidecar) és .glb (bináris, önálló) kimenet. Váltson közöttük a GltfSaveOptions.binaryMode.
glTF vagy GLB betöltése:
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
Exportálás JSON glTF-ként (.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);Exportálás bináris GLB-ként (.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);Használja binaryMode = true A termelési eszközök szállításához. Egyetlen .glb gyorsabban betöltődik a böngészőkben és motorokban, mint a szétválasztott szöveg + bináris páros.
STL
Az STL egy háromszögekkel felosztott hálóformátum, amelyet CAD-ben és 3D nyomtatásban használnak. A bináris és az ASCII STL egyaránt támogatott bemenetként és kimenetként. StlSaveOptions.binaryMode szabályozza, hogy a kimenet bináris (tömör) vagy ASCII (ember által olvasható) legyen.
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);Az STL csak a háromszögelt geometriát és a csúcsponti normálvektorokat tárolja. Az anyag- és UV‑adatok nem maradnak meg az STL‑ben.
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
Figyelmeztetés: FBX importáló és exportáló osztályok (FbxImporter, FbxExporter) léteznek a könyvtárban, de az FBX formátum automatikus felismerése nincs bekötve be scene.open() vagy scene.save(). A(z) scene.open('file.fbx') nem fogja meghívni az FBX importálót — a fájl az STL tartalékra fog átmenni. scene.save('output.fbx', opts) nem fogja meghívni az FBX exportálót. A fenti formátumtámogatási táblázat az FBX-et úgy jelöli, hogy No* ezért. Használjon GLB-t vagy COLLADA-t a teljes funkcionalitású import és export érdekében a scene.open() / scene.save().
COLLADA (DAE)
A COLLADA egy XML-alapú csereformátum, amelyet számos DCC eszköz (Blender, Maya, Cinema 4D) támogat. A könyvtár a xmldom függőséget használja XML feldolgozáshoz; automatikusan települ a 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);A COLLADA fájlok tartalmazhatnak egységskálázási metaadatokat (<unit> elem). A könyvtár automatikusan alkalmaz egységkonverziót betöltéskor.
Formátum automatikus felismerése
Fájlútvonalról betöltéskor a könyvtár megpróbálja a formátum felismerését a bináris varázsszámok alapján, mielőtt a fájlkiterjesztésre támaszkodna. Ez azt jelenti, hogy betölthetsz egy GLB fájlt, amelynek a neve .bin vagy egy STL fájlt, amelynek a neve .model anélkül, hogy explicit módon megadnád a formátumot.
Betöltéskor egy Buffer val scene.openFromBuffer(), a magic-number észlelés az elsődleges mechanizmus:
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)`);Formátumok megbízható magic számokkal: GLB (glTF), STL bináris (80 bájtos fejléc + háromszög szám), 3MF (ZIP magic PK). Az OBJ és a COLLADA szöveges alapú, és a fájlkiterjesztés vagy a megadott options osztály alapján kerülnek felismerésre.
Tippek
- Az OBJ támogatja az importot és az exportot is: OBJ-ként mentéskor a
.mtlanyagfájl automatikusan a.objfájl mellé kerül. - Használja a GLB-t webes szállításhoz: az önálló bináris formátum elkerüli a CORS problémákat a
.binsidecar fájlokkal, és gyorsabban tölt be a WebGL rendererekben. - Adjon meg formátum-specifikus beállításokat: általános
scene.open(path)működik a legtöbb formátumnál, de a loader options osztály átadása lehetővé teszi a formátum-specifikus viselkedést, például OBJ anyag betöltést vagy STL koordináta normalizálást. xmldomszükséges a COLLADA-hoz: automatikusan települ. Ne adja hozzápeerDependenciesvagy próbálja eltávolítani; a COLLADA olvasó közvetlenül hívja.
Gyakori problémák
| Tünet | Valószínű ok | Javítás |
|---|---|---|
| Az OBJ anyagok üresek a betöltés után | enableMaterials nincs beállítva | Átadás ObjLoadOptions val enableMaterials = true |
A GLB előállít egy .bin sidecar | binaryMode alapértelmezettként false | Beállítás opts.binaryMode = true ban GltfSaveOptions |
scene.open() “unsupported format” hibát dob | A fájlkiterjesztés nem felismert | Adja át a megfelelő *LoadOptions osztályt vagy használja openFromBuffer() |
| A COLLADA betöltés XML hibával meghiúsul | xmldom hiányzó vagy nem egyező | Futtatás npm install @aspose/3d újra; xmldom egy közvetlen függőség |
| STL normálok elvesznek az ASCII exportálás során | Az ASCII STL elhagyja az egyes felületek normálvektorait | Használja binaryMode = true normálmegőrző kimenethez |
Lásd még
- Jellemzők és funkciók: jelenetgraf, háló, anyagok, animáció és matematikai API-k.
- Jelenetgraf: a csomópontfa felépítése és bejárása.
- Hogyan építsünk 3D Mesh-et programozottan.