API Overview — @aspose/3d for TypeScript

Pakej: @aspose/3d (v24.12.0) Bahasa: TypeScript / Node.js 18+ Lesen: MIT

@aspose/3d adalah perpustakaan berlesen MIT untuk membaca, membina, dan mengeksport adegan 3D dalam Node.js. Ia disertakan dengan definisi jenis TypeScript yang lengkap, satu kebergantungan masa jalan ( ), dan menyokong tujuh format fail 3D utama. Semua I/O bersifat segerak. Tiada add-on asli diperlukan.xmldomtetapan untuk resolusi sub-laluan yang betul:.


npm install @aspose/3d

tsconfig.json Bekas akar untuk adegan 3D. Semua kandungan; nod, geometri, bahan, dan animasi; disimpan dalam pokok yang berakar pada:

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

Kelas Teras

. Gunakan scene.rootNode. Use open() / openFromBuffer() untuk memuatkan fail dan save() / saveToBuffer() untuk mengeksport.

rootNodeNodeAkar graf adegan
assetInfoAssetInfoMetadata fail (pencipta, unit, sistem koordinat)
animationClipsAnimationClip[]Semua klip animasi dalam adegan
open(path, opts?)(string, LoadOptions?) → voidMuat fail dari cakera
openFromBuffer(buf, opts?)(Buffer, LoadOptions?) → voidMuat dari penampan dalam memori
save(path, opts?)(string, SaveOptions?) → voidSimpan ke cakera (format ditentukan daripada sambungan)
saveToBuffer(ext, opts?)(string, SaveOptions?) → BufferSimpan ke penampan dalam memori
createAnimationClip(name)(string) → AnimationClipCipta dan daftar klip animasi baru

Sebuah nod pokok bernama dalam graf adegan. Nod membawa pilihan Entity (mesh, camera, light) dan satu Transform yang menempatkan nod relatif kepada induknya.

namestringNama nod
childNodesNode[]Nod anak langsung
entity`Entitynull`
transformTransformTerjemahan, putaran, skala setempat
materialsMaterial[]Bahan yang ditetapkan kepada nod ini
createChildNode(name)(string) → NodeTambah nod anak
getChildNode(name)`(string) → Nodenull`

Mesh poligon; jenis geometri utama. Memperluas Geometry.

controlPointsVector4[]Kedudukan verteks (w=1 untuk kedudukan)
polygonCountnumberBilangan poligon
createPolygon(indices)(number[]) → voidTambah poligon (segitiga atau kuad)
getElement(type)`(VertexElementType) → VertexElementnull`
createElement(type)(VertexElementType) → VertexElementCipta elemen verteks

Transformasi setempat yang diterapkan pada nod.

translationVector3Posisi tempatan
eulerAnglesVector3Putaran Euler dalam darjah (susunan XYZ)
rotationQuaternionPutaran sebagai kuaternion
scalingVector3Skala tempatan

Kelas Bahan

Ciri Utama
LambertMaterialDifus + bayang ambientdiffuseColor, ambientColor, transparency
PhongMaterialMenambah specular + emissive kepada LambertspecularColor, shininess, emissiveColor
PbrMaterialBerasaskan fizikal untuk glTF 2.0albedo, metallicFactor, roughnessFactor, emissiveColor

Kelas Matematik

Vector33-component double-precision vector (x, y, z)
Vector44-component vector for homogeneous math (x, y, z, w)
FVector3Varian ketepatan tunggal yang digunakan dalam data vertex
Matrix44×4 transformation matrix; multiply, invert, decompose
QuaternionQuaternion putaran; fromEulerAngle, toEulerAngles, slerp
BoundingBoxKotak sempadan selari paksi; minimum, maximum, center, size, merge

Kelas Animasi

AnimationClipKlip bernama; mengandungi AnimationNode senarai; diakses melalui scene.animationClips
AnimationNodeMengikat klip kepada nod adegan bernama; mengandungi AnimationChannel senarai
AnimationChannelMenyasarkan satu sifat (contoh: terjemahan X); menyimpan satu KeyframeSequence
KeyframeSequenceSenarai teratur bagi KeyFrame objek dengan interpolation dan extrapolation
KeyFramePasangan masa/nilai tunggal

VertexElementTypeNORMAL, UV, VERTEX_COLOR, BINORMAL, TANGENTSemantik elemen verteks
MappingModeCONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAMEBagaimana data dipetakan ke geometri
ReferenceModeDIRECT, INDEX, INDEX_TO_DIRECTStrategi pengindeksan untuk data elemen verteks
InterpolationCONSTANT, LINEAR, BEZIERInterpolasi bingkai kunci
ExtrapolationCONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATEKelakuan di luar julat keyframe

Modul Format

Kelas pilihan khusus format dieksport dari modul sub‑laluan. Import mereka secara berasingan:

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)

Pilihan Utama
ObjLoadOptionsenableMaterials, flipCoordinateSystem, scale, normalizeNormal

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

Pilihan Utama
GltfSaveOptionsbinaryMode (true → .glb), flipTexCoordV
GltfFormatGltfFormat.getInstance(): contoh format untuk scene.save()

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

Pilihan Utama
StlLoadOptionsN/A
StlSaveOptionsbinaryMode (false → ASCII, true → binari)

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

Pilihan Utama
FbxLoadOptionsN/A
FbxSaveOptionsembedTextures

Format yang Disokong

.obj
glTF 2.0.gltf
.glb
STL.stl
FBX.fbxTidak*Tidak*
COLLADA.dae
3MF.3mf

Contoh Rujukan Pantas

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

Lihat Juga

 Bahasa Melayu