3D-formatstøtte
Aspose.3D FOSS for TypeScript leser og skriver syv store 3D‑filformater. Formatgjenkjenning er automatisk ved lasting: biblioteket inspiserer binære magiske tall, så du trenger ikke å spesifisere kildeformatet. Format‑spesifikke alternativklasser importeres fra under‑stier av @aspose/3d pakken.
Støttede formater
| Format | Filtype | Les | Skriv | Formatklasse | Merknader |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Ja | Ja | ObjFormat | Leser .mtl materialer; skriver .mtl ved siden av .obj |
| glTF 2.0 | .gltf | Ja | Ja | GltfFormat | JSON-tekst + .bin sidecar |
| GLB | .glb | Ja | Ja | GltfFormat | Binær glTF; satt binaryMode = true |
| STL | .stl | Ja | Ja | StlFormat | Binære og ASCII-moduser |
| 3MF | .3mf | Ja | Ja | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Nei* | Nei* | FbxFormat | Importør/eksportør finnes, men automatisk formatgjenkjenning er ikke koblet; ikke brukbar via scene.open() |
| COLLADA | .dae | Ja | Ja | ColladaFormat | Krever xmldom (automatisk installert) |
OBJ (Wavefront)
OBJ støtter både import og eksport i @aspose/3d. Når du lagrer som OBJ, er materialbiblioteket (.mtl) skrives automatisk ved siden av .obj fil. Bruk ObjLoadOptions for å kontrollere materiallasting og koordinatsystemets oppførsel.
Nøkkelalternativer for ObjLoadOptions:
| Alternativ | Type | Standard | Effekt |
|---|---|---|---|
enableMaterials | boolean | true | Analyser .mtl fil referert av mtllib |
flipCoordinateSystem | boolean | false | Vend Y/Z-aksene for å matche høyrehåndede systemer |
scale | number | 1.0 | Enhetlig skalering brukt på alle vertikser ved lasting |
normalizeNormal | boolean | true | Normaliser vertexnormaler til enhetslengde |
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)`);For å konvertere en OBJ til et skrivbart format, last den inn og kall scene.save() med målformatklassen.
glTF og GLB
glTF 2.0 er det anbefalte utvekslingsformatet for web- og spillmotorbruk. Biblioteket bruker den samme GltfFormat klassen for både .gltf (JSON + sidecar) og .glb (binær, selvstendig) output. Veksle mellom dem med GltfSaveOptions.binaryMode.
Last glTF eller 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
Eksporter som 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);Eksporter som binær 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);Bruk binaryMode = true for produksjonslevering av eiendeler. En enkelt .glb laster raskere i nettlesere og motorer enn det splittede tekst + binærpar.
STL
STL er et triangulert nettformat som brukes i CAD og 3D‑utskrift. Både binær og ASCII STL støttes for inn- og utdata. StlSaveOptions.binaryMode styrer om utdata er binær (kompakt) eller ASCII (menneskelig lesbar).
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 lagrer kun triangulert geometri og vertex‑normaler. Materiale‑ og UV‑data bevares ikke i STL.
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
Advarsel: FBX-importør- og eksportørklasser (FbxImporter, FbxExporter) finnes i biblioteket, men automatisk gjenkjenning av FBX-format er ikke koblet inn i scene.open() eller scene.save(). Å kalle scene.open('file.fbx') vil ikke aktivere FBX-importøren — filen vil falle tilbake til STL-alternativet. Å kalle scene.save('output.fbx', opts) vil ikke aktivere FBX-eksportøren. Formatstøttabellen ovenfor merker FBX som No* av denne grunn. Bruk GLB eller COLLADA for fullt funksjonell import og eksport via scene.open() / scene.save().
COLLADA (DAE)
COLLADA er et XML-basert utvekslingsformat som støttes av et bredt spekter av DCC-verktøy (Blender, Maya, Cinema 4D). Biblioteket bruker den xmldom avhengigheten for XML-parsing; den installeres automatisk med 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-filer kan inneholde metadata for enhetsskala (<unit> element). Biblioteket utfører enhetskonvertering automatisk ved lasting.
Automatisk formatgjenkjenning
Når du laster fra en filsti, prøver biblioteket å oppdage formatet fra binære magiske tall før det faller tilbake på filendelsen. Dette betyr at du kan laste en GLB‑fil som heter .bin eller en STL‑fil som heter .model uten å spesifisere formatet eksplisitt.
Når du laster fra en Buffer med scene.openFromBuffer(), magisk-nummerdeteksjon er den primære mekanismen:
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)`);Formater med pålitelige magiske numre: GLB (glTF), STL binær (80‑bytes header + trekanttall), 3MF (ZIP magisk PK). OBJ og COLLADA er tekstbaserte og blir oppdaget fra filendelse eller av alternativklassen du sender.
Tips
- OBJ støtter både import og eksport: ved lagring som OBJ, blir
.mtlmaterialfilen skrives automatisk ved siden av den.objfilen. - Bruk GLB for weblevering: det selvstendige binære formatet unngår CORS-problemer med
.binsidecars og lastes raskere i WebGL-renderere. - Send formatspesifikke alternativer: generisk
scene.open(path)fungerer for de fleste formater, men å sende loader‑alternativklassen aktiverer formatspesifikt oppførsel som OBJ‑materiallasting eller STL‑koordinatnormalisering. xmldomer påkrevd for COLLADA: den installeres automatisk. Ikke legg den tilpeerDependencieseller prøv å fjerne den; COLLADA-leseren kaller den direkte.
Vanlige problemer
| Symptom | Sannsynlig årsak | Fiks |
|---|---|---|
| OBJ-materialer er tomme etter lasting | enableMaterials ikke satt | Pass ObjLoadOptions med enableMaterials = true |
GLB produserer en .bin sidecar | binaryMode standard til false | Angi opts.binaryMode = true i GltfSaveOptions |
scene.open() kaster “unsupported format” | Filtype ikke gjenkjent | Send den matchende *LoadOptions klassen eller bruk openFromBuffer() |
| COLLADA-innlasting mislykkes med XML-feil | xmldom manglende eller feilmatchende | Kjør npm install @aspose/3d igjen; xmldom er en direkte avhengighet |
| STL normals mistet i ASCII-eksport | ASCII STL utelater per-flate normaler | Bruk binaryMode = true for normalbevarende output |
Se også
- Funksjoner og funksjonalitet: scene graph, mesh, materials, animation, and math APIs.
- Scenegraph: bygging og traversering av nodetreet.
- Hvordan bygge en 3D-mesh programmatisk