Podpora 3D formátu
Aspose.3D FOSS pro TypeScript čte a píše sedm hlavních 3D formátů souborů. Detekce formátu je automatická při načítání: knihovna zkontroluje binární magické čísla, takže nemusíte specifikovat zdrojový formáty. Klasi variant specifických pro formaty jsou importovány ze podcestí aplikace . @aspose/3d balíček.
Podporované formáty
| Formát | Rozšíření | Čtěte. | Píšeš. | Třída formátu | Poznámky |
|---|---|---|---|---|---|
| OBJ | .obj | Ano , ano . | Ano , ano . | ObjFormat | Objektování na vlnové čele; čte se: .mtl materiály; píše .mtl vedle sebe .obj |
| glTF | .gltf / .glb | Ano , ano . | Ano , ano . | GltfFormat | binární JSON a GLB v rámci glTF 2.0 |
| STL | .stl | Ano , ano . | Ano , ano . | StlFormat | Binární a ASCII režimy |
| 3MF | .3mf | Ano , ano . | Ano , ano . | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Ne* | Ne* | FbxFormat | Existují dovozci/vývozci, ale automatická detekce formátu není propojená; nepoužitelná prostřednictvím systému ISOFIX. scene.open() |
| COLLADA | .dae | Ano , ano . | Ano , ano . | ColladaFormat | Požadavky xmldom (automaticky nainstalovaný) |
OBJ (Wavefront)
OBJ podporuje jak dovoz, tak vývoz v České republice. @aspose/3d.Při ukládání jako OBJ se u materiálu nachází knihovna (.mtl) se automaticky zapíše vedle čísla “Připravené” (včetně čísel: .obj Použití souboru. ObjLoadOptions ovládání zatížení materiálu a koordinace chování systému.
Klíčové možnosti pro: ObjLoadOptions:
| Možnost: | Typ: | Předvoleně | Účinek |
|---|---|---|---|
enableMaterials | boolean | true | Prozkoumejte to. .mtl soubor, na který se odkazuje: mtllib |
flipCoordinateSystem | boolean | false | Otočte osy Y/Z tak, aby odpovídaly systémům praváky. |
scale | number | 1.0 | Jednotná stupnice aplikovaná na všechny vrcholy při zatížení. |
normalizeNormal | boolean | true | Normalizace normálního vrcholu na jednotku délky |
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)`);Chcete-li přeměnit OBJ do jakéhokoli formátu, který je možné napsat, naložte ho a zavolejte: scene.save() s cílovou třídou formátu.
glTF a GLB
glTF 2.0 je doporučený formát pro výměnu webových a herních motorů. Knihovna používá stejné GltfFormat třída pro oba .gltf (JSON + sidecar) a .glb (binární, samostatný) výstup. Přepínat mezi nimi s GltfSaveOptions.binaryMode.
Náklad glTF nebo 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
Export jako 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);Vývoz jako binární 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);Použití: binaryMode = true Jednotná výroba, která je součástí výrobního aktiva. .glb v prohlížečích a motorech se načte rychleji než rozdělený text + binární pár.
STL
STL je formát třístranného sítě používaný v CAD a 3D tisku. Obě binární a ASCII ST L jsou podporovány pro vstup a výstup . StlSaveOptions.binaryMode ovládá, zda je výstup binární (kompaktivní) nebo ASCII (čitelný pro člověka).
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 ukládá pouze triangulační geometrii a normály vrcholu. Materiální údaje a UV data nejsou uchovávána v ST L.
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
Varování:: třídy dovozců a vývozců FBX (
FbxImporter,FbxExporter) existují v knihovně, ale FBX formát automatické detekce je bez drátů do …scene.open()nebo:scene.save().Volám .scene.open('file.fbx')nebude odvolávat dovozce FBX soubor se dostane do rezervního systému STL.scene.save('output.fbx', opts)nebude odvolávat FBX exportér. V tabulce podpory formátu výše je označeno FBx jakoNo*Použijte GLB nebo COLLADA pro plně funkční dovoz a vývoz prostřednictvím systému GPL.scene.open()/scene.save().
COLLADA (DAE)
COLLADA je formát výměny založený na XML, který podporuje širokou škálu nástrojů DCC (Blender, Maya, Cinema 4D). Knihovna používá xmldom závislost na analýze XML; je automaticky instalován s 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);Soubory COLLADA mohou obsahovat metadata pro jednotkové měření (<unit> Knihovna automaticky připojuje konverzi jednotek po načtení.
Formát automatického detekce
Při načítání z cesty souboru se knihovna pokouší detekovat formát ze binárních magických čísel, než se vrátí ke rozšíření souborů. To znamená, že můžete načíst soubory GLB jménem .bin nebo soubor STL s názvem: .model bez výslovného upřesnění formátu.
Při nakládání z Buffer s: scene.openFromBuffer(), detekce magických čísel je primární mechanismus:
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áty s spolehlivými magickými čísly: GLB (glTF), STL binární (80-byte hlavička + počet trojúhelníků), 3MF (ZIP magie) PK) OBJ a COLLADA jsou textové a je detekováno z rozšíření souboru nebo třídou možností, kterou projdete.
Tipy.
- OBJ podporuje jak dovoz, tak vývoz.: při ukládání jako OBJ, se
.mtlmateriální soubor je napsán automaticky vedle.obj- Soubor. - Použití GLB pro webovou distribuci: samostatný binární formát zabraňuje problémům s CORS pomocí
.binSidecars a naloží rychleji v renderingu WebGL. - Projít formátem specifické možnosti: obecné
scene.open(path)funguje pro většinu formátů, ale přechodem třídy možnosti nakladače umožňuje chování specifické pro formáty, jako je načítání materiálu OBJ nebo normalizace souřadnic STL. xmldomje nutná pro COLLADA.: je instalován automaticky. Nepridajte ho do aplikace:peerDependenciesnebo se ho pokusit odstranit, čtenář COLLADA to volá přímo.
Obvyklé problémy
| Příznak: | Pravděpodobná příčina | Opravy |
|---|---|---|
| Materiály OBJ jsou po naložení prázdné. | enableMaterials Nevyhodněné | Procházející. ObjLoadOptions s: enableMaterials = true |
GLB vyrábí .bin nádrž | binaryMode zpoždění false | Sestavení: opts.binaryMode = true v . GltfSaveOptions |
scene.open() vypustí “nepodporovaný formát” | Rozšíření souboru není rozpoznáno | Přejít shodu . *LoadOptions třída nebo použití openFromBuffer() |
| Nespravitelné načtení COLLADA s chybou XML | xmldom chybí nebo se neshodují. | Běžte. npm install @aspose/3d znovu; xmldom je přímá závislost |
| Ztráta normálů STL při vývozu ASCII | ASCII STL klesá na normály za obličej | Použití: binaryMode = true pro výstup při zachování normálu, |
Viz také:
- Charakteristika a funkčnost: grafický scénář, sítě, materiály, animace a matematické API.
- Graf scény: budování a procházení uzlového stromu.
- Jak programově vytvořit 3D síť?