API Overview — @aspose/3d for TypeScript

Пакет: @aspose/3d (v24.12.0) Язык: TypeScript / Node.js 18+ Лицензия: MIT

@aspose/3d это библиотека с лицензией MIT для чтения, построения и экспорта 3D‑сцен в Node.js. Она поставляется с полными определениями типов TypeScript, единственной runtime‑зависимостью (xmldom), и поддерживает семь основных форматов 3D‑файлов. Весь ввод/вывод синхронный. Нативные аддоны не требуются.


npm install @aspose/3d

tsconfig.json настройки для правильного разрешения под‑путей:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "strict": true
  }
}

Основные классы

Корневой контейнер 3D‑сцены. Всё содержимое; узлы, геометрия, материалы и анимации; хранится в дереве, корнем которого является scene.rootNode.Используйте open() / openFromBuffer() для загрузки файла и save() / saveToBuffer() для экспорта.

rootNodeNodeКорень графа сцены
assetInfoAssetInfoМетаданные файла (создатель, единицы измерения, система координат)
animationClipsAnimationClip[]Все анимационные клипы в сцене
open(path, opts?)(string, LoadOptions?) → voidЗагрузить файл с диска
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidЗагрузить из буфера в памяти
save(path, opts?)(string, SaveOptions?) → voidСохранить на диск (формат определяется по расширению)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferСохранить в буфер в памяти
createAnimationClip(name)(string) → AnimationClipСоздать и зарегистрировать новый анимационный клип

Именованный узел дерева в графе сцены. Узлы несут необязательный Entity (mesh, camera, light) и Transform который позиционирует узел относительно его родителя.

namestringИмя узла
childNodesNode[]Прямые дочерние узлы
entity`Entitynull`
transformTransformЛокальное перемещение, вращение, масштаб
materialsMaterial[]Материалы, назначенные этому узлу
createChildNode(name)(string) → NodeДобавить дочерний узел
getChildNode(name)`(string) → Nodenull`

Полигональная сетка; основной тип геометрии. Расширяет Geometry.

controlPointsVector4[]Позиции вершин (w=1 для позиций)
polygonCountnumberКоличество полигонов
createPolygon(indices)(number[]) → voidДобавить полигон (треугольник или четырёхугольник)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementСоздать элемент вершины

Локальное преобразование, применяемое к узлу.

translationVector3Локальная позиция
eulerAnglesVector3Эйлерово вращение в градусах (порядок XYZ)
rotationQuaternionВращение в виде кватерниона
scalingVector3Локальный масштаб

Классы материалов

Ключевые свойства
LambertMaterialДиффузное + окружающее затенениеdiffuseColor, ambientColor, transparency
PhongMaterialДобавляет спекулярный + излучающий к LambertspecularColor, shininess, emissiveColor
PbrMaterialФизически основанный на glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Классы математики

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Вариант одинарной точности, используемый в данных вершин
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionКватернион вращения; fromEulerAngle, toEulerAngles, slerp
BoundingBoxОсиально-выравненный ограничивающий короб; minimum, maximum, center, size, merge

Классы анимации

AnimationClipИменованный клип; содержит AnimationNode список; доступен через scene.animationClips
AnimationNodeПривязывает клип к именованному узлу сцены; содержит AnimationChannel список
AnimationChannelНацеливается на одно свойство (например, перемещение по X); содержит KeyframeSequence
KeyframeSequenceУпорядоченный список KeyFrame объекты с interpolation и extrapolation
KeyFrameОдна пара время/значение

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTСемантика вершинного элемента
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMEКак данные сопоставляются с геометрией
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTСтратегия индексации данных вершинных элементов
InterpolationCONSTANT, LINEAR, BEZIERИнтерполяция ключевых кадров
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEПоведение за пределами диапазона ключевых кадров

Модули форматов

Классы параметров, специфичных для формата, экспортируются из модулей подпутей. Импортируйте их отдельно:

import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';
import { FbxLoadOptions, FbxSaveOptions } from '@aspose/3d/formats/fbx';
import { ColladaLoadOptions } from '@aspose/3d/formats/collada';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';

Модуль OBJ (@aspose/3d/formats/obj)

Ключевые параметры
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

Модуль glTF/GLB (@aspose/3d/formats/gltf)

Ключевые параметры
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance(): экземпляр формата для scene.save()

Модуль STL (@aspose/3d/formats/stl)

Параметры ключа
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binary)

Модуль FBX (@aspose/3d/formats/fbx)

Ключевые параметры
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Поддерживаемые форматы

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxНет*Нет*
COLLADA.dae
3MF.3mf

Пример быстрого справочника

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

// Load OBJ with materials
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.open('input.obj', loadOpts);

// Inspect root nodes
for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}, entity: ${node.entity?.constructor.name}`);
}

// Export as GLB (binary glTF)
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
scene.save('output.glb', saveOpts);

См. также

 Русский