Въведение

Aspose.3D FOSS за TypeScript (@aspose/3d) е отворен код, библиотека за 3D файлови формати под лиценз MIT, предназначена за 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), а йерархията на трансформациите е напълно достъпна за четене и запис.

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

  • Мултиформатен I/O: Импорт на 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 (метален/грубост) материали, достъпни чрез node.entity.material
  • Операции с мрежа: Достъп до необработени данни за върхове чрез mesh.controlPoints (масив от Vector4), индекси на полигони чрез mesh.polygonCount, и канали за елементите на върховете чрез mesh.getElement()
  • Математически помощни функции: Vector2, Vector3, Vector4, Matrix4, Quaternion, и типове за ограничителни кутии за пространствени изчисления
  • Система за анимация:Ключова анимация с AnimationClip, AnimationChannel, и интерполационни криви (линейни, Bezier, TCB spline)
  • Опции, специфични за формата: По формат LoadOptions / SaveOptions класове контролират обръщане на координатите, мащаб, зареждане на материали и др.

Започване

Инсталирайте от 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');

Вижте също