Animation — Aspose.3D FOSS for Python API Reference

Example

نظام الرسوم المتحركة Aspose.3D مُنظم حول تسلسل هرمي من الكائنات التي تربط البيانات المأخوذة على فترات زمنية بخصائص المشهد.

  • Example AnimationClip هو نطاق تشغيل مسمى (مثل “Walk”، “Run”) محتفظ به من قبل Scene.
  • Example AnimationNode يعيش داخل مقطع ويربط البيانات المتحركة بخصائص محددة على كائنات المشهد.
  • أ BindPoint يربط AnimationNode إلى مسمى Property على A3DObject.
  • Example AnimationChannel يحتوي على قيمة عددية واحدة KeyframeSequence داخل نقطة ربط.
  • أ KeyframeSequence هو قائمة مرتبة من KeyFrame عينات الوقت‑القيمة.

جميع فئات الرسوم المتحركة موجودة في الـ aspose.threed.animation الحزمة الفرعية، رغم أنه يمكن الوصول إليها مباشرةً من الـ aspose.threed.

from aspose.threed.animation import (
    AnimationClip,
    AnimationNode,
    AnimationChannel,
    BindPoint,
    KeyFrame,
    KeyframeSequence,
    Interpolation,
    ExtrapolationType,
)

AnimationClip

حاوية مسماة لنطاق تشغيل واحد. A Scene قد تحتوي على مقاطع متعددة. يرث من SceneObject.

Example

ExampleExample
AnimationClip(name=None)ينشئ مقطعًا باسم اختياري

Example

ExampleExampleExample
namestrاسم المقطع (مثال. "Walk")
descriptionstrوصف اختياري
startfloatوقت البدء بالثواني
stopfloatوقت الانتهاء بالثواني
animationslist[AnimationNode]قائمة للقراءة فقط لعقد التحريك في هذا المقطع
propertiesPropertyCollectionخصائص مخصصة

Example

Exampleنوع الإرجاعExample
create_animation_node(node_name)AnimationNodeينشئ ويسجل جديدًا AnimationNode في هذا المقطع

AnimationNode

يربط AnimationClip إلى واحد أو أكثر BindPoint كائنات تستهدف خصائص كائن المشهد. يرث من A3DObject.

Example

ExampleExample
AnimationNode(name=None)ينشئ عقدة تحريك مع اسم اختياري

Example

ExampleExampleExample
namestrاسم العقدة
bind_pointslist[BindPoint]قائمة للقراءة فقط لنقاط الربط
sub_animationslist[AnimationNode]قائمة للقراءة فقط لعقد الرسوم المتحركة الفرعية
propertiesPropertyCollectionخصائص مخصصة

Example

Exampleنوع الإرجاعExample
find_bind_point(target, name)`BindPointNone`
get_bind_point(target, prop_name, create)`BindPointNone`
create_bind_point(obj, prop_name)`BindPointNone`
get_keyframe_sequence(target, prop_name, channel_name, create)`KeyframeSequenceNone`

BindPoint

يرابط بـ AnimationNode إلى عنصر واحد Property على A3DObject. كل BindPoint قد يحتوي على عدة AnimationChannel كائنات (واحد لكل مكوّن عددي). يرث من A3DObject.

Example

ExampleExampleExample
propertyPropertyخاصية كائن المشهد التي يستهدفها نقطة الربط هذه
channels_countintعدد قنوات الرسوم المتحركة في نقطة الربط هذه

Example

Exampleنوع الإرجاعExample
add_channel(name, value, type=None)boolيضيف قناة مسماة بقيمة افتراضية
get_channel(channel_name)`AnimationChannelNone`
get_keyframe_sequence(channel_name)`KeyframeSequenceNone`
create_keyframe_sequence(name)KeyframeSequenceينشئ جديدًا KeyframeSequence لهذه نقطة الربط
bind_keyframe_sequence(channel_name, sequence)Noneيربط عنصرًا موجودًا KeyframeSequence مع قناة
reset_channels()Noneيزيل جميع القنوات

AnimationChannel

يحمل قيمة قياسية واحدة KeyframeSequence للمكوّن المتحرك الواحد.

Example

ExampleExampleExample
namestrاسم القناة (مثال. "X", "Y", "Z")
default_valueAnyالقيمة المستخدمة عندما لا توجد بيانات keyframe
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

قائمة مرتبة من KeyFrame عينات لقناة scalar واحدة. يرث من A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)ينشئ تسلسل keyframe فارغ

Example

ExampleExampleExample
namestrاسم التسلسل
key_frameslist[KeyFrame]قائمة للقراءة فقط من keyframes بترتيب زمني
pre_behaviorExtrapolationالسلوك قبل أول keyframe
post_behaviorExtrapolationالسلوك بعد آخر keyframe
bind_point`BindPointNone`

Example

Exampleنوع الإرجاعExample
add(time, value, interpolation=Interpolation.LINEAR)Noneيضيف إطارًا رئيسيًا عند time (ثوانٍ) مع المعطى value و interpolation الوضع
reset()Noneيمسح جميع الإطارات الرئيسية ويعيد ضبط سلوك ما قبل/ما بعد

KeyFrame

عينة واحدة للوقت والقيمة في KeyframeSequence.

Example

KeyFrame يتم إنشاء الكائنات داخليًا بواسطة KeyframeSequence.add(); لا تقم بإنشائها مباشرة.

Example

ExampleExampleExample
timefloatموضع الوقت بالثواني
valuefloatالقيمة المتحركة في هذا الوقت
interpolationInterpolationوضع الاستيفاء المطبق بين هذا الإطار الرئيسي واللاحق
tangent_weight_modeWeightedModeوضع وزن المماس (منحنيات بيزير)
step_modeStepModeسلوك الخطوة (PREVIOUS_VALUE أو NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatوزن المماس الصادر
next_in_weightfloatوزن المماس الوارد
tensionfloatمعامل الشد (منحنى TCB)
continuityfloatمعامل الاستمرارية (TCB spline)
biasfloatمعامل الانحياز (TCB spline)
independent_tangentboolExample True, المماس الداخلي والخارجي مستقلان
flatboolExample True, المماس مقفل مسطح
time_independent_tangentboolExample True, اتجاه المماس مستقل عن مقياس الزمن

Example

يتحكم في كيفية استيفاء القيم بين الإطارات المفتاحية المتتالية.

ExampleExample
CONSTANTExample
LINEARالاستيفاء الخطي بين القيم
BEZIERمنحنى بيزيه مكعب باستخدام المماس الداخلي/الخارجي
B_SPLINEمنحنى B-spline المتساوي
CARDINAL_SPLINEمنحنى كاردينال
TCB_SPLINEمنحنى التوتر‑الاستمرارية‑التحيز

Example

يتحكم في سلوك الرسوم المتحركة بعد الإطار المفتاحي الأول والأخير.

ExampleExample
CONSTANTاحتفظ بقيمة الحد
GRADIENTاستخرج عند تدرج المماس لإطار المفتاح الحدّي
CYCLEكرر نطاق إطار المفتاح (حلقات)
CYCLE_RELATIVEكرر مع إزاحة تراكمية (نسبة إلى القيمة النهائية)
OSCILLATEPing-pong (تبديل متناوب إلى الأمام والخلف)

Example

from aspose.threed import Scene
from aspose.threed.animation import AnimationClip, Interpolation
from aspose.threed.utilities import Vector3

scene = Scene()
node = scene.root_node.create_child_node("animated_box")
node.transform.translation = Vector3(0.0, 0.0, 0.0)

# Create an animation clip
clip = AnimationClip("Move")
clip.start = 0.0
clip.stop  = 2.0

# Create an animation node inside the clip
anim_node = clip.create_animation_node("box_anim")

# Get keyframe sequences for the X and Y translation channels
seq_x = anim_node.get_keyframe_sequence(node.transform, "Translation", "X", True)
seq_y = anim_node.get_keyframe_sequence(node.transform, "Translation", "Y", True)

if seq_x:
    seq_x.add(0.0,  0.0,  Interpolation.LINEAR)
    seq_x.add(1.0, 10.0,  Interpolation.LINEAR)
    seq_x.add(2.0,  0.0,  Interpolation.LINEAR)

if seq_y:
    seq_y.add(0.0,  0.0, Interpolation.BEZIER)
    seq_y.add(1.0,  5.0, Interpolation.BEZIER)
    seq_y.add(2.0,  0.0, Interpolation.BEZIER)

# Export to FBX to preserve animation data
scene.save("animated.fbx")

انظر أيضًا

 العربية