Wprowadzenie

Z przyjemnością ogłaszamy dostępność Aspose.3D FOSS dla TypeScript jako @aspose/3d pakiet npm. Ta biblioteka na licencji MIT zapewnia przetwarzanie scen 3D o jakości produkcyjnej w aplikacjach TypeScript i Node.js, nie wymagając natywnych binarek, specyficznych dla platformy łańcuchów narzędziowych ani komercyjnych licencji.

Biblioteka została zaprojektowana wokół prostego Scene API: wczytaj plik 3D za pomocą scene.open(), sprawdź lub przekształć graf sceny i zapisz wynik za pomocą scene.save(). Pełne definicje typów TypeScript są dołączone; nie ma osobnego @types/ nie jest wymagany żaden oddzielny pakiet.

Kluczowe funkcje

Wieloformatowe I/O. Pakiet odczytuje i zapisuje sześć głównych formatów 3D w jednej instalacji. OBJ jest obsługiwany przy imporcie; glTF 2.0, GLB, STL, 3MF i COLLADA obsługują zarówno import, jak i eksport. Klasy importera/eksportera FBX istnieją, ale automatyczne wykrywanie formatu nie jest jeszcze podłączone, więc pliki FBX nie mogą być wczytane za pomocą scene.open().

Wsparcie TypeScript na najwyższym poziomie. Wszystkie publiczne klasy, wyliczenia i typy opcji są w pełni typowane. IDE z obsługą usługi językowej TypeScript (VS Code, WebStorm itp.) zapewniają dokładne uzupełnianie kodu i dokumentację inline dla każdego wywołania API.

Kompatybilność z Node.js 18–22+. Pakiet jest testowany pod kątem wersji LTS Node.js 18, 20 i 22. Żadne natywne dodatki nie są kompilowane podczas instalacji, więc działa na wszystkich platformach obsługiwanych przez Node.js.

Jedna zależność w czasie wykonywania. Jedyną zależnością jest xmldom, używana wyłącznie do parsowania XML COLLADA. Wszystkie pozostałe parsery formatów są czystymi implementacjami JavaScript.

Licencja MIT. Użyj @aspose/3d w projektach komercyjnych, open-source lub wewnętrznych bez ograniczeń.

Szybki start

Zainstaluj pakiet:

npm install @aspose/3d

Załaduj plik OBJ i skonwertuj go do binarnego 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');

Iteruj po węzłach sceny, aby przeglądać geometrię:

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

Obsługiwane formaty

FormatRozszerzenieImportEksportNotatki
Wavefront OBJ.objTakNieTylko import; odczytuje .mtl pliki materiałów
glTF 2.0.gltfTakTakJSON z zewnętrznym .bin bufor
Binarny GLB.glbTakTakZestaw binaryMode: true w GltfSaveOptions
STL.stlTakTakASCII i binarny STL
3MF.3mfTakTakarchiwum Open Packaging Convention
FBX.fbxNie*Nie*Importer/exporter istnieje, ale automatyczne wykrywanie formatu nie jest podłączone
COLLADA.daeTakTakWymaga w pakiecie xmldom zależność

Zalety TypeScript

Praca z @aspose/3d w TypeScript wykrywa błędy kategorii w czasie kompilacji, a nie w czasie wykonywania. Gdy wywołujesz scene.save(), kompilator weryfikuje, że obiekt opcji pasuje do oczekiwanego SaveOptions podtypu dla wybranego formatu. Opcje ładowania i zapisywania specyficzne dla formatu udostępniają tylko właściwości istotne dla tego formatu; nie ma niezatypowanego zestawu opcji, w którym trzeba zgadywać.

Na przykład, GltfSaveOptions.binaryMode jest typowany boolean, więc kompilator odrzuca saveOpts.binaryMode = 'yes' zanim jakikolwiek kod zostanie uruchomiony. Właściwości animacji w AnimationClip, kanały materiału w PbrMaterial, oraz typy elementów wierzchołków w VertexElement są wszystkie podobnie typowane i odkrywalne za pomocą IntelliSense bez konieczności konsultowania zewnętrznej dokumentacji.

Open Source i darmowa

Pakiet jest publikowany na warunkach the MIT License. Kod źródłowy jest dostępny na GitHubie. Wkłady, zgłoszenia błędów i prośby o wsparcie formatów są mile widziane poprzez system zgłoszeń repozytorium.

Biblioteka ma jedną zależność w czasie wykonywania: xmldom wersja 0.9+, używana wyłącznie przy odczycie lub zapisie plików COLLADA. Wszystkie pozostałe parsery i zapisywacze są samodzielnymi, czystymi implementacjami JavaScript bez komponentów binarnych.

Rozpoczęcie pracy

Podsumowanie

@aspose/3d wersja 24.12.0 zapewnia stabilną, typowaną, dependency-light podstawę do przetwarzania plików 3D w TypeScript i Node.js. Niezależnie od tego, czy przypadkiem użycia jest konwersja formatów, inspekcja sceny, ekstrakcja geometrii czy integracja pipeline, biblioteka obejmuje najpopularniejsze formaty wymiany 3D pod permissive open-source licencją.

Zainstaluj ją już dziś i daj nam znać, co tworzysz.