Animation — Aspose.3D FOSS for Python API Reference

Example

„Aspose.3D“ animacijos sistema organizuota aplink objektų hierarchiją, kuri susieja laiku mėginius duomenis su scenos savybėmis.

  • Example AnimationClip yra pavadintas atkūrimo intervalas (pvz., „Walk“, „Run“) laikomas Scene.
  • Example AnimationNode gyvena klipo viduje ir susieja animuotus duomenis su konkrečiomis savybėmis scenos objektuose.
  • A BindPoint prijungia AnimationNode į pavadintą Property ant A3DObject.
  • Example AnimationChannel laiko vieną skalarą KeyframeSequence prie bind point.
  • A KeyframeSequence yra išrikiuotas sąrašas KeyFrame laiko‑reikšmės mėginiai.

Visos animacijos klasės yra aspose.threed.animation subpakete, nors jos taip pat prieinamos tiesiogiai iš aspose.threed.

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

AnimationClip

Pavadintas konteineris vienam atkūrimo intervalui. A Scene gali turėti kelis klipus. Paveldi iš SceneObject.

Example

ExampleExample
AnimationClip(name=None)Sukuria klipą su pasirenkamu pavadinimu

Example

ExampleExampleExample
namestrKlipų pavadinimas (pvz. "Walk")
descriptionstrPasirenkamas aprašymas
startfloatPradžios laikas sekundėmis
stopfloatPabaigos laikas sekundėmis
animationslist[AnimationNode]Tik skaitymui skirta animacijos mazgų sąrašas šiame klipte
propertiesPropertyCollectionPasirinktinės savybės

Example

ExampleGrąžinimo tipasExample
create_animation_node(node_name)AnimationNodeSukuria ir registruoja naują AnimationNode šiame klipte

AnimationNode

Susieja AnimationClip su vienu ar daugiau BindPoint objektus, nukreiptus į scenos objekto savybes. Paveldi iš A3DObject.

Example

ExampleExample
AnimationNode(name=None)Sukuria animacijos mazgą su pasirenkamu pavadinimu

Example

ExampleExampleExample
namestrMazgo pavadinimas
bind_pointslist[BindPoint]Tik skaitymui skirta susiejimo taškų sąrašas
sub_animationslist[AnimationNode]Tik skaitymui skirta vaikų animacijos mazgų sąrašas
propertiesPropertyCollectionPasirinktinės savybės

Example

ExampleGrąžinimo tipasExample
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

Prijungia AnimationNode prie vieno Property ant A3DObject. Kiekvienas BindPoint gali turėti kelis AnimationChannel objektus (po vieną skaliarinį komponentą). Paveldi iš A3DObject.

Example

ExampleExampleExample
propertyPropertyScenos objekto savybė, kurią šis susiejimo taškas taikina
channels_countintAnimacijos kanalų skaičius šiame susiejimo taške

Example

ExampleGrąžinimo tipasExample
add_channel(name, value, type=None)boolPrideda pavadintą kanalą su numatytąja verte
get_channel(channel_name)`AnimationChannelNone`
get_keyframe_sequence(channel_name)`KeyframeSequenceNone`
create_keyframe_sequence(name)KeyframeSequenceSukuria naują KeyframeSequence šiam susiejimo taškui
bind_keyframe_sequence(channel_name, sequence)NoneSusieja esamą KeyframeSequence su kanalu
reset_channels()NonePašalina visus kanalus

AnimationChannel

Saugo vieną skalarą KeyframeSequence vienam animuotam komponentui.

Example

ExampleExampleExample
namestrKanalo pavadinimas (pvz. "X", "Y", "Z")
default_valueAnyVertė, naudojama, kai nėra raktų kadro duomenų
keyframe_sequence`KeyframeSequenceNone`

KeyframeSequence

Surikiuotas sąrašas KeyFrame pavyzdžiai vienam skaliariam kanalui. Paveldi iš A3DObject.

Example

ExampleExample
KeyframeSequence(name=None)Sukuria tuščią raktų kadrų seką

Example

ExampleExampleExample
namestrSekos pavadinimas
key_frameslist[KeyFrame]Tik skaitymui skirta raktų kadrų sąrašas chronologine tvarka
pre_behaviorExtrapolationElgsena prieš pirmąjį raktų kadrą
post_behaviorExtrapolationElgsena po paskutinio raktų kadro
bind_point`BindPointNone`

Example

ExampleGrąžinimo tipasExample
add(time, value, interpolation=Interpolation.LINEAR)NonePrideda raktinį kadrą ties time (sekundės) su nurodytu value ir interpolation režimas
reset()NoneIšvalo visus raktinius kadrus ir atstato prieš/post elgseną

KeyFrame

Vienas laiko‑reikšmės pavyzdys KeyframeSequence.

Example

KeyFrame objektai kuriami viduje KeyframeSequence.add(); nesukurkite jų tiesiogiai.

Example

ExampleExampleExample
timefloatLaiko pozicija sekundėmis
valuefloatAnimuota vertė šiuo metu
interpolationInterpolationInterpolacijos režimas, taikomas tarp šio raktinio kadro ir kito
tangent_weight_modeWeightedModeTangento svorio režimas (Bezier kreivės)
step_modeStepModeŽingsnio elgsena (PREVIOUS_VALUE arba NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatIšeinančio tangento svoris
next_in_weightfloatĮeinančio tangento svoris
tensionfloatĮtempimo parametras (TCB splainas)
continuityfloatTęstinumo parametras (TCB splainas)
biasfloatŠališkumo parametras (TCB splainas)
independent_tangentboolExample True, įeinančios ir išeinančios tangentės yra nepriklausomos
flatboolExample True, tangentės yra sutvirtintos plokščiai
time_independent_tangentboolExample True, tangentės kryptis yra nepriklausoma nuo laiko mastelio

Example

Valdo, kaip reikšmės interpoliamos tarp gretimų raktinių kadrų.

ExampleExample
CONSTANTExample
LINEARLinijinė interpoliacija tarp verčių
BEZIERKubinis Bezier naudojant in/out tangentės
B_SPLINEVienodasis B-splainas
CARDINAL_SPLINEKardininis splainas
TCB_SPLINEĮtempimo–tęstinumo–šališkumo splainas

Example

Valdo animacijos elgseną už pirmojo ir paskutinio raktinio kadro ribų.

ExampleExample
CONSTANTLaikykite ribinę reikšmę
GRADIENTEkstrapoliuokite pagal ribinio raktų kadro tangentinį gradientą
CYCLEPakartokite raktų kadro diapazoną (ciklus)
CYCLE_RELATIVEPakartokite su kumuliatyviu poslinkiu (santykinai su galutine reikšme)
OSCILLATEPing-pong (kaitaluojantis į priekį ir atgal kartojimas)

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

Žr. taip pat

 Lietuvių