API Overview — @aspose/3d for TypeScript

Pakket: @aspose/3d (v24.12.0) Taal: TypeScript / Node.js 18+ Licentie: MIT

@aspose/3d is een MIT-gelicentieerde bibliotheek voor het lezen, construeren en exporteren van 3D‑scènes in Node.js. Het wordt geleverd met volledige TypeScript-typedefinities, een enkele runtime‑afhankelijkheid (xmldom), en ondersteunt zeven belangrijke 3D-bestandsformaten. Alle I/O is synchroon. Er zijn geen native add-ons vereist.


npm install @aspose/3d

tsconfig.json instellingen voor correcte subpadresolutie:

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

Kernklassen

De rootcontainer voor een 3D‑scène. Alle inhoud; knooppunten, geometrie, materialen en animaties; wordt opgeslagen in een boom die is geworteld in scene.rootNode. Gebruik open() / openFromBuffer() om een bestand te laden en save() / saveToBuffer() exporteren.

rootNodeNodeRoot van de scenegraph
assetInfoAssetInfoBestandsmetadata (maker, eenheden, coördinatensysteem)
animationClipsAnimationClip[]Alle animatieclips in de scène
open(path, opts?)(string, LoadOptions?) → voidLaad een bestand van schijf
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidLaden vanuit in-memory buffer
save(path, opts?)(string, SaveOptions?) → voidOpslaan naar schijf (formaat afgeleid van extensie)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferOpslaan naar in-memory buffer
createAnimationClip(name)(string) → AnimationClipMaak en registreer een nieuwe animatieclip

Een benoemde boomknooppunt in de scènegrafiek. Knooppunten dragen een optionele Entity (mesh, camera, light) en een Transform die de knoop positioneert ten opzichte van zijn ouder.

namestringKnooppuntnaam
childNodesNode[]Directe kindknooppunten
entity`Entitynull`
transformTransformLokale translatie, rotatie, schaal
materialsMaterial[]Materialen toegewezen aan dit knooppunt
createChildNode(name)(string) → NodeVoeg een kindknooppunt toe
getChildNode(name)`(string) → Nodenull`

Polygon mesh; het primaire geometrietype. Breidt uit Geometry.

controlPointsVector4[]Vertexposities (w=1 voor posities)
polygonCountnumberAantal polygonen
createPolygon(indices)(number[]) → voidVoeg een polygoon toe (driehoek of quad)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementMaak een vertex‑element aan

Lokale transformatie toegepast op een knooppunt.

translationVector3Lokale positie
eulerAnglesVector3Euler-rotatie in graden (XYZ-volgorde)
rotationQuaternionRotatie als een quaternion
scalingVector3Lokale schaal

Materiaalklassen

Belangrijke eigenschappen
LambertMaterialDiffuse + ambient shadingdiffuseColor, ambientColor, transparency
PhongMaterialVoegt specular + emissive toe aan LambertspecularColor, shininess, emissiveColor
PbrMaterialFysiek gebaseerd voor glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Wiskundeklassen

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Single-precision variant gebruikt in vertex data
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionRotatiequaternion; fromEulerAngle, toEulerAngles, slerp
BoundingBoxAs-uitgelijnde begrenzingsdoos; minimum, maximum, center, size, merge

Animatieklassen

AnimationClipGenaam clip; bevat AnimationNode lijst; benaderd via scene.animationClips
AnimationNodeBindt een clip aan een genaamde sceneknoop; bevat AnimationChannel lijst
AnimationChannelRicht zich op één eigenschap (bijv. translatie X); bevat een KeyframeSequence
KeyframeSequenceGeordende lijst van KeyFrame objecten met interpolation en extrapolation
KeyFrameEnkele tijd/waarde-paar

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTVertex-elementsemantiek
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMEHoe data wordt gemapt op geometrie
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTIndexeringsstrategie voor vertex-elementdata
InterpolationCONSTANT, LINEAR, BEZIERKeyframe-interpolatie
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEGedrag buiten keyframe-bereik

Formaatmodules

Formaat‑specifieke optieklassen worden geëxporteerd vanuit sub‑padmodules. Importeer ze afzonderlijk:

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-module (@aspose/3d/formats/obj)

Sleutelopties
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

glTF/GLB-module (@aspose/3d/formats/gltf)

Sleutelopties
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance(): formatinstantie voor scene.save()

STL-module (@aspose/3d/formats/stl)

Sleutelopties
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binair)

FBX-module (@aspose/3d/formats/fbx)

Sleutelopties
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Ondersteunde formaten

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxNee*Nee*
COLLADA.dae
3MF.3mf

Snelreferentie-voorbeeld

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

Zie ook

 Nederlands