urho3D属性动画

news/2025/1/31 7:18:28/

属性动画是一种设置对象属性值动画的机制。从Animatable派生的对象可以使用属性动画,这包括Node类以及所有Component和UIElement子类。

这是使用属性动画的两种方法。用户可以使用代码创建属性动画,然后将其应用于对象的属性。以下是浅色动画的简单代码:

 SharedPtr<ValueAnimation> colorAnimation(new ValueAnimation(context_));

colorAnimation->SetKeyFrame(0.0f, Color::WHITE);

colorAnimation->SetKeyFrame(2.0f, Color::YELLOW);

colorAnimation->SetKeyFrame(4.0f, Color::WHITE);

light->SetAttributeAnimation("Color", colorAnimation, WM_LOOP);

在上面的代码中,我们首先创建一个名为colorAnimation的ValueAnimation对象,并为其设置三个关键帧值,然后将其指定给灯光的颜色属性。(此处注意:为了使动画看起来正确,循环模式的最后一个关键帧必须等于第一个关键帧)。

另一种方法是加载属性动画资源,下面是一个简单的示例:

  ValueAnimation* colorAnimation = cache->GetResource<ValueAnimation>("Scene/LightColorAnimation.xml");

  light->SetAttributeAnimation("Color", colorAnimation, WM_LOOP);

属性动画支持三种不同的包裹模式:

WM_LOOP:循环模式,当动画到达结尾时,它将从头循环。

WM_ONCE:播放一次模式,当动画完成时,它将从对象中删除。

WM_CLAMP:钳制模式,当动画完成时,它将保持最后一个关键帧的值。

可以动态调整动画的播放速度(默认值为1或“原始速度”)以及动画的包裹模式。

ObjectAnimation类可用于将影响不同属性的多个值动画组合在一起。例如,当用户想要为灯光应用位置和颜色动画时,可以使用以下代码。请注意,对象动画附加到灯光的场景节点,因此需要特殊语法来引用灯光组件的属性。

// Create light animation

SharedPtr<ObjectAnimation> lightAnimation(new ObjectAnimation(context_));

// Create light position animation

SharedPtr<ValueAnimation> positionAnimation(new ValueAnimation(context_));

// Use spline interpolation method

positionAnimation->SetInterpolationMethod(IM_SPLINE);

// Set spline tension

positionAnimation->SetSplineTension(0.7f);

positionAnimation->SetKeyFrame(0.0f, Vector3(-30.0f, 5.0f, -30.0f));

positionAnimation->SetKeyFrame(1.0f, Vector3( 30.0f, 5.0f, -30.0f));

positionAnimation->SetKeyFrame(2.0f, Vector3( 30.0f, 5.0f,  30.0f));

positionAnimation->SetKeyFrame(3.0f, Vector3(-30.0f, 5.0f,  30.0f));

positionAnimation->SetKeyFrame(4.0f, Vector3(-30.0f, 5.0f, -30.0f));

// Set position animation

lightAnimation->AddAttributeAnimation("Position", positionAnimation);

// Create light color animation

SharedPtr<ValueAnimation> colorAnimation(new ValueAnimation(context_));

colorAnimation->SetKeyFrame(0.0f, Color::WHITE);

colorAnimation->SetKeyFrame(1.0f, Color::RED);

colorAnimation->SetKeyFrame(2.0f, Color::YELLOW);

colorAnimation->SetKeyFrame(3.0f, Color::GREEN);

colorAnimation->SetKeyFrame(4.0f, Color::WHITE);

// Set Light component's color animation

lightAnimation->AddAttributeAnimation("@Light/Color", colorAnimation);

// Apply light animation to light node

lightNode->SetObjectAnimation(lightAnimation);

也可以从文件加载对象动画,例如:

ObjectAnimation * lightAnimation = cache->GetResource<ObjectAnimation>("Scene/LightAnimation.xml");

lightNode->SetObjectAnimation (lightAnimation);

属性动画对浮点类型(如float、Vector2、Vector3等)使用线性或样条插值,而对整数和非数字类型(如int、bool)不使用插值。或者,通过设置插值方法IM_NONE(请参见SetInterpolationMethod()),可以为任何数据类型禁用插值。这允许例如通过修改元素的图像矩形以覆盖一系列动画帧来设置UI元素的动画。

属性动画类

可设置动画:可设置动画的对象的基类,它可以在其单个属性上指定动画(ValueAnimation),或影响多个属性的动画(ObjectAnimation)。

ValueAnimation:包括单个属性的关键帧值

ObjectAnimation:包括一个或多个属性动画及其可动画对象的包裹模式和速度。

ValueAnimationInfo:属性动画的运行时实例的基类,包括引用的动画、换行模式、速度和时间位置。


http://www.ppmy.cn/news/28085.html

相关文章

锁屏面试题百日百刷-Hive篇(三)

锁屏面试题百日百刷&#xff0c;每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线&#xff0c;官网地址&#xff1a;https://www.demosoftware.cn/#/introductionPage。已收录了每日更新的面试题的所有内容&#xff0c;还包含特色的解锁屏幕复习面试题、每日编程题目邮…

西北工业大学大学物理(II)期末试题选填解析2021-2022

2 金属薄片&#xff0c;就暗示了载流子是电子了。3 熟练掌握左右手即可。4 又是位移电流。6 感应电场。随时间变化着的磁场能在其周围空间激发一种电场&#xff0c;它能对处于其中的带电粒子施以力的作用&#xff0c;这就是涡旋电场&#xff0c;又叫感生电场。涡旋电场是非保守…

[面试直通版]网络协议面试核心之IP,TCP,UDP-TCP与UDP协议的区别

点击->计算机网络复习的文章集<-点击 目录 前言 UDP TCP 区别小总结 前言 TCP和UDP都是在传输层&#xff0c;在程序之间传输数据传输层OSI模型&#xff1a;第四层TCP/IP模型&#xff1a;第三层关键协议&#xff1a;TCP协议、UDP协议传输层属于主机间不同进程的通信传…

分享美容美发会员管理系统功能的特点_美容美发会员管理系统怎么做

人们越来越关心美发&#xff0c;美发行业发展迅速&#xff0c;小程序可以连接在线场景&#xff0c;许多美发院也开发了会员卡管理系统。那么一个实用的美发会员管理系统怎么制作呢&#xff1f;它有什么功能&#xff1f;我们一起来看看~&#xff08;干货满满&#xff0c;耐心看完…

pytorch 深度学习早停设置

当你设置早停的时候你需要注意的是你可能得在几个epoch后才开始判断早停。 早停参数设置 早停&#xff08;Early Stopping&#xff09;是一种常用的防止深度学习模型过拟合的方法。早停的设置需要根据具体情况进行调整&#xff0c;常见的做法是在模型训练过程中使用验证集&am…

SpringMVC常见面试题(2023最新)

目录前言1.简单介绍下你对springMVC的理解?2.说一说SpringMVC的重要组件及其作用3.SpringMVC的工作原理或流程4.SpringMVC的优点5.SpringMVC常用注解6.SpringMVC和struts2的区别7.怎么实现SpringMVC拦截器8.SpringMvc的控制器是不是单例模式&#xff1f;如果是&#xff0c;有什…

华为OD机试用Python实现 -【天然蓄水库 or 天然蓄水池】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲天然蓄水库 or 天然蓄水池题目描述输入描述输出描述说明示例一输入输出说明示例二输入输出说明示例三输入输出说明Python 代码实现算法思路华为OD机试300题大纲 参加华为

如何用 chatGPT,给大家来一个自我介绍

大家好&#xff0c;我是不吃西红柿的无线机械键盘&#xff0c;我的名字叫 Keychron K3 Pro。今天&#xff0c;我通过西红柿主人的手&#xff0c;使用 chatGPT 来介绍一下我自己。我的与众不同 我是由精密机械元件制作而成&#xff0c;并采用抗键渗设计&#xff0c;以提供更快、…