3D-muotojen tuki
Aspose.3D FOSS for TypeScript lukee ja kirjoittaa seitsemän tärkeintä 3D-tiedostomuotoa. Muodon tunnistus on automaattinen latauksen yhteydessä: kirjasto tarkastelee binäärisiä taikamerkkejä, joten sinun ei tarvitse määrittää lähdemuotoa. Muotoon liittyvät asetusluokat tuodaan alipolkuista paketin @aspose/3d paketti.
Tuetut formaatit
| Muoto | Tiedostopääte | Luku | Kirjoitus | Muoto-luokka | Huomautukset |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Kyllä | Kyllä | ObjFormat | Lukee .mtl materiaaleja; kirjoittaa .mtl yhdessä .obj |
| glTF 2.0 | .gltf | Kyllä | Kyllä | GltfFormat | JSON-teksti + .bin sivukärry |
| GLB | .glb | Kyllä | Kyllä | GltfFormat | Binäärinen glTF; asetettu binaryMode = true |
| STL | .stl | Kyllä | Kyllä | StlFormat | Binääri- ja ASCII-tilat |
| 3MF | .3mf | Kyllä | Kyllä | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Ei* | Ei* | FbxFormat | Tuonti-/vientitoiminto on olemassa, mutta formaatin automaattinen tunnistus ei ole kytketty; ei käytettävissä kautta scene.open() |
| COLLADA | .dae | Kyllä | Kyllä | ColladaFormat | Vaatii xmldom (automaattisesti asennettu) |
OBJ (Wavefront)
OBJ tukee sekä tuontia että vientiä @aspose/3d. Kun tallennetaan OBJ-muodossa, materiaalikirjasto (.mtl) kirjoitetaan automaattisesti rinnalle .obj tiedosto. Käytä ObjLoadOptions materiaalin latauksen ja koordinaatistojärjestelmän käyttäytymisen hallitsemiseksi.
Keskeiset asetukset for ObjLoadOptions:
| Asetus | Tyyppi | Oletus | Vaikutus |
|---|---|---|---|
enableMaterials | boolean | true | Jäsennä .mtl tiedostoa, johon viitataan mtllib |
flipCoordinateSystem | boolean | false | Käännä Y/Z-akselit vastaamaan oikeakätisiä järjestelmiä |
scale | number | 1.0 | Yhtenäinen skaalaus, joka kohdistetaan kaikkiin solmuihin latauksen yhteydessä |
normalizeNormal | boolean | true | Normalisoi solmujen normaalit yksikköpituuteen |
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)`);Muuntaaksesi OBJ:n mihin tahansa kirjoitettavissa olevaan formaattiin, lataa se ja kutsu scene.save() kohdeformaatin luokalla.
glTF and GLB
glTF 2.0 on suositeltu vaihtomuoto web- ja pelimoottorikäyttöön. Kirjasto käyttää samaa GltfFormat luokkaa sekä .gltf (JSON + sidecar) ja .glb (binääri, itsenäinen) tuloste. Vaihda niiden välillä komennolla GltfSaveOptions.binaryMode.
Lataa glTF tai 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
Vie JSON glTF:nä (.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);Vie binaarisena GLB:nä (.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);Käytä binaryMode = true tuotantokäyttöön tarkoitettujen resurssien toimitukseen. Yksi .glb latautuu nopeammin selaimissa ja moottoreissa kuin jaettu teksti + binaaripari.
STL
STL on kolmioitu verkkomuoto, jota käytetään CAD:ssa ja 3D-tulostuksessa. Sekä binäärinen että ASCII STL -muotoa tuetaan syötteessä ja tulosteessa. StlSaveOptions.binaryMode säätelee, onko tuloste binäärinen (tiivis) vai ASCII (luettavissa ihmisille).
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 tallentaa vain kolmioidun geometrian ja kärkinormaalit. Materiaali- ja UV‑tiedot eivät säily STL‑tiedostossa.
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
Varoitus: FBX-tuonti- ja vientiluokat (FbxImporter, FbxExporter) on kirjastossa, mutta FBX-muodon automaattinen tunnistus on ei kytketty kohteeseen scene.open() tai scene.save(). Kutsuttaessa scene.open('file.fbx') ei käynnistä FBX-tuontia — tiedosto siirtyy STL-varmistukseen. scene.save('output.fbx', opts) ei käynnistä FBX-vientiä. Yllä oleva formaattituen taulukko merkitsee FBX:n No* tämän vuoksi. Käytä GLB:tä tai COLLADA:a täysin toimivaan tuontiin ja vientiin kautta scene.open() / scene.save().
COLLADA (DAE)
COLLADA on XML-pohjainen vaihtomuoto, jota tukee laaja valikoima DCC-työkaluja (Blender, Maya, Cinema 4D). Kirjasto käyttää xmldom riippuvuutta XML-jäsentämiseen; se asennetaan automaattisesti yhdessä 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-tiedostot voivat sisältää yksikön skaalausmetatietoja (<unit> elementti). Kirjasto soveltaa yksikön muunnosta automaattisesti latauksen yhteydessä.
Formaatin automaattinen tunnistus
Kun ladataan tiedostopolusta, kirjasto yrittää tunnistaa formaatin binääristen taikamerkkien perusteella ennen kuin se turvautuu tiedostopäätteeseen. Tämä tarkoittaa, että voit ladata GLB-tiedoston nimeltä .bin tai STL-tiedoston nimeltä .model ilman että määrittäisit formaatin erikseen.
Kun ladataan Buffer kanssa scene.openFromBuffer(), magic-number detection on ensisijainen mekanismi:
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)`);Tiedostomuodot, joilla on luotettavat magic-numerot: GLB (glTF), STL binaari (80-tavun otsikko + kolmioiden määrä), 3MF (ZIP magic PK). OBJ ja COLLADA ovat tekstipohjaisia ja ne havaitaan tiedostopäätteestä tai käyttämälläsi options class -luokasta.
Vinkkejä
- OBJ tukee sekä tuontia että vientiä: kun tallennetaan OBJ-muodossa,
.mtlmateriaalitiedosto kirjoitetaan automaattisesti samalle tiedostolle.objtiedosto. - Käytä GLB:tä web-toimitukseen: itsesisältävä binaarimuoto välttää CORS-ongelmat, kun
.binsivukomponentit ja latautuu nopeammin WebGL-renderöijissä. - Syötä formaattiin liittyvät asetukset: geneerinen
scene.open(path)toimii useimmille formaateille, mutta latausasetusten luokan antaminen mahdollistaa formaattiin liittyvän toiminnan, kuten OBJ‑materiaalin latauksen tai STL‑koordinaattien normalisoinnin. xmldomvaaditaan COLLADA:lle: se asennetaan automaattisesti. Älä lisää sitäpeerDependenciestai yritä poistaa se; COLLADA-lukija kutsuu sitä suoraan.
Yleisiä ongelmia
| Oire | Todennäköinen syy | Korjaa |
|---|---|---|
| OBJ-materiaalit ovat tyhjiä latauksen jälkeen | enableMaterials ei asetettu | Ohita ObjLoadOptions kanssa enableMaterials = true |
GLB tuottaa .bin sivutiedosto | binaryMode oletuksena false | Aseta opts.binaryMode = true kohdassa GltfSaveOptions |
scene.open() heittää “unsupported format” | Tiedostopäätettä ei tunnistettu | Välitä vastaava *LoadOptions luokka tai käytä openFromBuffer() |
| COLLADA-lataus epäonnistuu XML-virheellä | xmldom puuttuu tai ei täsmää | Suorita npm install @aspose/3d uudelleen; xmldom on suora riippuvuus |
| STL-normaalit kadonneet ASCII-viennissä | ASCII STL pudottaa per-pinnan normaalit | Käytä binaryMode = true normaaleja säilyttävään ulostuloon |
Katso myös
- Ominaisuudet ja toiminnot: scene graph, mesh, materials, animation, ja math API:t.
- Kohtausgrafiikka: solmupuun rakentaminen ja läpikäynti.
- Kuinka rakentaa 3D Mesh ohjelmallisesti