תכונות ופונקציונליות

תכונות ופונקציונליות

Aspose.3D FOSS עבור TypeScript היא ספריית Node.js ברישיון MIT לטעינה, בנייה וייצוא של סצנות תלת‑ממדיות. היא מגיעה עם הגדרות סוגים מלאות של TypeScript, תלות ריצה יחידה (xmldom).

התקנה והגדרה

התקן את החבילה מ‑npm באמצעות פקודה אחת:

npm install @aspose/3d

החבילה ממוקדת ב‑CommonJS ודורשת Node.js 18 או גרסה מאוחרת יותר. לאחר ההתקנה, אמת את ה‑ tsconfig.json כוללת את אפשרויות המהדר הבאות לתאימות מלאה:

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

ייבא את הראשי Scene מחלקה משורש החבילה. מחלקות אפשרויות ספציפיות לפורמט מיובאות מהנתיבים המשניים המתאימים להן:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

תכונות ופונקציונליות

תמיכה בפורמטים

Aspose.3D FOSS for TypeScript קוראת וכותבת שישה פורמטים מרכזיים של קבצי תלת‑ממד. זיהוי הפורמט מתבצע אוטומטית ממספרי הקסם הבינריים בזמן הטעינה, ולכן אין צורך לציין במפורש את פורמט המקור.

פורמטקראכתובהערות
OBJ (Wavefront)כןכןקורא/כותב .mtl חומרים; השתמש ObjLoadOptions.enableMaterials לייבוא
glTF 2.0כןכןפורמט טקסט JSON; חומרים PBR
GLBכןכןBinary glTF; קבוצה GltfSaveOptions.binaryMode = true
STLכןכןבינארי ו-ASCII; אימות סיבוב מלא
3MFכןכן3D Manufacturing Format with color and material metadata
FBXלא*לא*קיים ייבוא/ייצוא אך זיהוי אוטומטי של הפורמט אינו מחובר
COLLADA (DAE)כןכןקנה מידה של יחידה, גאומטריה, חומרים וקטעי אנימציה

טעינת OBJ עם חומרים:

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

שמירה ל‑GLB (binary 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);

גרף סצנה

כל תוכן תלת‑ממדי מאורגן כעץ של Node אובייקטים שמקודמים ב scene.rootNode. כל צומת יכול לשאת Entity (a Mesh, Camera, Light, או אחר SceneObject) Transform שממתמקם יחסית להורה שלו.

מחלקות מפתח בגרף הסצנה:

  • Scene: מכולה ברמת העליון; מכילה rootNode ו animationClips
  • Node: צומת עץ בעל שם עם childNodes, entity, transform, ו materials
  • Entity: מחלקה בסיסית לאובייקטים ניתנים לצירוף (Mesh, Camera, Light)
  • SceneObject: מחלקה בסיסית משותפת ל Node ו Entity
  • A3DObject:מחלקת בסיס שורש עם name ו‑property bag
  • Transform:תרגום מקומי, סיבוב (Euler ו‑Quaternion), וקנה מידה

מעבר על גרף הסצנה:

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

יצירת היררכיית סצנה באופן תכנותי:

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

גאומטריה ו-Mesh

Mesh הוא סוג הגיאומטריה הראשי. הוא מרחיב Geometry ומחשוף נקודות בקרה (קודקודים), אינדקסים של פוליגונים, ואלמנטים של קודקוד עבור נורמליות, UVs, וצבעי קודקוד.

מחלקות גאומטריה מרכזיות:

  • Mesh:רשת פוליגונים עם controlPoints ו polygonCount
  • Geometry:מחלקת בסיס עם ניהול vertex-element
  • VertexElementNormal:נורמליות לכל קודקוד או לכל קודקוד‑פוליגון
  • VertexElementUV:קואורדינטות מרקם (ערוץ UV אחד או יותר)
  • VertexElementVertexColor:נתוני צבע לכל קודקוד
  • MappingMode:שולט איך נתוני אלמנטים ממופים לפוליגונים (CONTROL_POINT, POLYGON_VERTEX, POLYGON, EDGE, ALL_SAME)
  • ReferenceMode:שולט באסטרטגיית האינדקסינג (DIRECT, INDEX, INDEX_TO_DIRECT)
  • VertexElementType:מזהה את המשמעות של אלמנט קודקוד
  • TextureMapping:רשימת ערוצי מרקם

קריאת נתוני רשת מסצנה טעונה:

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

מערכת חומרים

Aspose.3D FOSS עבור TypeScript תומך בשלושה סוגי חומרים המכסים את כל הטווח מהצללה פונג ישנה ועד רינדור פיזיקלי מבוסס:

  • LambertMaterial:צבע פיזור וצבע אמביינט; ממופה לחומרי OBJ/DAE פשוטים
  • PhongMaterial: מוסיף צבע משקף, ברק והקרנה; סוג החומר ברירת המחדל של OBJ
  • PbrMaterial: מודל קשיות/מתכת מבוסס פיזיקה; משמש לייבוא וייצוא של glTF 2.0

קריאת חומרים מסצנת OBJ טעונה:

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 בעת בניית סצנת glTF:

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

כלי מתמטיקה

הספרייה מגיעה עם סט מלא של סוגי מתמטיקה תלת‑ממדית, כולם עם טיפוסים מלאים:

  • Vector3: וקטור בעל 3 רכיבים; תומך minus(), times(), dot(), cross(), normalize(), length, angleBetween()
  • Vector4: וקטור בעל 4 רכיבים לתיאומים הומוגניים
  • Matrix4: מטריצת טרנספורמציה 4×4 עם concatenate(), transpose, decompose, setTRS
  • Quaternion: קוואטרניון סיבוב עם fromEulerAngle() : (סטטי, יחיד), eulerAngles() : (מתודה של מופע), slerp(), normalize()
  • BoundingBox: תיבה תוחמת מיושרת לציר עם minimum, maximum, center, size, merge
  • FVector3: גרסה ברמת דיוק יחיד של Vector3 משמש בנתוני רכיב קודקוד

חישוב תיבת גבול מקודקודי רשת:

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

בניית שינוי מרחב מזוויות אוילר:

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

מערכת אנימציה

ממשק ה‑API של האנימציה מדגם קטעים, צמתים, ערוצים, ורצפי מסגרות מפתח:

  • AnimationClip:אוסף ממוספר של צמתים של אנימציה; נגיש דרך scene.animationClips; חושף animations: AnimationNode[]
  • AnimationNode:קבוצה ממוספרת של BindPoints; נוצר דרך clip.createAnimationNode(name), נגיש דרך clip.animations
  • BindPoint: קושר AnimationNode למאפיין ספציפי באובייקט סצנה; חושף property ו channelsCount
  • AnimationChannel: מרחיב KeyframeSequence; מחזיק נפרד keyframeSequence; נגיש דרך bindPoint.getChannel(name)
  • KeyFrame: זוג זמן/ערך יחיד; נושא לכל מסגרת מפתח interpolation: Interpolation
  • KeyframeSequence: רשימה מסודרת של KeyFrame אובייקטים דרך keyFrames; כולל preBehavior ו postBehavior (Extrapolation)
  • Interpolation: enum: LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE
  • Extrapolation: מחלקה עם type: ExtrapolationType ו repeatCount: number
  • ExtrapolationType: enum: CONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATE

קריאת נתוני אנימציה מסצנה טעונה:

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

תמיכה בזרמים וב‑Buffer

השתמש scene.openFromBuffer() לטעון סצנת 3D ישירות מזיכרון Buffer. זהו הדפוס המומלץ לפונקציות ללא שרת, צינורות זרימה, ולעיבוד נכסים שהורדו דרך HTTP ללא כתיבה לדיסק.

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

זיהוי אוטומטי של פורמט ממספרי קסם בינריים פועל בעת טעינה מ‑buffer, ולכן קבצי GLB, STL בינריים, ו‑3MF מזוהים ללא צורך לציין פרמטר פורמט.

דוגמאות שימוש

דוגמה 1: טעינת OBJ וייצוא ל‑GLB

דוגמה זו טוענת קובץ Wavefront OBJ עם חומרים, ואז מייצאת מחדש את הסצנה כקובץ glTF בינרי (GLB) המתאים לשימוש ברשת ובמנועי משחק.

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

דוגמה 2: מסלול מלא של STL עם אימות נורמל

דוגמה זו טוענת קובץ STL בינרי, מדפיסה מידע נורמל לכל קודקוד, ואז מייצאת מחדש את הסצנה כ‑STL ASCII ומאמתת את המסלול המלא.

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

דוגמה 3: בניית סצנה תכנותית ושמירה כ‑glTF

דוגמה זו בונה סצנה עם חומר PBR מאפס ושומרת אותה כקובץ JSON glTF.

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

טיפים ושיטות עבודה מומלצות

  • השתמש ב ObjLoadOptions.enableMaterials = true כאשר אתה צריך נתוני חומר מקבצי .mtl. ללא זה, רשימת החומרים בכל צומת תהיה ריקה.
  • העדף binaryMode = true עבור GLB כאשר מייצרים נכסים לאינטרנט או למנועי משחק. GLB בינארי הוא קובץ יחיד עצמאי ונטען מהר יותר בדפדפנים ובמנועים מאשר הפיצול JSON + .bin.
  • השתמש ב openFromBuffer() בסביבות ללא שרת כדי להימנע מקלט/פלט של קבצים זמניים. הביא את הנכס, העבר את Buffer ישירות, וכתוב את הפלט לזרם או למאגר אחר.
  • בדוק node.entity לפני המרה: לא כל הצמתים נושאים ישות. תמיד הגן עם instanceof בדיקה לפני גישה Mesh-תכונות ספציפיות כגון controlPoints.
  • הגדר normalizeNormal = true ב ObjLoadOptions כאשר קבצי ה‑OBJ המקוריים שלך מגיעים ממקורות לא מהימנים. זה מונע מנורמליות פגומות להתפשט לשלבי הרינדור או האימות הבאים.
  • שמור strict: true ב‑tsconfig.json: הספרייה נכתבת עם noImplicitAny ו strictNullChecks. השבתת strict מסווה שגיאות טיפוס אמיתיות ומפחית את הערך של ה‑API המוטבע.
  • עבור דרך childNodes, ולא לולאת אינדקס: ה childNodes המאפיין מחזיר איטרטור; הימנע מהסתמכות על אינדקס מספרי למען תאימות עתידית.

בעיות נפוצות

תסמיןסיבה אפשריתתיקון
רשימת החומרים ריקה לאחר טעינת OBJenableMaterials לא הוגדרהוגדר options.enableMaterials = true
קובץ GLB מכיל קובץ צדדי .bin נפרדbinaryMode מוגדר כברירת מחדל ל falseהוגדר opts.binaryMode = true
נורמות הקודקוד חסרות בפלט STLמצב ASCII של STL משמיט נורמות לכל משטחהחלף ל binaryMode = true או חשב נורמות לפני הייצוא
node.entity תמיד nullמעבר רק rootNode, ולא של צאצאיוחזור רקורסיבית לתוך node.childNodes
שגיאת TypeScript: המאפיין אינו קייםישן @types מטמוןהפעל npm install @aspose/3d שוב; ללא נפרד @types חבילה נדרשת
openFromBuffer זורק שגיאת פורמטהפורמט אינו ניתן לזיהוי אוטומטי מה‑magicהעבר מחלקת אפשרות פורמט מפורשת כארגומנט שני

שאלות נפוצות

האם הספרייה דורשת תוספים מקומיים או חבילות מערכת? לא. Aspose.3D FOSS for TypeScript יש תלות ריצה יחידה: xmldom, שהיא JavaScript טהור ומותקנת אוטומטית על ידי npm. אין .node תוספים מקומיים ואין חבילות מערכת להתקנה.

אילו גרסאות של Node.js נתמכות? Node.js 18, 20, ו‑22 LTS. הספרייה ממקדת פלט CommonJS ומשתמשת בתכונות שפת ES2020 פנימית.

האם אוכל להשתמש בספרייה בחבילה לדפדפן (webpack/esbuild)? הספרייה ממקדת Node.js ומשתמשת ב‑Node.js fs ו Buffer API‑ים. אריזת דפדפן אינה נתמכת רשמית. לשימוש בדפדפן, טען את הסצנה בצד השרת והעבר את התוצאה (למשל, כ‑GLB) ללקוח.

מה ההבדל בין GltfSaveOptions.binaryMode = true ו false? binaryMode = false מייצר .gltf קובץ JSON ועוד קובץ נפרד .bin בינארי נלווה. binaryMode = true מייצר קובץ יחיד עצמאי .glb קובץ. השתמש ב true למסירת נכסים בייצור.

האם אפשר לטעון קובץ מתשובת HTTP מבלי לשמור אותו על הדיסק? כן. שלוף את התשובה כ‑ Buffer (למשל, באמצעות node-fetch או המובנה fetch ב‑Node 18+), ואז קרא ל‑ scene.openFromBuffer(buffer, options).

האם התמיכה ב‑FBX שלמה? לא. קיימות מחלקות מייבא ויצוא של FBX בספרייה, אך FBX אינו משולב ב‑ Scene.open() או Scene.save() זיהוי אוטומטי. קריאה scene.open('file.fbx') לא יפעיל את מייבא ה‑FBX; הקובץ יטופל על‑ידי נתיב הגיבוי של STL. השתמש במחלקות המייבא/המייצא הספציפיות ל‑FBX ישירות אם אתה צריך קלט/פלט של FBX. ראה את טבלת התמיכה בפורמט למעלה שמסמנת את FBX כ‑ No*.

האם הספרייה תומכת ב‑TypeScript 4.x? TypeScript 5.0+ מומלץ. TypeScript 4.7+ אמור לעבוד בפועל, אך הספרייה נבדקה ונכתבה כנגד 5.0+.

סיכום תיעוד API

מחלקהמודולמטרה
Scene@aspose/3dמכולת סצנה ברמת העליון; open(), openFromBuffer(), save(), rootNode, animationClips
Node@aspose/3dצומת גרף סצנה; childNodes, entity, transform, materials, createChildNode()
Entity@aspose/3dמחלקת בסיס לאובייקטים שניתן לצרף לסצנה
SceneObject@aspose/3dמחלקת בסיס משותפת ל‑ Node ו‑ Entity
A3DObject@aspose/3dבסיס שורש עם name ו‑חבילת מאפיינים
Transform@aspose/3dתרגום מקומי, סיבוב וקנה מידה
Mesh@aspose/3dרשת פוליגונים; controlPoints, polygonCount, createPolygon(), רכיבי קודקוד
Geometry@aspose/3dמחלקה בסיסית לסוגי גאומטריה
Camera@aspose/3dישות מצלמה עם שדה ראייה והגדרות פרויקטיביות
Light@aspose/3dישות אור (נקודה, כיוונית, ספוט)
LambertMaterial@aspose/3dמודל הצללה פיזור + סביבתי
PhongMaterial@aspose/3dהצללה פונג עם השתקפות והקרנה
PbrMaterial@aspose/3dמודל מבוסס פיזיקה של roughness/metallic עבור glTF
Vector3@aspose/3d3-component double-precision vector
Vector4@aspose/3d4-component vector for homogeneous math
Matrix4@aspose/3d4×4 transformation matrix
Quaternion@aspose/3dקוואטורן סיבוב
BoundingBox@aspose/3dתיבת גבול מיושרת לצירים
FVector3@aspose/3dוריאנט של דיוק יחיד של Vector3
VertexElementNormal@aspose/3dנורמליים לכל קודקוד או לכל קודקוד-פוליגון
VertexElementUV@aspose/3dרכיב קודקוד של קואורדינטת מרקם
VertexElementVertexColor@aspose/3dרכיב קודקוד של צבע לכל קודקוד
MappingMode@aspose/3dEnum: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAME
ReferenceMode@aspose/3dEnum: DIRECT, INDEX, INDEX_TO_DIRECT
AnimationClip@aspose/3dהנפשה בשם; חושפת animations: AnimationNode[]; נוצר דרך scene.createAnimationClip(name)
AnimationNode@aspose/3dקבוצה בשם BindPoints; נוצר דרך clip.createAnimationNode(name)
BindPoint@aspose/3dקושר AnimationNode למאפיין של אובייקט סצנה; חושפת property ו channelsCount
AnimationChannel@aspose/3dמרחיב KeyframeSequence; מחזיק ב keyframeSequence; נגיש דרך bindPoint.getChannel(name)
KeyFrame@aspose/3dזוג מסגרת זמן/ערך יחיד; נושא interpolation: Interpolation
KeyframeSequence@aspose/3dממויין keyFrames רשימה; preBehavior/postBehavior הם Extrapolation אובייקטים
Interpolation@aspose/3dEnum: LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE
Extrapolation@aspose/3dמחלקה עם type: ExtrapolationType ו repeatCount: number
ExtrapolationType@aspose/3dEnum: CONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATE
ObjLoadOptions@aspose/3d/formats/objאפשרויות ייבוא OBJ: enableMaterials, flipCoordinateSystem, scale, normalizeNormal
GltfSaveOptions@aspose/3d/formats/gltfאפשרויות יצוא glTF/GLB: binaryMode
GltfFormat@aspose/3d/formats/gltfמופע Format עבור glTF/GLB; העבר ל scene.save()
StlLoadOptions@aspose/3d/formats/stlאפשרויות ייבוא STL
StlSaveOptions@aspose/3d/formats/stlאפשרויות יצוא STL: binaryMode
StlImporter@aspose/3d/formats/stlקורא STL ברמת נמוכה
StlExporter@aspose/3d/formats/stlכותב STL ברמת נמוכה
 עברית