Введение
Мы рады объявить о доступности 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 реализациями без бинарных компонентов.
Начало работы
- npm:
npm install @aspose/3d - База знаний: Как загружать 3D‑модели в TypeScript
- База знаний: Как экспортировать 3D‑сцены в glTF/GLB с помощью TypeScript
- Справочник API: Aspose.3D FOSS для TypeScript: Полный справочник классов
- GitHub: aspose-3d/aspose-3d-node
Заключение
@aspose/3d версия 24.12.0 предоставляет стабильную, типизированную, лёгкую по зависимостям основу для обработки 3D‑файлов в TypeScript и Node.js. Независимо от того, требуется ли конвертация форматов, инспекция сцены, извлечение геометрии или интеграция в конвейер, библиотека охватывает наиболее распространённые форматы обмена 3D‑данными под разрешительной открытой лицензией.
Установите её сегодня и дайте нам знать, что вы создаёте.