תכונות ופונקציונליות
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וanimationClipsNode: צומת עץ בעל שם עםchildNodes,entity,transform, וmaterialsEntity: מחלקה בסיסית לאובייקטים ניתנים לצירוף (Mesh,Camera,Light)SceneObject: מחלקה בסיסית משותפת לNodeוEntityA3DObject:מחלקת בסיס שורש עםnameו‑property bagTransform:תרגום מקומי, סיבוב (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וpolygonCountGeometry:מחלקת בסיס עם ניהול vertex-elementVertexElementNormal:נורמליות לכל קודקוד או לכל קודקוד‑פוליגון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: מוסיף צבע משקף, ברק והקרנה; סוג החומר ברירת המחדל של OBJPbrMaterial: מודל קשיות/מתכת מבוסס פיזיקה; משמש לייבוא וייצוא של 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,setTRSQuaternion: קוואטרניון סיבוב עםfromEulerAngle(): (סטטי, יחיד),eulerAngles(): (מתודה של מופע),slerp(),normalize()BoundingBox: תיבה תוחמת מיושרת לציר עםminimum,maximum,center,size,mergeFVector3: גרסה ברמת דיוק יחיד של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.animationsBindPoint: קושרAnimationNodeלמאפיין ספציפי באובייקט סצנה; חושףpropertyוchannelsCountAnimationChannel: מרחיבKeyframeSequence; מחזיק נפרדkeyframeSequence; נגיש דרךbindPoint.getChannel(name)KeyFrame: זוג זמן/ערך יחיד; נושא לכל מסגרת מפתחinterpolation: InterpolationKeyframeSequence: רשימה מסודרת שלKeyFrameאובייקטים דרךkeyFrames; כוללpreBehaviorוpostBehavior(Extrapolation)Interpolation: enum:LINEAR,CONSTANT,BEZIER,B_SPLINE,CARDINAL_SPLINE,TCB_SPLINEExtrapolation: מחלקה עםtype: ExtrapolationTypeוrepeatCount: numberExtrapolationType: 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המאפיין מחזיר איטרטור; הימנע מהסתמכות על אינדקס מספרי למען תאימות עתידית.
בעיות נפוצות
| תסמין | סיבה אפשרית | תיקון |
|---|---|---|
| רשימת החומרים ריקה לאחר טעינת OBJ | enableMaterials לא הוגדר | הוגדר 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/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 | קוואטורן סיבוב |
BoundingBox | @aspose/3d | תיבת גבול מיושרת לצירים |
FVector3 | @aspose/3d | וריאנט של דיוק יחיד של Vector3 |
VertexElementNormal | @aspose/3d | נורמליים לכל קודקוד או לכל קודקוד-פוליגון |
VertexElementUV | @aspose/3d | רכיב קודקוד של קואורדינטת מרקם |
VertexElementVertexColor | @aspose/3d | רכיב קודקוד של צבע לכל קודקוד |
MappingMode | @aspose/3d | Enum: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAME |
ReferenceMode | @aspose/3d | Enum: 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/3d | Enum: LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE |
Extrapolation | @aspose/3d | מחלקה עם type: ExtrapolationType ו repeatCount: number |
ExtrapolationType | @aspose/3d | Enum: 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 ברמת נמוכה |