Вступ

Ми раді оголосити про доступність Aspose.3D FOSS для TypeScript як @aspose/3d npm‑пакет. Ця MIT-licensed бібліотека забезпечує обробку 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 у комерційних, відкритих або внутрішніх проектах без обмежень.

Quick Start

Встановіть пакет:

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

Supported Formats

ФорматРозширенняІмпортЕкспортПримітки
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Ні*Ні*Importer/exporter існує, але автоматичне визначення формату не підключено
COLLADA.daeТакТакВимагає bundled xmldom залежність

Переваги TypeScript

Працює з @aspose/3d у TypeScript виявляє помилки категорій під час компіляції, а не під час виконання. Коли ви викликаєте scene.save(), компілятор перевіряє, що об’єкт параметрів відповідає очікуваному SaveOptions підтипу для обраного формату. Параметри завантаження та збереження, специфічні для формату, розкривають лише властивості, що стосуються цього формату; немає неконкретизованого набору параметрів, в який треба вгадувати.

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

Open Source and Free

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

Бібліотека має одну залежність під час виконання: xmldom версія 0.9+, використовується лише при читанні або записі файлів COLLADA. Усі інші парсери та записувачі є самодостатніми чистими JavaScript‑реалізаціями без бінарних компонентів.

Getting Started

Висновок

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

Встановіть її сьогодні і дайте нам знати, що ви створили.