API Overview — @aspose/3d for TypeScript

Pacote: @aspose/3d (v24.12.0) Linguagem: TypeScript / Node.js 18+ Licença: MIT

@aspose/3d é uma biblioteca licenciada sob MIT para leitura, construção e exportação de cenas 3D no Node.js. Ela vem com definições de tipo TypeScript completas, uma única dependência de tempo de execução (xmldom), e suporta sete principais formatos de arquivo 3D. Todas as I/O são síncronas. Nenhum addon nativo é necessário.


npm install @aspose/3d

tsconfig.json configurações para resolução correta de subcaminhos:

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

Classes Principais

O contêiner raiz para uma cena 3D. Todo o conteúdo; nós, geometria, materiais e animações; é armazenado em uma árvore enraizada em scene.rootNode.Use open() / openFromBuffer() para carregar um arquivo e save() / saveToBuffer() para exportar.

rootNodeNodeRaiz do grafo de cena
assetInfoAssetInfoMetadados do arquivo (criador, unidades, sistema de coordenadas)
animationClipsAnimationClip[]Todas as sequências de animação na cena
open(path, opts?)(string, LoadOptions?) → voidCarregar um arquivo do disco
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidCarregar de um buffer em memória
save(path, opts?)(string, SaveOptions?) → voidSalvar no disco (formato inferido da extensão)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferSalvar em buffer em memória
createAnimationClip(name)(string) → AnimationClipCriar e registrar uma nova sequência de animação

Um nó de árvore nomeado no grafo de cena. Nós carregam um opcional Entity (malha, câmera, luz) e um Transform que posiciona o nó em relação ao seu pai.

namestringNome do nó
childNodesNode[]Nós filhos diretos
entity`Entitynull`
transformTransformTranslação, rotação e escala locais
materialsMaterial[]Materiais atribuídos a este nó
createChildNode(name)(string) → NodeAdicionar um nó filho
getChildNode(name)`(string) → Nodenull`

Malha poligonal; o tipo de geometria principal. Estende Geometry.

controlPointsVector4[]Posicoes dos vértices (w=1 para posições)
polygonCountnumberNúmero de polígonos
createPolygon(indices)(number[]) → voidAdicionar um polígono (triângulo ou quad)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementCriar um elemento de vértice

Transformação local aplicada a um nó.

translationVector3Posição local
eulerAnglesVector3Rotação Euler em graus (ordem XYZ)
rotationQuaternionRotação como um quaternion
scalingVector3Escala local

Classes de Material

Propriedades principais
LambertMaterialSombras difusa + ambientediffuseColor, ambientColor, transparency
PhongMaterialAdiciona especular + emissivo ao LambertspecularColor, shininess, emissiveColor
PbrMaterialBaseado em física para glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Classes de Matemática

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Variante de precisão simples usada em dados de vértice
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionQuatérnio de rotação; fromEulerAngle, toEulerAngles, slerp
BoundingBoxCaixa delimitadora alinhada aos eixos; minimum, maximum, center, size, merge

Classes de Animação

AnimationClipClipe nomeado; contém AnimationNode lista; acessada via scene.animationClips
AnimationNodeAssocia um clipe a um nó de cena nomeado; contém AnimationChannel lista
AnimationChannelAlvo de uma única propriedade (ex.: translação X); contém um KeyframeSequence
KeyframeSequenceLista ordenada de KeyFrame objetos com interpolation e extrapolation
KeyFramePar único de tempo/valor

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTSemântica do elemento de vértice
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMEComo os dados são mapeados para a geometria
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTEstratégia de indexação para dados de elemento de vértice
InterpolationCONSTANT, LINEAR, BEZIERInterpolação de quadros‑chave
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEComportamento fora do intervalo de quadros‑chave

Módulos de Formato

Classes de opções específicas de formato são exportadas a partir de módulos de subcaminho. Importe-as separadamente:

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';

Módulo OBJ (@aspose/3d/formats/obj)

Opções chave
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

Módulo glTF/GLB (@aspose/3d/formats/gltf)

Opções chave
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance():instância de formato para scene.save()

Módulo STL (@aspose/3d/formats/stl)

Opções-chave
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binário)

Módulo FBX (@aspose/3d/formats/fbx)

Opções-chave
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Formatos suportados

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxNão*Não*
COLLADA.dae
3MF.3mf

Exemplo de referência rápida

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

Veja Também

 Português