Johdanto

Meillä on ilo ilmoittaa saatavuudesta Aspose.3D FOSS for TypeScript nimeltä @aspose/3d npm‑paketti. Tämä MIT‑lisensioitu kirjasto tuo tuotantotason 3D‑kohtauskäsittelyn TypeScript‑ ja Node.js‑sovelluksiin ilman, että vaaditaan natiiveja binaareja, alusta‑kohtaisia työkaluja tai kaupallisia lisenssejä.

Kirjasto on suunniteltu yksinkertaisen Scene API:n: lataa 3D‑tiedosto käyttäen scene.open(), tarkastele tai muunna kohtausgrafiikkaa, ja kirjoita tulos käyttäen scene.save(). Täydet TypeScript‑tyyppimäärittelyt sisältyvät; erillistä @types/ pakettia ei tarvita.

Keskeiset ominaisuudet

Moniformaatti I/O. Paketti lukee ja kirjoittaa kuusi suurta 3D‑formaattia yhdellä asennuksella. OBJ on tuettu tuontiin; glTF 2.0, GLB, STL, 3MF ja COLLADA tukevat sekä tuontia että vientiä. FBX‑tuonti‑/vienti‑luokkia on olemassa, mutta formaatin automaattitunnistusta ei ole vielä kytketty, joten FBX‑tiedostoja ei voida ladata käyttäen scene.open().

Ensiluokkaista TypeScript‑tukea. Kaikki julkiset luokat, luettelotyypit ja asetustyypit on täysin tyypitetty. IDE:t, joissa on TypeScript‑kielipalvelutuki (VS Code, WebStorm ym.), tarjoavat tarkan automaattisen täydennyksen ja sisäisen dokumentaation jokaiselle API‑kutsulle.

Node.js 18–22+ yhteensopivuus. Pakettia on testattu Node.js 18, 20 ja 22 LTS -julkaisuissa. Asennuksen aikana ei käännetä natiiveja lisäosia, joten se toimii kaikilla Node.js:n tukemilla alustoilla.

Yksi ajonaikainen riippuvuus. Ainoa riippuvuus on xmldom, käytetään yksinomaan COLLADA XML -jäsennykseen. Kaikki muut formaattiparsijat ovat puhtaita JavaScript‑toteutuksia.

MIT-lisenssi. Käytä @aspose/3d kaupallisissa, avoimen lähdekoodin tai sisäisissä projekteissa ilman rajoituksia.

Pika-aloitus

Asenna paketti:

npm install @aspose/3d

Lataa OBJ‑tiedosto ja muunna se binaariksi GLB‑tiedostoksi:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;   // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);

console.log('Converted to GLB successfully');

Käy läpi kohtaussolmut tarkastellaksesi geometriaa:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}`);
    if (node.entity) {
        console.log(`  Entity type: ${node.entity.constructor.name}`);
    }
}

Tuetut formaatit

MuotoTiedostopääteTuontiVientiHuomautukset
Wavefront OBJ.objKylläEiVain tuonti; lukee .mtl materiaalitiedostot
glTF 2.0.gltfKylläKylläJSON ulkoisella .bin puskuri
Binäärinen GLB.glbKylläKylläAseta binaryMode: true sisään GltfSaveOptions
STL.stlKylläKylläASCII- ja binäärinen STL
3MF.3mfKylläKylläOpen Packaging Convention -arkisto
FBX.fbxEi*Ei*Tuonti-/vienti on olemassa, mutta formaatin automaattinen tunnistus ei ole kytketty
COLLADA.daeKylläKylläVaatii paketoidun xmldom riippuvuus

TypeScript‑edut

Työskenteleminen @aspose/3d TypeScriptissä havaitsee luokkarajat virheet käännösaikana sen sijaan, että ne ilmenisivät suoritusaikana. Kun kutsut scene.save(), kääntäjä tarkistaa, että options object vastaa odotettua SaveOptions subtype valitulle formaatille. load and save options paljastavat vain kyseiseen formaattiin liittyvät ominaisuudet; ei ole untyped options bag, johon arvata.

Esimerkiksi, GltfSaveOptions.binaryMode on typed boolean, joten kääntäjä hylkää saveOpts.binaryMode = 'yes' ennen kuin mikään koodi suoritetaan. Animaatio-ominaisuudet kohteessa AnimationClip, materiaalikanavat kohteessa PbrMaterial, ja vertex-elementtityypit kohteessa VertexElement ovat kaikki samankaltaisesti tyypitettyjä ja löydettävissä IntelliSensen kautta ilman ulkoisen dokumentaation konsultointia.

Avoin lähdekoodi ja ilmainen

Paketti on julkaistu MIT-lisenssi. Lähdekoodi on saatavilla GitHubissa. Avustukset, virheraportit ja formaattituen pyynnöt ovat tervetulleita versionhallinnan issue-trackerin kautta.

Kirjastolla on yksi ajonaikainen riippuvuus: xmldom versio 0.9+, jota käytetään vain COLLADA-tiedostojen lukemiseen tai kirjoittamiseen. Kaikki muut jäsentimet ja kirjoittajat ovat itsenäisiä puhdas-JavaScript -toteutuksia ilman binääri-komponentteja.

Aloittaminen

Päätelmä

@aspose/3d versio 24.12.0 tarjoaa vakaan, tyypitetyn, riippuvuuskevyt perustan 3D-tiedostojen käsittelyyn TypeScriptissä ja Node.js:ssä. Olipa käyttötapaus formaattimuunnos, kohtauksen tarkastelu, geometrian poiminta tai putkistointegraatio, kirjasto kattaa yleisimmät 3D-vaihtoformaatit sallivan avoimen lähdekoodin lisenssin alaisena.

Asenna se tänään ja kerro meille, mitä rakennat.