Animation — Aspose.3D FOSS for Python API Reference

Example

Het Aspose.3D-animatiesysteem is georganiseerd rond een hiërarchie van objecten die tijd-gesamplede gegevens aan scène-eigenschappen binden.

  • Example AnimationClip is een benoemd afspeelbereik (bijv. “Walk”, “Run”) dat wordt vastgehouden door een Scene.
  • Example AnimationNode bevindt zich binnen een clip en bindt geanimeerde data aan specifieke eigenschappen van scène‑objecten.
  • Een BindPoint verbindt een AnimationNode naar een benoemde Property op een A3DObject.
  • Example AnimationChannel bevat een enkele scalair KeyframeSequence binnen een bindpunt.
  • Een KeyframeSequence is een geordende lijst van KeyFrame tijd‑waarde monsters.

Alle animatieklassen bevinden zich in de aspose.threed.animation sub‑package, hoewel ze ook direct toegankelijk zijn vanaf aspose.threed.

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

AnimationClip

Een benoemde container voor één afspeelbereik. Een Scene kan meerdere clips bevatten. Erft van SceneObject.

Example

ExampleExample
AnimationClip(name=None)Maakt een clip met een optionele naam

Example

ExampleExampleExample
namestrClipnaam (bijv. "Walk")
descriptionstrOptionele beschrijving
startfloatStarttijd in seconden
stopfloatEindtijd in seconden
animationslist[AnimationNode]Alleen-lezen lijst van animatienodes in deze clip
propertiesPropertyCollectionAangepaste eigenschappen

Example

ExampleRetourtypeExample
create_animation_node(node_name)AnimationNodeCreëert en registreert een nieuwe AnimationNode in deze clip

AnimationNode

Bindt een AnimationClip aan één of meer BindPoint objecten die zich richten op scène-objecteigenschappen. Erft van A3DObject.

Example

ExampleExample
AnimationNode(name=None)Maakt een animatieknooppunt met optionele naam

Example

ExampleExampleExample
namestrKnooppuntnaam
bind_pointslist[BindPoint]Alleen-lezen lijst van bindpunten
sub_animationslist[AnimationNode]Alleen-lezen lijst van onderliggende animatieknooppunten
propertiesPropertyCollectionAangepaste eigenschappen

Example

ExampleRetourtypeExample
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

Verbindt een AnimationNode naar een enkele Property op een A3DObject. Elke BindPoint kan meerdere bevatten AnimationChannel objecten (één per scalair component). Erft van A3DObject.

Example

ExampleExampleExample
propertyPropertyDe scene-object eigenschap waarop dit bindpunt zich richt
channels_countintAantal animatiekanalen in dit bindpunt

Example

ExampleRetourtypeExample
add_channel(name, value, type=None)boolVoegt een benoemd kanaal toe met een standaardwaarde
get_channel(channel_name)`AnimationChannelNone`
get_keyframe_sequence(channel_name)`KeyframeSequenceNone`
create_keyframe_sequence(name)KeyframeSequenceMaakt een nieuwe KeyframeSequence voor dit bindpunt
bind_keyframe_sequence(channel_name, sequence)NoneKoppelt een bestaande KeyframeSequence met een kanaal
reset_channels()NoneVerwijdert alle kanalen

AnimationChannel

Bevat een enkele scalar KeyframeSequence voor één geanimeerde component.

Example

ExampleExampleExample
namestrKanaalnaam (bijv. "X", "Y", "Z")
default_valueAnyWaarde die wordt gebruikt wanneer er geen keyframe-gegevens aanwezig zijn
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

Een geordende lijst van KeyFrame samples voor een enkel scalar-kanaal. Erft van A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)Maakt een lege keyframe-reeks

Example

ExampleExampleExample
namestrReeksnaam
key_frameslist[KeyFrame]Alleen-lezen lijst van keyframes in chronologische volgorde
pre_behaviorExtrapolationGedrag vóór de eerste keyframe
post_behaviorExtrapolationGedrag na de laatste keyframe
bind_point`BindPointNone`

Example

ExampleRetourtypeExample
add(time, value, interpolation=Interpolation.LINEAR)NoneVoegt een keyframe toe op time (seconden) met de gegeven value en interpolation modus
reset()NoneVerwijdert alle keyframes en reset het pre/post‑gedrag

KeyFrame

Een enkele tijd‑waarde monster in een KeyframeSequence.

Example

KeyFrame objecten worden intern aangemaakt door KeyframeSequence.add(); maak ze niet direct aan.

Example

ExampleExampleExample
timefloatTijdpositie in seconden
valuefloatGeanimeerde waarde op dit moment
interpolationInterpolationInterpolatiemodus toegepast tussen dit keyframe en het volgende
tangent_weight_modeWeightedModeTangentsgewichtsmodus (Bezier-curves)
step_modeStepModeStapgedrag (PREVIOUS_VALUE of NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatUitgaande tangentsgewicht
next_in_weightfloatInkomende tangentsgewicht
tensionfloatSpanningsparameter (TCB-spline)
continuityfloatContinuïteitsparameter (TCB spline)
biasfloatBiasparameter (TCB spline)
independent_tangentboolExample True, in- en out-tangenten zijn onafhankelijk
flatboolExample True, tangenten zijn plat geklemd
time_independent_tangentboolExample True, de richting van de tangent is onafhankelijk van tijdschaling

Example

Bepaalt hoe waarden worden geïnterpoleerd tussen opeenvolgende keyframes.

ExampleExample
CONSTANTExample
LINEARLineaire interpolatie tussen waarden
BEZIERKubieke Bezier met in/out-tangenten
B_SPLINEUniforme B-spline
CARDINAL_SPLINECardinale spline
TCB_SPLINETension–Continuity–Bias spline

Example

Bepaalt het animatiegedrag buiten het eerste en laatste keyframe.

ExampleExample
CONSTANTBewaar de grenswaarde
GRADIENTExtrapoleer op de tangentiële gradiënt van het grens‑keyframe
CYCLEHerhaal het keyframe‑bereik (lussen)
CYCLE_RELATIVEHerhaal met cumulatieve offset (relatief ten opzichte van eindwaarde)
OSCILLATEPing-pong (afwisselend voorwaarts en achterwaarts herhalen)

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

Zie ook

 Nederlands