Введение
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 содержит a rootNode, каждый Node может содержать дочерние узлы и объекты сущностей (Mesh, Camera, Light), и иерархия трансформаций полностью доступна для чтения и записи.
Ключевые возможности
- Мультиформатный ввод/вывод: Импорт OBJ (с
.mtlматериалами, только импорт), glTF 2.0 / GLB, STL (binary и 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классы управляют инвертированием координат, масштабом, загрузкой материалов и прочим
Начало работы
Установите через 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');