Uvod

Zadovoljstvo nam je objaviti dostupnost Aspose.3D FOSS za TypeScript kao @aspose/3d npm paket. Ova MIT-licencirana biblioteka donosi obradu 3D scena proizvodne kvalitete u TypeScript i Node.js aplikacije bez potrebe za izvorim binarnim datotekama, alatnim lancima specifičnim za platformu ili komercijalnim licencama.

Biblioteka je dizajnirana oko jednostavnog Scene API: učitaj 3D datoteku pomoću scene.open(), pregledaj ili transformiraj graf scene i zapiši rezultat pomoću scene.save(). Potpune TypeScript definicije tipova su uključene; nije potreban zaseban @types/ paket.

Ključne značajke

Višestruki format I/O. Paket čita i piše šest glavnih 3D formata u jednoj instalaciji. OBJ je podržan za uvoz; glTF 2.0, GLB, STL, 3MF i COLLADA podržavaju i uvoz i izvoz. Postoje klase za uvoz/izvoz FBX-a, ali automatsko otkrivanje formata još nije implementirano, pa se FBX datoteke ne mogu učitati putem scene.open().

Podrška za TypeScript prvog reda. Sve javne klase, enumeracije i tipovi opcija potpuno su tipizirani. IDE-ovi s podrškom za TypeScript jezičnu uslugu (VS Code, WebStorm, itd.) pružaju precizno automatsko dovršavanje i inline dokumentaciju za svaki API poziv.

Kompatibilnost s Node.js 18–22+. Paket je testiran na Node.js 18, 20 i 22 LTS izdanjima. Nema izvornih dodataka koji se kompiliraju tijekom instalacije, pa radi na svim platformama koje Node.js podržava.

Jedna runtime ovisnost. Jedina ovisnost je xmldom, korišten isključivo za parsiranje COLLADA XML-a. Svi ostali parseri formata su čiste JavaScript implementacije.

MIT licenca. Uporabi @aspose/3d u komercijalnim, open-source ili internim projektima bez ograničenja.

Brzi početak

Instalirajte paket:

npm install @aspose/3d

Učitajte OBJ datoteku i pretvorite je u binarni GLB:

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');

Iterirajte kroz čvorove scene kako biste pregledali geometriju:

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}`);
    }
}

Podržani formati

FormatEkstenzijaUvozIzvozNapomene
Wavefront OBJ.objDaNeSamo uvoz; čita .mtl datoteke materijala
glTF 2.0.gltfDaDaJSON s vanjskim .bin bafer
Binarni GLB.glbDaDaPostavi binaryMode: true u GltfSaveOptions
STL.stlDaDaASCII i binarni STL
3MF.3mfDaDaOpen Packaging Convention arhiva
FBX.fbxNe*Ne*Postoje uvoznik/izvoznik, ali automatsko otkrivanje formata nije povezano
COLLADA.daeDaDaZahtijeva u paketu xmldom ovisnost

Prednosti TypeScript-a

Rad s @aspose/3d u TypeScriptu hvata pogreške kategorije u vrijeme kompilacije, a ne u vrijeme izvođenja. Kada pozovete scene.save(), kompajler provjerava da objekt opcija odgovara očekivanom SaveOptions podtipu za odabrani format. Opcije učitavanja i spremanja specifične za format izlažu samo svojstva relevantna za taj format; ne postoji ne tipizirani spremnik opcija za nagađanje.

Na primjer, GltfSaveOptions.binaryMode je tipiziran boolean, pa kompajler odbija saveOpts.binaryMode = 'yes' prije nego što se izvrši bilo koji kod. Svojstva animacije na AnimationClip, kanali materijala na PbrMaterial, i tipovi vršnih elemenata na VertexElement su svi slično tipizirani i otkrivaju se putem IntelliSensea bez potrebe za konzultiranjem vanjske dokumentacije.

Otvoreni kod i besplatno

Paket je objavljen pod MIT licencom. Izvorni kod je dostupan na GitHubu. Doprinosi, izvješća o greškama i zahtjevi za podršku formata su dobrodošli putem sustava za praćenje problema repozitorija.

Biblioteka ima jednu runtime ovisnost: xmldom verzija 0.9+, koristi se samo pri čitanju ili pisanju COLLADA datoteka. Svi ostali parseri i pisci su samostalne implementacije čistog JavaScripta bez binarnih komponenti.

Početak rada

Zaključak

@aspose/3d verzija 24.12.0 pruža stabilnu, tipiziranu, laganu ovisnostima osnovu za obradu 3D datoteka u TypeScriptu i Node.js-u. Bilo da je slučaj upotrebe konverzija formata, inspekcija scene, ekstrakcija geometrije ili integracija u cjevovod, biblioteka pokriva najčešće 3D formate razmjene pod permisivnom open-source licencom.

Instalirajte ga danas i javite nam što izradite.