Въведение

С радост обявяваме наличието на Aspose.3D FOSS за TypeScript като @aspose/3d npm пакет. Тази MIT-licensed библиотека предоставя обработка на 3D сцени с производствено качество за TypeScript и Node.js приложения, без да изисква native бинарни файлове, platform-specific toolchains или commercial licenses.

Библиотеката е проектирана около прост Scene API: заредете 3D файл с scene.open(), инспектирайте или трансформирайте графа на сцената и запишете резултата с scene.save(). Пълните TypeScript типови дефиниции са включени; няма отделни @types/ изисква се пакет.

Ключови характеристики

Мултиформатен I/O. Пакетът чете и записва шест основни 3D формата в една инсталация. OBJ се поддържа за импортиране; glTF 2.0, GLB, STL, 3MF и COLLADA поддържат както импортиране, така и експортиране. Съществуват класове за импортиране/експортиране на FBX, но автоматичното разпознаване на формата все още не е внедрено, така че FBX файловете не могат да се заредят чрез scene.open().

Поддръжка на TypeScript от първокласно ниво. Всички публични класове, изброявания и типове опции са напълно типизирани. IDE‑тата с поддръжка на TypeScript езиковата услуга (VS Code, WebStorm и др.) предоставят точни автодовършвания и вградена документация за всяко API извикване.

Съвместимост с Node.js 18–22+. Пакетът е тестван срещу LTS изданията на Node.js 18, 20 и 22. По време на инсталацията не се компилират нативни добавки, така че работи на всички платформи, поддържани от Node.js.

Една runtime зависимост. Единствената зависимост е xmldom, използвана изключително за парсиране на COLLADA XML. Всички останали парсъри за формати са чисти JavaScript реализации.

MIT license. Използвайте @aspose/3d в комерсиални, с отворен код или вътрешни проекти без ограничения.

Бърз старт

Инсталирайте пакета:

npm install @aspose/3d

Заредете OBJ файл и го конвертирайте в бинарен 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');

Итерарайте върху възлите на сцената, за да прегледате геометрията:

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

Поддържани формати

ФорматРазширениеИмпортЕкспортБележки
Wavefront OBJ.objДаНеСамо импорт; чете .mtl файлове с материали
glTF 2.0.gltfДаДаJSON с външен .bin буфер
Бинарен GLB.glbДаДаЗадай binaryMode: true в GltfSaveOptions
STL.stlДаДаASCII и бинарен STL
3MF.3mfДаДаOpen Packaging Convention архив
FBX.fbxНе*Не*Импортер/експортер съществуват, но автоматичното откриване на формата не е включено
COLLADA.daeДаДаИзисква пакетирано xmldom зависимост

Предимства на TypeScript

Работа с @aspose/3d в TypeScript улавя грешки от категорията по време на компилация, а не по време на изпълнение. Когато извикате scene.save(), компилаторът проверява дали обектът options съответства на очаквания SaveOptions подтип за избрания формат. Формат-специфичните load and save options излагат само свойствата, релевантни за този формат; няма нетипизиран options bag, от който да се гадае.

Например, GltfSaveOptions.binaryMode е типизиран boolean, затова компилаторът отхвърля saveOpts.binaryMode = 'yes' преди да се изпълни какъвто и да е код. Анимационни свойства на AnimationClip, материални канали на PbrMaterial, и типове елементи на върхове на VertexElement са всички еднотипно типизирани и откриваеми чрез IntelliSense без консултиране с външна документация.

Отворен код и безплатен

Пакетът е публикуван под MIT License. Изходният код е достъпен в GitHub. Приносите, докладите за грешки и заявките за поддръжка на формати са добре дошли чрез системата за проследяване на проблеми на хранилището.

Библиотеката има една runtime зависимост: xmldom версия 0.9+, използва се само при четене или записване на COLLADA файлове. Всички останали парсъри и писатели са самостоятелни чисто JavaScript реализации без бинарни компоненти.

Започване

Заключение

@aspose/3d версия 24.12.0 предоставя стабилна, типизирана, лека по зависимости основа за обработка на 3D файлове в TypeScript и Node.js. Независимо дали случаят на употреба е конвертиране на формати, инспекция на сцени, извличане на геометрия или интеграция в pipeline, библиотеката обхваща най-често срещаните 3D формати за обмен под разрешителен отворен лиценз.

Инсталирайте го днес и ни кажете какво създавате.