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átumKiterjesztésOlvasásÍrásFormátumosztályMegjegyzések
Wavefront OBJ.objIgenIgenObjFormatOlvas .mtl anyagokat; ír .mtl együtt .obj
glTF 2.0.gltfIgenIgenGltfFormatJSON szöveg + .bin sidecar
GLB.glbIgenIgenGltfFormatBináris glTF; beállítva binaryMode = true
STL.stlIgenIgenStlFormatBináris és ASCII módok
3MF.3mfIgenIgenThreeMfFormat3D Manufacturing Format
FBX.fbxNem*Nem*FbxFormatAz importáló/exportáló létezik, de a formátum automatikus felismerése nincs bekötve; nem használható a scene.open()
COLLADA.daeIgenIgenColladaFormatSzü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ásTípusAlapértelmezettHatás
enableMaterialsbooleantrueElemezze a .mtl a következő által hivatkozott fájl mtllib
flipCoordinateSystembooleanfalseFordítsa meg az Y/Z tengelyeket a jobbkezes rendszereknek megfelelően
scalenumber1.0Egységes skálázás alkalmazva minden csúcsra betöltéskor
normalizeNormalbooleantrueNormalizá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 .mtl anyagfájl automatikusan a .obj fá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 .bin sidecar 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.
  • xmldom szükséges a COLLADA-hoz: automatikusan települ. Ne adja hozzá peerDependencies vagy próbálja eltávolítani; a COLLADA olvasó közvetlenül hívja.

Gyakori problémák

TünetValószínű okJavítás
Az OBJ anyagok üresek a betöltés utánenableMaterials nincs beállítvaÁtadás ObjLoadOptions val enableMaterials = true
A GLB előállít egy .bin sidecarbinaryMode alapértelmezettként falseBeállítás opts.binaryMode = true ban GltfSaveOptions
scene.open() “unsupported format” hibát dobA fájlkiterjesztés nem felismertAdja át a megfelelő *LoadOptions osztályt vagy használja openFromBuffer()
A COLLADA betöltés XML hibával meghiúsulxmldom 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ánAz ASCII STL elhagyja az egyes felületek normálvektoraitHasználja binaryMode = true normálmegőrző kimenethez

Lásd még

 Magyar