Animation — Aspose.3D FOSS for Python API Reference

Example

Sistemul de animație Aspose.3D este organizat în jurul unei ierarhii de obiecte care leagă datele eșantionate în timp de proprietățile scenei.

  • Example AnimationClip este un interval de redare numit (de ex. “Walk”, “Run”) deținut de un Scene.
  • Example AnimationNode trăiește în interiorul unui clip și leagă datele animate de proprietăți specifice ale obiectelor din scenă.
  • Un BindPoint conectează un AnimationNode la un numit Property pe un A3DObject.
  • Example AnimationChannel conține un scalar unic KeyframeSequence într-un punct de legare.
  • Un KeyframeSequence este o listă ordonată de KeyFrame mostre de timp‑valoare.

Toate clasele de animație se află în aspose.threed.animation sub-pachet, deși sunt accesibile direct din aspose.threed.

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

AnimationClip

Un container denumit pentru un interval de redare. Un Scene poate conține mai multe clipuri. Moștenește de la SceneObject.

Example

ExampleExample
AnimationClip(name=None)Creează un clip cu un nume opțional

Example

ExampleExampleExample
namestrNume clip (de ex. "Walk")
descriptionstrDescriere opțională
startfloatTimp de început în secunde
stopfloatTimp de sfârșit în secunde
animationslist[AnimationNode]Listă doar în citire a nodurilor de animație din acest clip
propertiesPropertyCollectionProprietăți personalizate

Example

ExampleTip de returnareExample
create_animation_node(node_name)AnimationNodeCreează și înregistrează un nou AnimationNode în acest clip

AnimationNode

Leagă un AnimationClip la unul sau mai multe BindPoint obiecte care vizează proprietățile obiectului de scenă. Moștenește de la A3DObject.

Example

ExampleExample
AnimationNode(name=None)Creează un nod de animație cu nume opțional

Example

ExampleExampleExample
namestrNume nod
bind_pointslist[BindPoint]Listă doar pentru citire a punctelor de legare
sub_animationslist[AnimationNode]Listă doar pentru citire a nodurilor de animație copil
propertiesPropertyCollectionProprietăți personalizate

Example

ExampleTip de returnareExample
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

Conectează un AnimationNode la un singur Property pe un A3DObject. Fiecare BindPoint poate conține multiple AnimationChannel obiecte (câte unul pe componentă scalară). Moștenește de la A3DObject.

Example

ExampleExampleExample
propertyPropertyProprietatea scene-object pe care acest punct de legare îl vizează
channels_countintNumărul de canale de animație în acest punct de legare

Example

ExampleTip de returnareExample
add_channel(name, value, type=None)boolAdaugă un canal denumit cu o valoare implicită
get_channel(channel_name)`AnimationChannelNone`
get_keyframe_sequence(channel_name)`KeyframeSequenceNone`
create_keyframe_sequence(name)KeyframeSequenceCreează un nou KeyframeSequence pentru acest punct de legare
bind_keyframe_sequence(channel_name, sequence)NoneAsociază un existent KeyframeSequence cu un canal
reset_channels()NoneElimină toate canalele

AnimationChannel

Conține un singur scalar KeyframeSequence pentru un component animat.

Example

ExampleExampleExample
namestrNume canal (de ex. "X", "Y", "Z")
default_valueAnyValoare utilizată când nu există date de cadre cheie
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

O listă ordonată de KeyFrame eșantioane pentru un singur canal scalar. Moștenește de la A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)Creează o secvență de cadre cheie goală

Example

ExampleExampleExample
namestrNume secvență
key_frameslist[KeyFrame]Listă numai în citire a cadrelor cheie în ordine cronologică
pre_behaviorExtrapolationComportament înainte de primul cadru cheie
post_behaviorExtrapolationComportament după ultimul cadru cheie
bind_point`BindPointNone`

Example

ExampleTip de returnareExample
add(time, value, interpolation=Interpolation.LINEAR)NoneAdaugă un keyframe la time (secunde) cu cele date value și interpolation mod
reset()NoneȘterge toate keyframes și resetează comportamentul pre/post

KeyFrame

Un singur eșantion de timp–valoare într-un KeyframeSequence.

Example

KeyFrame obiectele sunt create intern de KeyframeSequence.add(); nu le construiți direct.

Example

ExampleExampleExample
timefloatPoziția în timp în secunde
valuefloatValoare animată la acest moment
interpolationInterpolationModul de interpolare aplicat între acest cadru cheie și următorul
tangent_weight_modeWeightedModeModul de greutate a tangentelor (curbe Bezier)
step_modeStepModeComportament pas (PREVIOUS_VALUE sau NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatGreutatea tangentă de ieșire
next_in_weightfloatGreutatea tangentă de intrare
tensionfloatParametru de tensiune (spline TCB)
continuityfloatParametru de continuitate (spline TCB)
biasfloatParametru bias (spline TCB)
independent_tangentboolExample True, tangentele de intrare și ieșire sunt independente
flatboolExample True, tangentele sunt fixate plat
time_independent_tangentboolExample True, direcția tangentei este independentă de scalarea timpului

Example

Controlează modul în care valorile sunt interpolate între cadrele cheie consecutive.

ExampleExample
CONSTANTExample
LINEARInterpolare liniară între valori
BEZIERBezier cubic utilizând tangentele de intrare/ieșire
B_SPLINEB-spline uniform
CARDINAL_SPLINESpline cardinal
TCB_SPLINESpline Tension–Continuity–Bias

Example

Controlează comportamentul animației dincolo de primul și ultimul cadru cheie.

ExampleExample
CONSTANTMenține valoarea de la limită
GRADIENTExtrapolează la gradientul tangent al cadrului cheie de la limită
CYCLERepetă intervalul de cadre cheie (buclă)
CYCLE_RELATIVERepetă cu decalaj cumulativ (relativ la valoarea finală)
OSCILLATEPing-pong (repetare alternativă înainte și înapoi)

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

Vezi și

 Română