Animation — Aspose.3D FOSS for Python API Reference

Overview

ระบบแอนิเมชัน Aspose.3D ถูกจัดระเบียบโดยลำดับชั้นของอ็อบเจ็กต์ที่ผูกข้อมูลที่สุ่มตัวอย่างตามเวลาเข้ากับคุณสมบัติของฉาก.

  • Overview AnimationClip เป็นช่วงการเล่นที่มีชื่อ (เช่น “Walk”, “Run”) ที่ถือโดย a Scene.
  • Overview AnimationNode อยู่ภายในคลิปและผูกข้อมูลแอนิเมชันกับคุณสมบัติเฉพาะบนวัตถุในฉาก.
  • A BindPoint เชื่อมต่อกับ an AnimationNode ไปยังที่มีชื่อ Property บน an A3DObject.
  • Overview AnimationChannel เก็บสเกลาร์เดียว KeyframeSequence ภายใน bind point.
  • A KeyframeSequence เป็นรายการที่เรียงลำดับของ KeyFrame ตัวอย่างค่าเวลา–ค่า.

คลาสแอนิเมชันทั้งหมดอยู่ใน aspose.threed.animation sub-package แม้ว่าพวกมันยังสามารถเข้าถึงได้โดยตรงจาก 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 วัตถุที่มุ่งเป้าไปยังคุณสมบัติของวัตถุในฉาก สืบทอดจาก A3DObject.

Overview

OverviewOverview
AnimationNode(name=None)สร้างโหนดแอนิเมชันพร้อมชื่อที่เป็นตัวเลือก

Overview

OverviewOverviewOverview
namestrชื่อโหนด
bind_pointslist[BindPoint]รายการจุดผูกแบบอ่านอย่างเดียว
sub_animationslist[AnimationNode]รายการโหนดแอนิเมชันลูกแบบอ่านอย่างเดียว
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คุณสมบัติ scene-object ที่จุดผูกนี้มุ่งเป้า
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)สร้างลำดับคีย์เฟรมเปล่า

Overview

OverviewOverviewOverview
namestrชื่อลำดับ
key_frameslist[KeyFrame]รายการคีย์เฟรมแบบอ่านอย่างเดียวตามลำดับเวลา
pre_behaviorExtrapolationพฤติกรรมก่อนคีย์เฟรมแรก
post_behaviorExtrapolationพฤติกรรมหลังคีย์เฟรมสุดท้าย
bind_point`BindPointNone`

Overview

Overviewประเภทการคืนค่าOverview
add(time, value, interpolation=Interpolation.LINEAR)Noneเพิ่มคีย์เฟรมที่ time (วินาที) ด้วยค่า value และ interpolation โหมด
reset()Noneลบคีย์เฟรมทั้งหมดและรีเซ็ตพฤติกรรมก่อน/หลัง

KeyFrame

ตัวอย่างค่าเวลาเดียวใน a KeyframeSequence.

Overview

KeyFrame objects ถูกสร้างภายในโดย KeyframeSequence.add(); อย่าสร้างพวกมันโดยตรง.

Overview

OverviewOverviewOverview
timefloatตำแหน่งเวลาเป็นวินาที
valuefloatค่าที่ทำการแอนิเมตในขณะนี้
interpolationInterpolationโหมด Interpolation ที่ใช้ระหว่างคีย์เฟรมนี้และคีย์เฟรมถัดไป
tangent_weight_modeWeightedModeโหมดน้ำหนักแทนเจนต์ (Bezier curves)
step_modeStepModeพฤติกรรมขั้น (PREVIOUS_VALUE หรือ NEXT_VALUE)
next_in_tangent`Vector2None`
out_tangent`Vector2None`
out_weightfloatน้ำหนักแทนเจนต์ออก
next_in_weightfloatน้ำหนักแทนเจนต์เข้า
tensionfloatพารามิเตอร์ความตึง (TCB spline)
continuityfloatพารามิเตอร์ความต่อเนื่อง (TCB spline)
biasfloatพารามิเตอร์อคติ (TCB spline)
independent_tangentboolOverview True, เส้นสัมผัสเข้าและออกเป็นอิสระ
flatboolOverview True, เส้นสัมผัสถูกจำกัดให้แบน
time_independent_tangentboolOverview True, ทิศทางของเส้นสัมผัสเป็นอิสระต่อการสเกลเวลา

Overview

ควบคุมวิธีการแทรกค่าระหว่าง keyframes ต่อเนื่อง.

OverviewOverview
CONSTANTOverview
LINEARการแทรกเชิงเส้นระหว่างค่า
BEZIERCubic Bezier โดยใช้สัมผัสเข้า/ออก
B_SPLINEUniform B-spline
CARDINAL_SPLINECardinal spline
TCB_SPLINEสแปลไลน์ Tension–Continuity–Bias

Overview

ควบคุมพฤติกรรมการเคลื่อนไหวนอกเหนือจาก keyframe แรกและสุดท้าย.

OverviewOverview
CONSTANTคงค่าขอบเขต
GRADIENTขยายค่าที่ความชันสัมผัสของคีย์เฟรมขอบเขต
CYCLEทำซ้ำช่วงคีย์เฟรม (loops)
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")

ดูเพิ่มเติม

 ภาษาไทย