API Overview — @aspose/3d for TypeScript

Pachet: @aspose/3d (v24.12.0) Limbaj: TypeScript / Node.js 18+ Licență: MIT

@aspose/3d este o bibliotecă MIT-licensed pentru citirea, construirea și exportarea scenelor 3D în Node.js. Vine cu definiții complete de tipuri TypeScript, o singură dependență la runtime.xmldom), și acceptă șapte formate majore de fișiere 3D. Toate operațiile I/O sunt sincronizate. Nu sunt necesare addon-uri native.


npm install @aspose/3d

tsconfig.json setări pentru rezoluția corectă a sub-căii:

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

Clase de bază

Containerul rădăcină pentru o scenă 3D. Tot conținutul; noduri, geometrie, materiale și animații; este stocat într-un arbore cu rădăcina la scene.rootNode. Folosește open() / openFromBuffer() pentru a încărca un fișier și save() / saveToBuffer() pentru export.

rootNodeNodeRădăcina graficului scenei
assetInfoAssetInfoMetadatele fișierului (creator, unități, sistem de coordonate)
animationClipsAnimationClip[]Toate clipurile de animație din scenă
open(path, opts?)(string, LoadOptions?) → voidÎncarcă un fișier de pe disc
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidÎncarcă dintr-un buffer în memorie
save(path, opts?)(string, SaveOptions?) → voidSalvează pe disc (format dedus din extensie)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferSalvează în buffer în memorie
createAnimationClip(name)(string) → AnimationClipCreează și înregistrează un nou clip de animație

Un nod de arbore denumit în graficul scenei. Nodurile poartă un opțional Entity (mesh, cameră, lumină) și un Transform care poziționează nodul relativ la părintele său.

namestringNume nod
childNodesNode[]Noduri copil directe
entity`Entitynull`
transformTransformTranslație, rotație și scară locale
materialsMaterial[]Materiale atribuite acestui nod
createChildNode(name)(string) → NodeAdaugă un nod copil
getChildNode(name)`(string) → Nodenull`

Plasă poligonală; tipul principal de geometrie. Extinde Geometry.

controlPointsVector4[]Poziții ale vârfurilor (w=1 pentru poziții)
polygonCountnumberNumăr de poligoane
createPolygon(indices)(number[]) → voidAdaugă un poligon (triunghi sau cvadrilater)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementCreează un element de vârf

Transformare locală aplicată unui nod.

translationVector3Poziție locală
eulerAnglesVector3Rotire Euler în grade (ordine XYZ)
rotationQuaternionRotire ca quaternion
scalingVector3Scară locală

Clase de material

Proprietăți cheie
LambertMaterialUmbrare difuză + ambientalădiffuseColor, ambientColor, transparency
PhongMaterialAdaugă specular + emisiv la LambertspecularColor, shininess, emissiveColor
PbrMaterialBazat pe fizică pentru glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Clase matematice

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Variantă cu precizie simplă utilizată în datele de vârf
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionCuaternion de rotație; fromEulerAngle, toEulerAngles, slerp
BoundingBoxCutie de delimitare aliniată pe axe; minimum, maximum, center, size, merge

Clase de animație

AnimationClipClip numit; conține AnimationNode listă; accesată prin scene.animationClips
AnimationNodeLeagă un clip de un nod de scenă numit; conține AnimationChannel listă
AnimationChannelVizează o singură proprietate (de ex. translație X); deține un KeyframeSequence
KeyframeSequenceListă ordonată de KeyFrame obiecte cu interpolation și extrapolation
KeyFramePereche unică timp/valoare

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTSemantică element vertex
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMECum se mapază datele la geometrie
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTStrategie de indexare pentru datele elementului vertex
InterpolationCONSTANT, LINEAR, BEZIERInterpolare cadru cheie
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEComportament în afara intervalului cadrelor cheie

Module de format

Clasele de opțiuni specifice formatului sunt exportate din modulele sub-căilor. Importați-le separat:

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

Modul OBJ (@aspose/3d/formats/obj)

Opțiuni cheie
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

Modul glTF/GLB (@aspose/3d/formats/gltf)

Opțiuni cheie
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance():instanță de format pentru scene.save()

Modul STL (@aspose/3d/formats/stl)

Opțiuni cheie
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binar)

Modul FBX (@aspose/3d/formats/fbx)

Opțiuni cheie
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Formate suportate

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxNu*Nu*
COLLADA.dae
3MF.3mf

Exemplu de referință rapidă

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

Vezi și

 Română