Animation — Aspose.3D FOSS for Python API Reference

Overview

Система анімації Aspose.3D організована навколо ієрархії об’єктів, які прив’язують дані, вибіркові за часом, до властивостей сцени.

  • Overview AnimationClip є іменованим діапазоном відтворення (наприклад, “Walk”, “Run”) збереженим у Scene.
  • Overview AnimationNode знаходиться всередині кліпу і прив’язує анімовані дані до певних властивостей об’єктів сцени.
  • A BindPoint з’єднує AnimationNode з іменованим Property на A3DObject.
  • Overview 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.

Overview

OverviewOverview
AnimationClip(name=None)Створює кліп з необов’язковою назвою

Overview

OverviewOverviewOverview
namestrНазва кліпу (наприклад,. "Walk")
descriptionstrНеобов’язковий опис
startfloatЧас початку в секундах
stopfloatЧас завершення в секундах
animationslist[AnimationNode]Список анімаційних вузлів у цьому кліпі лише для читання
propertiesPropertyCollectionКористувацькі властивості

Overview

OverviewТип поверненняOverview
create_animation_node(node_name)AnimationNodeСтворює та реєструє новий AnimationNode у цьому кліпі

AnimationNode

Прив’язує AnimationClip до одного або декількох BindPoint об’єктів, що орієнтуються на scene-object properties. Наслідує від A3DObject.

Overview

OverviewOverview
AnimationNode(name=None)Створює animation node з необов’язковою назвою

Overview

OverviewOverviewOverview
namestrNode name
bind_pointslist[BindPoint]Список bind points лише для читання
sub_animationslist[AnimationNode]Список child animation nodes лише для читання
propertiesPropertyCollectionКористувацькі властивості

Overview

OverviewТип поверненняOverview
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.

Overview

OverviewOverviewOverview
propertyPropertyВластивість сцени‑об’єкта, яку ця точка прив’язки націлює
channels_countintКількість каналів анімації в цій точці прив’язки

Overview

OverviewТип поверненняOverview
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 для одного анімованого компонента.

Overview

OverviewOverviewOverview
namestrНазва каналу (наприклад,. "X", "Y", "Z")
default_valueAnyЗначення, що використовується, коли дані ключових кадрів відсутні
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

Впорядкований список KeyFrame зразки для одного скалярного каналу. Наслідує від A3DObject.

Overview

OverviewOverview
KeyframeSequence(name=None)Створює порожню послідовність keyframe

Overview

OverviewOverviewOverview
namestrНазва послідовності
key_frameslist[KeyFrame]Список keyframe лише для читання у хронологічному порядку
pre_behaviorExtrapolationПоведінка до першого keyframe
post_behaviorExtrapolationПоведінка після останнього keyframe
bind_point`BindPointNone`

Overview

OverviewТип поверненняOverview
add(time, value, interpolation=Interpolation.LINEAR)NoneДодає keyframe у time (секунди) з даним value і interpolation режим
reset()NoneОчищає всі ключові кадри та скидає поведінку pre/post

KeyFrame

Один зразок часу‑значення у KeyframeSequence.

Overview

KeyFrame об’єкти створюються внутрішньо за допомогою KeyframeSequence.add(); не створюйте їх безпосередньо.

Overview

OverviewOverviewOverview
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-сплайн)
biasfloatПараметр зсуву (TCB-сплайн)
independent_tangentboolOverview True, вхідні та вихідні тангенси незалежні
flatboolOverview True, тангенси зажимані плоскі
time_independent_tangentboolOverview True, напрямок тангенса не залежить від масштабування часу

Overview

Керує тим, як значення інтерполюються між послідовними ключовими кадрами.

OverviewOverview
CONSTANTOverview
LINEARЛінійна інтерполяція між значеннями
BEZIERКубічний Безьє з використанням вхідних/вихідних дотичних
B_SPLINEОднорідний B-сплайн
CARDINAL_SPLINEКардинальний сплайн
TCB_SPLINEСплайн натягу‑неперервності‑зміщення

Overview

Керує поведінкою анімації поза першим і останнім ключовим кадром.

OverviewOverview
CONSTANTУтримувати граничне значення
GRADIENTЕкстраполювати за градієнтом дотичної граничного ключового кадру
CYCLEПовторити діапазон ключових кадрів (цикли)
CYCLE_RELATIVEПовторити з кумулятивним зсувом (відносно кінцевого значення)
OSCILLATEПінг-понг (чередування прямого та зворотного повтору)

Overview

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

Див. також

 Українська