API Overview — @aspose/3d for TypeScript

Pakiet: @aspose/3d (v24.12.0) Język: TypeScript / Node.js 18+ Licencja: MIT

@aspose/3d jest biblioteką na licencji MIT do odczytu, konstruowania i eksportowania scen 3D w Node.js. Dostarcza pełne definicje typów TypeScript, jedną zależność w czasie wykonywania (xmldom), i wspiera siedem głównych formatów plików 3D. Cały I/O jest synchroniczny. Nie są wymagane natywne dodatki.


npm install @aspose/3d

tsconfig.json ustawienia dla prawidłowego rozwiązywania podścieżek:

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

Klasy podstawowe

Główny kontener sceny 3D. Cała zawartość; węzły, geometria, materiały i animacje; jest przechowywana w drzewie z korzeniem w scene.rootNode.Użyj open() / openFromBuffer() aby wczytać plik i save() / saveToBuffer() do eksportu.

rootNodeNodeKorzeń grafu sceny
assetInfoAssetInfoMetadane pliku (twórca, jednostki, układ współrzędnych)
animationClipsAnimationClip[]Wszystkie klipy animacji w scenie
open(path, opts?)(string, LoadOptions?) → voidWczytaj plik z dysku
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidZaładuj z bufora w pamięci
save(path, opts?)(string, SaveOptions?) → voidZapisz na dysk (format określany na podstawie rozszerzenia)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferZapisz do bufora w pamięci
createAnimationClip(name)(string) → AnimationClipUtwórz i zarejestruj nowy klip animacji

Nazwany węzeł drzewa w grafie sceny. Węzły niosą opcjonalny Entity (mesh, camera, light) i Transform która pozycjonuje węzeł względem jego rodzica.

namestringNazwa węzła
childNodesNode[]Bezpośrednie węzły potomne
entity`Entitynull`
transformTransformLokalna translacja, rotacja, skalowanie
materialsMaterial[]Materiały przypisane do tego węzła
createChildNode(name)(string) → NodeDodaj węzeł potomny
getChildNode(name)`(string) → Nodenull`

Siatka wielokątowa; podstawowy typ geometrii. Rozszerza Geometry.

controlPointsVector4[]Pozycje wierzchołków (w=1 dla pozycji)
polygonCountnumberLiczba wielokątów
createPolygon(indices)(number[]) → voidDodaj wielokąt (trójkąt lub czworokąt)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementUtwórz element wierzchołka

Lokalna transformacja zastosowana do węzła.

translationVector3Pozycja lokalna
eulerAnglesVector3Rotacja Eulera w stopniach (kolejność XYZ)
rotationQuaternionRotacja jako kwaternion
scalingVector3Skala lokalna

Klasy materiałów

Kluczowe właściwości
LambertMaterialRozproszone + cieniowanie otoczeniadiffuseColor, ambientColor, transparency
PhongMaterialDodaje odbicia + emisję do LambertspecularColor, shininess, emissiveColor
PbrMaterialOparte na fizyce dla glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Klasy matematyczne

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Wariant single-precision używany w danych wierzchołków
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionQuaternion obrotu; fromEulerAngle, toEulerAngles, slerp
BoundingBoxProstopadłościan ograniczający wyrównany do osi; minimum, maximum, center, size, merge

Klasy animacji

AnimationClipNazwany clip; zawiera AnimationNode lista; dostępna przez scene.animationClips
AnimationNodeŁączy clip z nazwanym scene node; zawiera AnimationChannel lista
AnimationChannelCeluje w pojedynczą właściwość (np. translation X); przechowuje a KeyframeSequence
KeyframeSequenceUporządkowana lista KeyFrame obiekty z interpolation i extrapolation
KeyFramePojedyncza para czas/wartość

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTSemantyka elementu wierzchołka
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMEJak dane mapują się na geometrię
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTStrategia indeksowania danych elementu wierzchołka
InterpolationCONSTANT, LINEAR, BEZIERInterpolacja klatek kluczowych
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEZachowanie poza zakresem klatek kluczowych

Moduły formatów

Klasy opcji specyficznych dla formatu są eksportowane z modułów podścieżek. Importuj je osobno:

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

Moduł OBJ (@aspose/3d/formats/obj)

Kluczowe opcje
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

Moduł glTF/GLB (@aspose/3d/formats/gltf)

Kluczowe opcje
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance():instancja formatu dla scene.save()

Moduł STL (@aspose/3d/formats/stl)

Kluczowe opcje
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binarny)

Moduł FBX (@aspose/3d/formats/fbx)

Kluczowe opcje
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Obsługiwane formaty

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxNie*Nie*
COLLADA.dae
3MF.3mf

Przykład szybkiego odniesienia

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

Zobacz także

 Polski