Animation — Aspose.3D FOSS for Python API Reference

Example

Системата за 3D анимация Aspose е организирана около йерархия от обекти, които свързват данни, взети във времеви проби, към свойства на сцената.

  • Example AnimationClip е именуван диапазон за възпроизвеждане (например “Walk”, “Run”) задържан от a Scene.
  • Example AnimationNode се намира в клип и свързва анимирани данни със специфични свойства на обекти в сцената.
  • Е BindPoint свързва с AnimationNode към именуван Property на A3DObject.
  • Example AnimationChannel съдържа един скалар KeyframeSequence в рамките на точка за свързване.
  • A 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_sequence`KeyframeSequenceNone`

KeyframeSequence

Подреден списък от KeyFrame проби за един скаларен канал. Наследява от A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)Създава празна последователност от ключови кадри

Example

ExampleExampleExample
namestrИме на последователността
key_frameslist[KeyFrame]Списък само за четене на ключови кадри в хронологичен ред
pre_behaviorExtrapolationПоведение преди първия ключов кадър
post_behaviorExtrapolationПоведение след последния ключов кадър
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Режим на тегло на тангентата (Bezier криви)
step_modeStepModeПоведение при стъпка (PREVIOUS_VALUE или NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatИзходящо тегло на тангентата
next_in_weightfloatТегло на входната тангента
tensionfloatПараметър за напрежение (TCB сплайн)
continuityfloatПараметър за непрекъснатост (TCB сплайн)
biasfloatПараметър за изкривяване (TCB сплайн)
independent_tangentboolExample True, входните и изходните тангенти са независими
flatboolExample True, тангентите са ограничени и плоски
time_independent_tangentboolExample True, посоката на тангентата е независима от мащабирането на времето

Example

Контролира как стойностите се интерполира между последователни ключови кадри.

ExampleExample
CONSTANTExample
LINEARЛинейна интерполация между стойностите
BEZIERCubic Bezier, използващ входни/изходни тангенти
B_SPLINEУниформен B-сплайн
CARDINAL_SPLINEКардинален сплайн
TCB_SPLINEТегло–Континуитет–Наклон сплайн

Example

Контролира поведението на анимацията извън първия и последния ключов кадър.

ExampleExample
CONSTANTЗапази граничната стойност
GRADIENTЕкстраполирай при градиент на тангентата на граничния ключов кадър
CYCLEПовтори диапазона на ключовия кадър (цикли)
CYCLE_RELATIVEПовтори с кумулативно отместване (относително към крайната стойност)
OSCILLATEПинг-понг (алтернативно напред и назад повторение)

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

Вижте също

 Български