Jellemzők és funkciók
Aspose.3D FOSS for TypeScript egy MIT-licencelt Node.js könyvtár a 3D jelenetek betöltéséhez, felépítéséhez és exportálásához. Teljes TypeScript típusdefiníciókkal érkezik, egyetlen futásidejű függőséggel (xmldom), és támogatja a hat fő 3D fájlformátumot. Ez az oldal az összes funkcióterület elsődleges hivatkozása, és futtatható TypeScript kódpéldákat tartalmaz mindegyikhez.
Telepítés és beállítás
Telepítsd a csomagot az npm‑ről egyetlen paranccsal:
npm install @aspose/3dA csomag a CommonJS-t célozza, és Node.js 18 vagy újabb verziót igényel. Telepítés után ellenőrizze, hogy a tsconfig.json tartalmazza a következő fordítóbeállításokat a teljes kompatibilitás érdekében:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
"strict": true
}
}Importálja a fő Scene osztályt a csomag gyökeréből. A formátum-specifikus opcióosztályok a megfelelő alútvonalakról importálhatók:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';Jellemzők és funkciók
Formátumtámogatás
Aspose.3D FOSS for TypeScript hat fő 3D fájlformátumot olvas és ír. A formátumdetektálás betöltéskor automatikusan a bináris mágikus számok alapján történik, így nem kell explicit módon megadnod a forrásformátumot.
| Formátum | Olvasás | Írás | Megjegyzések |
|---|---|---|---|
| OBJ (Wavefront) | Igen | Igen | Olvas/ír .mtl anyagok; használja ObjLoadOptions.enableMaterials importáláshoz |
| glTF 2.0 | Igen | Igen | JSON szöveges formátum; PBR anyagok |
| GLB | Igen | Igen | Bináris glTF; beállítva GltfSaveOptions.binaryMode = true |
| STL | Igen | Igen | Bináris és ASCII; teljes körutazás ellenőrizve |
| 3MF | Igen | Igen | 3D Manufacturing Format with color and material metadata |
| FBX | Nem* | Nem* | Importáló/exportáló létezik, de a formátum automatikus felismerése nincs bekötve |
| COLLADA (DAE) | Igen | Igen | Egységskálázás, geometria, anyagok és animációs klipek |
OBJ betöltése anyagokkal:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
options.flipCoordinateSystem = false;
options.scale = 1.0;
options.normalizeNormal = true;
scene.open('model.obj', options);Mentés GLB‑be (bináris glTF):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
// ... build or load scene content
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', GltfFormat.getInstance(), opts);Jelenet gráf
Minden 3D tartalom egy fává van szervezve Node objektumok, amelyek a scene.rootNode. Minden csomópont képes hordozni egy Entity (a Mesh, Camera, Light, vagy más SceneObject) és egy Transform ami a szülőhöz viszonyítva helyezi el.
A jelenetgrafikon kulcsosztályai:
Scene: a legfelső szintű tároló; tartalmazzarootNodeésanimationClipsNode: egy névvel ellátott fa csomópont, amelychildNodes,entity,transform, ésmaterialsEntity: alaposztály a csatolható objektumokhoz (Mesh,Camera,Light)SceneObject: alaposztály, amelyet megosztanak aNodeésEntityA3DObject: gyökér alaposztály, amely tartalmazzanameés tulajdonság-táskaTransform: helyi eltolás, forgatás (Euler és Kvaternion), és méretezés
A jelenetgrafikon bejárása:
import { Scene, Node, Mesh } from '@aspose/3d';
const scene = new Scene();
scene.open('model.obj');
function visit(node: Node, depth: number = 0): void {
const indent = ' '.repeat(depth);
console.log(`${indent}Node: ${node.name}`);
if (node.entity) {
console.log(`${indent} Entity: ${node.entity.constructor.name}`);
}
for (const child of node.childNodes) {
visit(child, depth + 1);
}
}
visit(scene.rootNode);Jelenet hierarchia programozott létrehozása:
import { Scene, Node } from '@aspose/3d';
const scene = new Scene();
const parent = scene.rootNode.createChildNode('chassis');
const wheel = parent.createChildNode('wheel_fl');
wheel.transform.translation.set(0.9, -0.3, 1.4);Geometria és Mesh
Mesh az elsődleges geometria típus. Kiterjeszti Geometry és közzéteszi a vezérlőpontokat (csúcsok), poligon indexeket, valamint a csúcs elemeket a normálokhoz, UV-khez és csúcs színekhez.
Kulcsfontosságú geometria osztályok:
Mesh: poligon háló a következővelcontrolPointséspolygonCountGeometry: alaposztály csúcs-elemek kezelésévelVertexElementNormal: csúcsonkénti vagy poligon‑csúcsonkénti normálokVertexElementUV: textúra koordináták (egy vagy több UV csatorna)VertexElementVertexColor: csúcsonkénti színadatMappingMode: vezérli, hogyan térképeződik az elemadat a poligonokraCONTROL_POINT,POLYGON_VERTEX,POLYGON,EDGE,ALL_SAME)ReferenceMode:az indexelési stratégia vezérlése (DIRECT,INDEX,INDEX_TO_DIRECT)VertexElementType:azonosítja a csúcselem szemantikájátTextureMapping:textúra csatorna enumerációja
Mesh adatok beolvasása egy betöltött jelenetből:
import { Scene, Mesh, VertexElementType } from '@aspose/3d';
const scene = new Scene();
scene.open('model.stl');
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
const mesh = node.entity as Mesh;
console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices, ${mesh.polygonCount} polygons`);
const normals = mesh.getElement(VertexElementType.NORMAL);
if (normals) {
console.log(` Normal mapping: ${normals.mappingMode}`);
}
}
}Anyagrendszer
Aspose.3D FOSS for TypeScript három anyagtípust támogat, amelyek lefedik a teljes skálát a régi Phong árnyalástól a fizikailag alapú renderelésig:
LambertMaterial:diffúz szín és környezeti szín; egyszerű OBJ/DAE anyagokra leképezvePhongMaterial:speculáris színt, fényességet és emisszív tulajdonságot ad hozzá; az alapértelmezett OBJ anyagtípusPbrMaterial:fizikai alapú durvaság/fémesség modell; a glTF 2.0 import és export során használatos
Anyagok beolvasása egy betöltött OBJ jelenetből:
import { Scene, PhongMaterial, LambertMaterial } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);
for (const node of scene.rootNode.childNodes) {
for (const mat of node.materials) {
if (mat instanceof PhongMaterial) {
const phong = mat as PhongMaterial;
console.log(` Phong: diffuse=${JSON.stringify(phong.diffuseColor)}, shininess=${phong.shininess}`);
} else if (mat instanceof LambertMaterial) {
console.log(` Lambert: diffuse=${JSON.stringify((mat as LambertMaterial).diffuseColor)}`);
}
}
}PBR anyag alkalmazása glTF jelenet felépítésekor:
import { Scene, Node, PbrMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
const node = scene.rootNode.createChildNode('sphere');
const mat = new PbrMaterial();
mat.albedo = new Vector3(0.8, 0.2, 0.2); // red-tinted albedo; albedo starts null, must assign
mat.metallicFactor = 0.0;
mat.roughnessFactor = 0.5;
node.material = mat;
const opts = new GltfSaveOptions();
opts.binaryMode = false;
scene.save('output.gltf', GltfFormat.getInstance(), opts);Matematikai segédeszközök
A könyvtár egy teljes 3D matematikai típuskészlettel érkezik, mindegyik teljesen típusos:
Vector3:3 komponensű vektor; támogatjaminus(),times(),dot(),cross(),normalize(),length,angleBetween()Vector4:4 komponensű vektor homogén koordinátákhozMatrix4:4×4 transzformációs mátrix a következővelconcatenate(),transpose,decompose,setTRSQuaternion:rotációs kvaternion a következővelfromEulerAngle()(statikus, szinguláris),eulerAngles()(példánymetódus),slerp(),normalize()BoundingBox:tengelyekhez igazított határoló doboz a következővelminimum,maximum,center,size,mergeFVector3:egyszeres pontosságú változata aVector3csúcselem adatokban használt
Határoló doboz számítása a háló csúcspontjaiból:
import { Scene, Mesh, Vector3, BoundingBox } from '@aspose/3d';
const scene = new Scene();
scene.open('model.obj');
let box = new BoundingBox();
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
for (const pt of (node.entity as Mesh).controlPoints) {
box.merge(new Vector3(pt.x, pt.y, pt.z));
}
}
}
console.log('Center:', box.center);
console.log('Extents:', box.size);Transzformáció építése Euler-szögekből:
import { Quaternion, Vector3, Matrix4 } from '@aspose/3d';
const rot = Quaternion.fromEulerAngle(0, Math.PI / 4, 0); // 45° around Y
const mat = new Matrix4();
mat.setTRS(new Vector3(0, 0, 0), rot, new Vector3(1, 1, 1));Animációs rendszer
Az animációs API modellezi a klippeket, csomópontokat, csatornákat és kulcskocka sorozatokat:
AnimationClip:nevesített animációs csomópontok gyűjteménye; elérhető a következőn keresztülscene.animationClips; kiteszanimations: AnimationNode[]AnimationNode: névvel ellátott csoportBindPoints; létrehozva aclip.createAnimationNode(name), elérve aclip.animationsBindPoint: összekapcsol egyAnimationNodeegy adott tulajdonsághoz egy jelenetobjektumon; kitetpropertyéschannelsCountAnimationChannel: kiterjesztiKeyframeSequence; tart egy különkeyframeSequence; elérhető viabindPoint.getChannel(name)KeyFrame: egyetlen idő/érték pár; kulcskockánként hordozinterpolation: InterpolationKeyframeSequence: rendezett lista aKeyFrameobjektumok viakeyFrames; tartalmazpreBehavioréspostBehavior(Extrapolation)Interpolation: enum:LINEAR,CONSTANT,BEZIER,B_SPLINE,CARDINAL_SPLINE,TCB_SPLINEExtrapolation: osztály a következőveltype: ExtrapolationTypeésrepeatCount: numberExtrapolationType: enum:CONSTANT,GRADIENT,CYCLE,CYCLE_RELATIVE,OSCILLATE
Animációs adatok beolvasása egy betöltött jelenetből:
import { Scene, AnimationNode, BindPoint } from '@aspose/3d';
const scene = new Scene();
scene.open('animated.dae'); // COLLADA animation import is supported
for (const clip of scene.animationClips) {
console.log(`Clip: "${clip.name}"`);
for (const animNode of clip.animations) { // clip.animations, not clip.nodes
console.log(` AnimationNode: ${animNode.name}`);
for (const bp of animNode.bindPoints) { // animNode.bindPoints, not animNode.channels
console.log(` BindPoint: property="${bp.property.name}", channels=${bp.channelsCount}`);
}
}
}Stream és Buffer támogatás
Használja scene.openFromBuffer() 3D-s jelenet betöltéséhez közvetlenül egy memóriában lévőből Buffer. Ez a javasolt minta serverless függvényekhez, streaming csővezetékekhez, és HTTP-n keresztül lekért eszközök feldolgozásához anélkül, hogy lemezre írnánk.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import * as fs from 'fs';
// Load file into memory, then parse from buffer
const buffer: Buffer = fs.readFileSync('model.obj');
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.openFromBuffer(buffer, options);
for (const node of scene.rootNode.childNodes) {
if (node.entity) {
console.log(node.name, node.entity.constructor.name);
}
}A bináris varázsszámok alapján történő formátum automatikus felismerés a bufferből történő betöltéskor is érvényes, így a GLB, STL bináris és 3MF fájlok formátumparaméter megadása nélkül is felismertek.
Használati példák
Példa 1: OBJ betöltése és GLB-be exportálása
Ez a példa egy anyagokkal rendelkező Wavefront OBJ fájlt tölt be, majd a jelenetet bináris glTF (GLB) fájlként exportálja, amely alkalmas webes és játékmotoros felhasználásra.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
function convertObjToGlb(inputPath: string, outputPath: string): void {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
loadOpts.flipCoordinateSystem = false;
loadOpts.normalizeNormal = true;
scene.open(inputPath, loadOpts);
// Report what was loaded
for (const node of scene.rootNode.childNodes) {
if (node.entity) {
console.log(`Loaded: ${node.name} (${node.entity.constructor.name})`);
}
}
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true; // write .glb instead of .gltf + .bin
scene.save(outputPath, GltfFormat.getInstance(), saveOpts);
console.log(`Exported GLB to: ${outputPath}`);
}
convertObjToGlb('input.obj', 'output.glb');Példa 2: Kétirányú STL normál ellenőrzéssel
Ez a példa egy bináris STL fájlt tölt be, kiírja a csúcsonkénti normál információkat, majd a jelenetet ASCII STL-ként exportálja, és ellenőrzi a körkörös átalakítást.
import { Scene, Mesh, VertexElementNormal, VertexElementType } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
const loadOpts = new StlLoadOptions();
scene.open('model.stl', loadOpts);
let totalPolygons = 0;
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
const mesh = node.entity as Mesh;
totalPolygons += mesh.polygonCount;
const normElem = mesh.getElement(VertexElementType.NORMAL) as VertexElementNormal | null;
if (normElem) {
console.log(` Normals: ${normElem.data.length} entries, mapping=${normElem.mappingMode}`);
}
}
}
console.log(`Total polygons: ${totalPolygons}`);
// Re-export as ASCII STL
const saveOpts = new StlSaveOptions();
saveOpts.binaryMode = false; // ASCII output
scene.save('output_ascii.stl', saveOpts);Példa 3: Jelenet programozott építése és mentése glTF formátumban
Ez a példa egy jelenetet épít fel egy PBR anyaggal a semmiből, és JSON glTF fájlként menti.
import { Scene, Mesh, PbrMaterial, Vector4, Vector3 } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
const node = scene.rootNode.createChildNode('floor');
// Build a simple quad mesh (two triangles)
// controlPoints are Vector4 (x, y, z, w) where w=1 for positions
const mesh = new Mesh();
mesh.controlPoints.push(
new Vector4(-1, 0, -1, 1),
new Vector4( 1, 0, -1, 1),
new Vector4( 1, 0, 1, 1),
new Vector4(-1, 0, 1, 1),
);
mesh.createPolygon([0, 1, 2]);
mesh.createPolygon([0, 2, 3]);
node.entity = mesh;
// Apply a PBR material
const mat = new PbrMaterial();
mat.albedo = new Vector3(0.6, 0.6, 0.6); // albedo starts null, must assign
mat.metallicFactor = 0.0;
mat.roughnessFactor = 0.8;
node.material = mat;
// Save as JSON glTF
const opts = new GltfSaveOptions();
opts.binaryMode = false;
scene.save('floor.gltf', GltfFormat.getInstance(), opts);
console.log('Scene written to floor.gltf');Tippek és bevált gyakorlatok
- Használja
ObjLoadOptions.enableMaterials = trueamikor anyagadatokra van szüksége .mtl fájlokból. Enélkül az egyes csomópontok anyaglistája üres lesz. - Használja inkább
binaryMode = trueGLB-hez webes vagy játék motorokhoz eszközök előállításakor. A bináris GLB egy önálló, egyetlen fájl, és gyorsabban betöltődik a böngészőkben és motorokban, mint a JSON + .bin felosztás. - Használja
openFromBuffer()kiszolgáló nélküli környezetekben az ideiglenes fájl I/O elkerülése érdekében. Hozza be az eszközt, adja át aBufferközvetlenül, és írja a kimenetet egy streambe vagy egy másik pufferbe. - Ellenőrizze
node.entitymielőtt átkonvertálná: nem minden csomópont tartalmaz entitást. Mindig ellenőrizzen egyinstanceofellenőrzést a hozzáférés előttMesh-specifikus tulajdonságokat, példáulcontrolPoints. - Állítsa be
normalizeNormal = truebanObjLoadOptionsamikor a forrás OBJ fájlok megbízhatatlan forrásokból származnak. Ez megakadályozza, hogy a degenerált normálok a downstream renderelés vagy validálási lépések során továbbterjedjenek. - Tartsa
strict: truea tsconfig.json-ban: a könyvtár a következővel készültnoImplicitAnyésstrictNullChecks. Kikapcsolásstrictelfedi a valódi típushibákat, és aláássa a típusos API értékét. - Bejárás a
childNodes, nem indexciklus: achildNodesa tulajdonság iterálható objektumot ad vissza; kerüld a numerikus indexelésre való támaszkodást a jövőbeli kompatibilitás érdekében.
Gyakori problémák
| Tünet | Valószínű ok | Javítás |
|---|---|---|
| Az anyaglista üres az OBJ betöltése után | enableMaterials nincs beállítva | Beállít options.enableMaterials = true |
| A GLB fájl külön .bin mellékletet tartalmaz | binaryMode alapértelmezettként false | Beállít opts.binaryMode = true |
| A csúcsi normálok hiányoznak az STL kimenetben | Az STL ASCII mód kihagyja az egyes felületek normáljait | Váltás binaryMode = true vagy számítsd ki a normálvektorokat exportálás előtt |
node.entity mindig null | Csak bejárás rootNode, nem a gyermekei | Rekurzióba node.childNodes |
| TypeScript hiba: a tulajdonság nem létezik | Régi @types gyorsítótár | Futtatás npm install @aspose/3d újra; nincs külön @types csomagra szükség van |
openFromBuffer formátumhibát dob | A formátum nem automatikusan felismerhető a mágikából | Adja meg az explicit formátum opció osztályt második argumentumként |
Gyakran Ismételt Kérdések
Igényel a könyvtár bármilyen natív kiegészítőt vagy rendszercsomagot? Nem. Aspose.3D FOSS for TypeScript egyetlen futásidejű függőséggel rendelkezik: xmldom, ami tiszta JavaScript, és az npm automatikusan telepíti. Nincsenek .node natív kiegészítők és nincs telepítendő rendszercsomag.
Mely Node.js verziók támogatottak? Node.js 18, 20, és 22 LTS. A könyvtár a CommonJS kimenetre céloz, és belsőleg ES2020 nyelvi funkciókat használ.
Használhatom a könyvtárat egy böngészőcsomagban (webpack/esbuild)? A könyvtár a Node.js-re céloz, és a Node.js-t használja fs és Buffer API-k. A böngészőben történő csomagolás nincs hivatalosan támogatva. Böngészőben való használathoz töltsd be a jelenetet szerveroldalon, és küldd át az eredményt (pl. GLB formátumban) a kliensnek.
Mi a különbség a GltfSaveOptions.binaryMode = true és false? binaryMode = false előállít egy .gltf JSON fájlt plusz egy külön .bin bináris puffer mellékletet. binaryMode = true előállít egyetlen önálló .glb fájlt. Használd a true a termelési eszközök szállításához.
Betölthetek egy fájlt egy HTTP válaszból anélkül, hogy lementeném a lemezre? Igen. Hozd be a választ mint egy Buffer (például a használatával node-fetch vagy a beépített fetch Node 18+-ban), majd hívd meg a scene.openFromBuffer(buffer, options).
Teljes-e az FBX támogatás? Nem. A könyvtárban léteznek FBX importáló és exportáló osztályok, de az FBX nincs beépítve a Scene.open() vagy Scene.save() automatikus felismerés. A hívás scene.open('file.fbx') nem fogja meghívni az FBX importálót; a fájlt az STL tartalék útvonal kezeli. Használja közvetlenül az FBX‑specifikus importáló/exportáló osztályokat, ha FBX I/O‑ra van szüksége. Tekintse meg a fenti formátumtámogatási táblázatot, amely az FBX‑et mint No*.
Támogatja a könyvtár a TypeScript 4.x‑et? A TypeScript 5.0+ ajánlott. A TypeScript 4.7+ a gyakorlatban működnie kell, de a könyvtárat 5.0+ verzióval tesztelték és írták.
API-referencia összefoglaló
| Osztály | Modul | Cél |
|---|---|---|
Scene | @aspose/3d | Legfelső szintű jelenetkonténer; open(), openFromBuffer(), save(), rootNode, animationClips |
Node | @aspose/3d | Jelenetgrafikon csomópont; childNodes, entity, transform, materials, createChildNode() |
Entity | @aspose/3d | Alaposztály a jelenethez csatolható objektumok számára |
SceneObject | @aspose/3d | Alaposztály, amelyet megoszt Node és Entity |
A3DObject | @aspose/3d | Gyökér alaposztály a következővel name és tulajdonság-táska |
Transform | @aspose/3d | Helyi eltolás, forgatás és méretezés |
Mesh | @aspose/3d | Poligon háló; controlPoints, polygonCount, createPolygon(), csúcs elemek |
Geometry | @aspose/3d | Alaposztály a geometriai típusokhoz |
Camera | @aspose/3d | Kamera entitás látószöggel és projekció beállításokkal |
Light | @aspose/3d | Fény entitás (pont, irányított, spot) |
LambertMaterial | @aspose/3d | Diffúz + környezeti árnyékolási modell |
PhongMaterial | @aspose/3d | Phong árnyékolás speculáris és emisszív |
PbrMaterial | @aspose/3d | Fizikailag alapú durvaság/fémesség modell a glTF-hez |
Vector3 | @aspose/3d | 3-component double-precision vector |
Vector4 | @aspose/3d | 4-component vector for homogeneous math |
Matrix4 | @aspose/3d | 4×4 transformation matrix |
Quaternion | @aspose/3d | Forgatási kvaternió |
BoundingBox | @aspose/3d | Tengelyhez igazított határoló doboz |
FVector3 | @aspose/3d | Egypontos változata a Vector3 |
VertexElementNormal | @aspose/3d | Csúcsonkénti vagy poligon-csúcsonkénti normálok |
VertexElementUV | @aspose/3d | Textúra koordináta csúcs elem |
VertexElementVertexColor | @aspose/3d | Csúcsonkénti szín csúcs elem |
MappingMode | @aspose/3d | Enum: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAME |
ReferenceMode | @aspose/3d | Enum: DIRECT, INDEX, INDEX_TO_DIRECT |
AnimationClip | @aspose/3d | Megnevezett animáció; elérhető animations: AnimationNode[]; létrehozva a scene.createAnimationClip(name) |
AnimationNode | @aspose/3d | Nevzett csoport BindPoints; létrehozva a clip.createAnimationNode(name) |
BindPoint | @aspose/3d | Köt egy AnimationNode egy jelenetobjektum tulajdonságához; kitetti property és channelsCount |
AnimationChannel | @aspose/3d | Kiterjeszti KeyframeSequence; tart egy keyframeSequence; elérhető a bindPoint.getChannel(name) |
KeyFrame | @aspose/3d | Egyetlen idő/érték kulcskockapár; tartalmaz interpolation: Interpolation |
KeyframeSequence | @aspose/3d | Rendezett keyFrames lista; preBehavior/postBehavior vannak Extrapolation objektumok |
Interpolation | @aspose/3d | Enum: LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE |
Extrapolation | @aspose/3d | Osztály a type: ExtrapolationType és repeatCount: number |
ExtrapolationType | @aspose/3d | Enum: CONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATE |
ObjLoadOptions | @aspose/3d/formats/obj | OBJ importálási beállítások: enableMaterials, flipCoordinateSystem, scale, normalizeNormal |
GltfSaveOptions | @aspose/3d/formats/gltf | glTF/GLB exportálási beállítások: binaryMode |
GltfFormat | @aspose/3d/formats/gltf | Formátumpéldány a glTF/GLB-hez; átadja scene.save() |
StlLoadOptions | @aspose/3d/formats/stl | STL importálási beállítások |
StlSaveOptions | @aspose/3d/formats/stl | STL exportálási beállítások: binaryMode |
StlImporter | @aspose/3d/formats/stl | Alacsony szintű STL olvasó |
StlExporter | @aspose/3d/formats/stl | Alacsony szintű STL író |