Animation — Aspose.3D FOSS for Python API Reference

Example

Det Aspose.3D-animationssystemet är organiserat kring en hierarki av objekt som binder tidsprovade data till scenegenskaper.

  • Example AnimationClip är ett namngivet uppspelningsintervall (t.ex. “Walk”, “Run”) som hålls av en Scene.
  • Example AnimationNode finns i ett klipp och binder animerad data till specifika egenskaper på scenobjekt.
  • En BindPoint ansluter en AnimationNode till ett namngivet Property på en A3DObject.
  • Example AnimationChannel innehåller en enda skalär KeyframeSequence inom en bindningspunkt.
  • En KeyframeSequence är en ordnad lista över KeyFrame tids‑värdeprover.

Alla animationsklasser finns i aspose.threed.animation underpaketet, men de är också åtkomliga direkt från aspose.threed.

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

AnimationClip

En namngiven behållare för ett uppspelningsintervall. En Scene kan innehålla flera klipp. Ärver från SceneObject.

Example

ExampleExample
AnimationClip(name=None)Skapar ett klipp med ett valfritt namn

Example

ExampleExampleExample
namestrKlippnamn (t.ex. "Walk")
descriptionstrValfri beskrivning
startfloatStarttid i sekunder
stopfloatSluttid i sekunder
animationslist[AnimationNode]Skrivskyddad lista över animationsnoder i detta klipp
propertiesPropertyCollectionAnpassade egenskaper

Example

ExampleReturtypExample
create_animation_node(node_name)AnimationNodeSkapar och registrerar en ny AnimationNode i detta klipp

AnimationNode

Binder en AnimationClip till en eller flera BindPoint objekt som riktar sig mot scen-objektsegenskaper. Ärver från A3DObject.

Example

ExampleExample
AnimationNode(name=None)Skapar en animationsnod med valfritt namn

Example

ExampleExampleExample
namestrNodnamn
bind_pointslist[BindPoint]Skrivskyddad lista över bindningspunkter
sub_animationslist[AnimationNode]Skrivskyddad lista över underordnade animationsnoder
propertiesPropertyCollectionAnpassade egenskaper

Example

ExampleReturtypExample
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

Kopplar en AnimationNode till en enda Property på en A3DObject. Varje BindPoint kan innehålla flera AnimationChannel objekt (ett per skalär komponent). Ärver från A3DObject.

Example

ExampleExampleExample
propertyPropertyScenobjektets egenskap som denna bindningspunkt riktar mot
channels_countintAntal animationskanaler i denna bindningspunkt

Example

ExampleReturtypExample
add_channel(name, value, type=None)boolLägger till en namngiven kanal med ett standardvärde
get_channel(channel_name)`AnimationChannelNone`
get_keyframe_sequence(channel_name)`KeyframeSequenceNone`
create_keyframe_sequence(name)KeyframeSequenceSkapar en ny KeyframeSequence för denna bindningspunkt
bind_keyframe_sequence(channel_name, sequence)NoneAssocierar en befintlig KeyframeSequence med en kanal
reset_channels()NoneTar bort alla kanaler

AnimationChannel

Innehåller en enda skalär KeyframeSequence för en animerad komponent.

Example

ExampleExampleExample
namestrKanalnamn (t.ex. "X", "Y", "Z")
default_valueAnyVärde som används när ingen keyframe-data finns
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

En ordnad lista över KeyFrame samples för en enda skalär kanal. Ärver från A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)Skapar en tom keyframe-sekvens

Example

ExampleExampleExample
namestrSekvensnamn
key_frameslist[KeyFrame]Skrivskyddad lista med keyframes i kronologisk ordning
pre_behaviorExtrapolationBeteende före den första keyframe
post_behaviorExtrapolationBeteende efter den sista keyframe
bind_point`BindPointNone`

Example

ExampleReturtypExample
add(time, value, interpolation=Interpolation.LINEAR)NoneLägger till en keyframe vid time (sekunder) med den givna value och interpolation läge
reset()NoneRensar alla keyframes och återställer pre/post-beteende

KeyFrame

Ett enstaka tidsvärdesample i en KeyframeSequence.

Example

KeyFrame objekt skapas internt av KeyframeSequence.add(); konstruera dem inte direkt.

Example

ExampleExampleExample
timefloatTidsposition i sekunder
valuefloatAnimerat värde vid denna tid
interpolationInterpolationInterpolationsläge som tillämpas mellan denna nyckelbildruta och nästa
tangent_weight_modeWeightedModeTangentviktläge (Bezier-kurvor)
step_modeStepModeStegbeteende (PREVIOUS_VALUE eller NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatUtgående tangentvikt
next_in_weightfloatInkommande tangentvikt
tensionfloatSpänningsparameter (TCB-spline)
continuityfloatKontinuitetsparameter (TCB-spline)
biasfloatBiasparameter (TCB-spline)
independent_tangentboolExample True, in- och ut-tangenter är oberoende
flatboolExample True, tangenter är klämda platta
time_independent_tangentboolExample True, tangentens riktning är oberoende av tids-skalning

Example

Styr hur värden interpoleras mellan på varandra följande nyckelbilder.

ExampleExample
CONSTANTExample
LINEARLinjär interpolation mellan värden
BEZIERCubic Bezier med in/ut-tangenter
B_SPLINEUniform B-spline
CARDINAL_SPLINECardinal spline
TCB_SPLINETension–Continuity–Bias spline

Example

Styr animationens beteende bortom den första och sista nyckelbilden.

ExampleExample
CONSTANTBehåll gränsvärdet
GRADIENTExtrapolera vid tangentens lutning för gränsnyckelbilden
CYCLEUpprepa nyckelbildsintervallet (loopar)
CYCLE_RELATIVEUpprepa med kumulativ förskjutning (relativt slutvärdet)
OSCILLATEPing-pong (växlande framåt- och bakåtrepetition)

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

Se även

 Svenska