Вступ

Aspose.3D FOSS для TypeScript (@aspose/3d) є відкритою, з ліцензією MIT, бібліотекою 3D форматів файлів для Node.js та сучасних браузерних середовищ. Розробники, які створюють переглядачі 3D моделей, конвертери форматів, інструменти обробки геометрії або серверні 3D конвеєри, можуть встановити її за допомогою одного npm install @aspose/3d команду та одразу почати завантаження, створення та експорт 3D‑контенту.

Бібліотека підтримує основні формати обміну — glTF 2.0 / GLB, STL, 3MF та COLLADA для імпорту та експорту, а OBJ — лише для імпорту. Класи імпортера/експортера FBX існують, але ще не підключені до автоматичного визначення формату. API графа сцени відображає модель, знайому з інструментів 3D‑моделювання: a Scene містить rootNode, кожен Node може містити дочірні вузли та об’єктні сутності (Mesh, Camera, Light), і ієрархія трансформацій повністю доступна для читання та запису.

Ключові можливості

  • Багатоформатний ввід/вивід: Імпорт OBJ (з .mtl матеріалами, лише імпорт), glTF 2.0 / GLB, STL (бінарний і ASCII), 3MF та COLLADA з обох шляхів до файлів та в пам’яті Buffer об’єктів. glTF, STL, 3MF та COLLADA також підтримують експорт. Підтримка FBX ще не підключена до автоматичного визначення.
  • API графа сцени: Scene, Node, Mesh, Camera, Light ієрархія з повним керуванням батьків/дочок; рекурсивний обхід вузлів через node.childNodes
  • Система PBR-матеріалів: матеріали Lambert, Phong та PBR (metallic/roughness), доступні через node.entity.material
  • Операції з сіткою: Доступ до необроблених даних вершин через mesh.controlPoints (масив Vector4), індекси полігонів через mesh.polygonCount, та канали елементів вершин через mesh.getElement()
  • Математичні утиліти: Vector2, Vector3, Vector4, Matrix4, Quaternion, та типи обмежувальних коробок для просторових обчислень
  • Система анімації: Ключова анімація з AnimationClip, AnimationChannel, та криві інтерполяції (лінійна, Безьє, TCB сплайн)
  • Опції, специфічні для формату: По формату LoadOptions / SaveOptions класи керують інвертуванням координат, масштабом, завантаженням матеріалів та іншим

Getting Started

Встановлення через npm. Потрібен Node.js 18 або новіший; рекомендується TypeScript 5.0+.

npm install @aspose/3d

Завантажте файл OBJ і дослідіть сцену:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

Експорт у glTF

Збережіть будь-яку завантажену або створену сцену у двійковий glTF 2.0 (GLB):

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

Бібліотека автоматично визначає формат виводу за розширенням файлу. Передайте GltfSaveOptions екземпляр для керування вбудовуванням PBR‑матеріалів, текстурами та кодуванням у бінарному або JSON форматі.

Створення сцени

Створіть сцену програмно та експортуйте її:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

Див. також