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

FormatFiltypeLesSkrivFormatklasseMerknader
Wavefront OBJ.objJaJaObjFormatLeser .mtl materialer; skriver .mtl ved siden av .obj
glTF 2.0.gltfJaJaGltfFormatJSON-tekst + .bin sidecar
GLB.glbJaJaGltfFormatBinær glTF; satt binaryMode = true
STL.stlJaJaStlFormatBinære og ASCII-moduser
3MF.3mfJaJaThreeMfFormat3D Manufacturing Format
FBX.fbxNei*Nei*FbxFormatImportør/eksportør finnes, men automatisk formatgjenkjenning er ikke koblet; ikke brukbar via scene.open()
COLLADA.daeJaJaColladaFormatKrever 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:

AlternativTypeStandardEffekt
enableMaterialsbooleantrueAnalyser .mtl fil referert av mtllib
flipCoordinateSystembooleanfalseVend Y/Z-aksene for å matche høyrehåndede systemer
scalenumber1.0Enhetlig skalering brukt på alle vertikser ved lasting
normalizeNormalbooleantrueNormaliser 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 .mtl materialfilen skrives automatisk ved siden av den .obj filen.
  • Bruk GLB for weblevering: det selvstendige binære formatet unngår CORS-problemer med .bin sidecars 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.
  • xmldom er påkrevd for COLLADA: den installeres automatisk. Ikke legg den til peerDependencies eller prøv å fjerne den; COLLADA-leseren kaller den direkte.

Vanlige problemer

SymptomSannsynlig årsakFiks
OBJ-materialer er tomme etter lastingenableMaterials ikke sattPass ObjLoadOptions med enableMaterials = true
GLB produserer en .bin sidecarbinaryMode standard til falseAngi opts.binaryMode = true i GltfSaveOptions
scene.open() kaster “unsupported format”Filtype ikke gjenkjentSend den matchende *LoadOptions klassen eller bruk openFromBuffer()
COLLADA-innlasting mislykkes med XML-feilxmldom manglende eller feilmatchendeKjør npm install @aspose/3d igjen; xmldom er en direkte avhengighet
STL normals mistet i ASCII-eksportASCII STL utelater per-flate normalerBruk binaryMode = true for normalbevarende output

Se også

 Norsk