Введение

Мы рады объявить о доступности Aspose.3D FOSS для TypeScript в качестве @aspose/3d npm package. Эта библиотека с лицензией MIT предоставляет обработку 3D‑сцен промышленного качества для приложений на TypeScript и Node.js без необходимости в нативных бинарных файлах, специфических для платформ инструментальных цепочках или коммерческих лицензий.

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

Ключевые возможности

Мультиформатный ввод/вывод. Пакет читает и записывает шесть основных 3D‑форматов в одной установке. OBJ поддерживается для импорта; glTF 2.0, GLB, STL, 3MF и COLLADA поддерживают как импорт, так и экспорт. Классы импорта/экспорта FBX существуют, но автоматическое определение формата ещё не реализовано, поэтому файлы FBX нельзя загрузить через scene.open().

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

Совместимость с Node.js 18–22+. Пакет протестирован с версиями Node.js 18, 20 и 22 LTS. Никакие нативные аддоны не компилируются во время установки, поэтому он работает на всех платформах, поддерживаемых Node.js.

Одна зависимость во время выполнения. Единственная зависимость — это xmldom, используется исключительно для разбора COLLADA XML. Все остальные парсеры форматов — чисто JavaScript реализации.

Лицензия MIT. Использовать @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 подтипу выбранного формата. Параметры загрузки и сохранения, специфичные для формата, раскрывают только свойства, релевантные этому формату; нет нетипизированного options bag, в котором нужно угадывать.

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

Открытый исходный код и бесплатно

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

Библиотека имеет одну зависимость во время выполнения: xmldom версия 0.9+, используется только при чтении или записи файлов COLLADA. Все остальные парсеры и записывающие модули являются автономными pure-JavaScript реализациями без бинарных компонентов.

Начало работы

Заключение

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

Установите её сегодня и дайте нам знать, что вы создаёте.