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

MuotoTiedostopääteLukuKirjoitusMuoto-luokkaHuomautukset
Wavefront OBJ.objKylläKylläObjFormatLukee .mtl materiaaleja; kirjoittaa .mtl yhdessä .obj
glTF 2.0.gltfKylläKylläGltfFormatJSON-teksti + .bin sivukärry
GLB.glbKylläKylläGltfFormatBinäärinen glTF; asetettu binaryMode = true
STL.stlKylläKylläStlFormatBinääri- ja ASCII-tilat
3MF.3mfKylläKylläThreeMfFormat3D Manufacturing Format
FBX.fbxEi*Ei*FbxFormatTuonti-/vientitoiminto on olemassa, mutta formaatin automaattinen tunnistus ei ole kytketty; ei käytettävissä kautta scene.open()
COLLADA.daeKylläKylläColladaFormatVaatii 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:

AsetusTyyppiOletusVaikutus
enableMaterialsbooleantrueJäsennä .mtl tiedostoa, johon viitataan mtllib
flipCoordinateSystembooleanfalseKäännä Y/Z-akselit vastaamaan oikeakätisiä järjestelmiä
scalenumber1.0Yhtenäinen skaalaus, joka kohdistetaan kaikkiin solmuihin latauksen yhteydessä
normalizeNormalbooleantrueNormalisoi 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, .mtl materiaalitiedosto kirjoitetaan automaattisesti samalle tiedostolle .obj tiedosto.
  • Käytä GLB:tä web-toimitukseen: itse­sisältävä binaarimuoto välttää CORS-ongelmat, kun .bin sivukomponentit 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.
  • xmldom vaaditaan COLLADA:lle: se asennetaan automaattisesti. Älä lisää sitä peerDependencies tai yritä poistaa se; COLLADA-lukija kutsuu sitä suoraan.

Yleisiä ongelmia

OireTodennäköinen syyKorjaa
OBJ-materiaalit ovat tyhjiä latauksen jälkeenenableMaterials ei asetettuOhita ObjLoadOptions kanssa enableMaterials = true
GLB tuottaa .bin sivutiedostobinaryMode oletuksena falseAseta opts.binaryMode = true kohdassa GltfSaveOptions
scene.open() heittää “unsupported format”Tiedostopäätettä ei tunnistettuVä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 normaalitKäytä binaryMode = true normaaleja säilyttävään ulostuloon

Katso myös

 Suomi