AI for Animation开源库介绍

本文介绍AI开源项目AI for Animation,重点讲解其实现四足动物运动的新型MANN架构。该架构由运动预测和门控网络组成,能从非结构化数据中学习。Demo展示其操作反馈迅速、动画流畅自然。此外,还推荐了Machine Learning相关开源库与Unity blog。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【博物纳新】是UWA旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。

更多精彩内容请关注:lab.uwa4d.com


导读

AI for Animation是一个用来实现流畅而又真实的四足动物的运动动画和人类的运动动画的AI开源项目。本文主要介绍相对更为复杂的四足动物运动。由于现有的架构并不能让原作者团队感到满意,对此,他们提出了一种新型架构来实现这一目标。

请输入图片描述

开源库链接:https://lab.uwa4d.com/lab/5b86874c02004fb659791c62


一、前言

目前四足动物的动画是计算机动画中最具提升空间的话题之一。

一般在动画中出现四足动物时,动画师往往要经过特殊的设计与调试之后,才能设计出四足动物各种复杂的动作。这种复杂性来自于四足动物的动作具有多种形态模式,例如步行、小跑、慢跑和疾驰,而且任意两种模式的转换过程中,会出现更复杂的变化。

请输入图片描述

即使用动作捕捉也无法完全解决这一问题。目前还没有完全用数据来系统地驱动四足动画的成熟模式。关于这点的原因,一方面源于上面提到的复杂性,另一方面四足动物与人类不同,真人动捕演员会按指导做各种规定动作,而动物不能。 最终从四足动物身上捕获的数据往往不够系统化和结构化,它们往往是一个接一个地执行各种随机动作。在设计此类角色的动画时,工程师需要手动/半自动地从数据中提取步态周期和过渡,将它们拼接在一起,并调整运动树和有限状态机的参数。


二、MANN架构

在这个开源库中,作者提出了一种称之为“自适应神经网络”(Mode-Adaptive Neural Networks,简称MANN)的新型网络架构。

MANN由运动预测网络和门控网络组成,能够从拥有大量非结构化四足动作捕获数据中,通过深度学习来改进运动控制器。在给定前一帧中的状态和用户提供的控制信号的情况下,运动预测网络会在每帧计算当前帧中的角色状态;而门控网络会通过选择和混合权重来动态更新运动预测网络的权重,每个权重专门针对特定的运动。

作者开发的端到端学习架构可以从大量非结构化运动捕获数据中学习。与以往的其他四足动画不同的是,MANN架构在两个模式相互切换的过程中,并非去找到固定的权重解,而是在优化的同时将一组两个权重混合到(第三个)神经网络中。然后动态地组合门控网络的混合系数,使得该混合系数适应当前的运动状态。

再将运动预测网络中使用所生成的速率作为指标,来产生期望的动作或运动,使得动画明显地平滑起来。


三、Demo效果展示

该项目提供了Demo供演示、使用和学习。

Demo中为使用一小时的四足动作捕捉数据,并通过随机梯度下降来训练。

请输入图片描述

在训练之后,用户可以使用简单的键盘指令来切换各种运动模式,实时地控制角色。地面上的红色和绿色箭头表示运动控制信号,用于估计用户想要导航的未来轨迹。

请输入图片描述

下面的上图展示了由给定速度产生的不同运动模式的脚步,下图显示了每层神经元在适应当前运动状态时产生的周期性改变。

请输入图片描述

请输入图片描述

下图中,我们可以看到各种运动过程中八种不同混合系数的激活曲线。

门控网络的输出神经元学会专门针对不同的运动阶段转换和动作。

每个运动具有不同的输出神经元,产生不同的循环函数。

通过调节所需的速度,不同运动模式之间的过渡也会趋向于自然。

即便角色的操作灵敏度比较高,不同动作之间的过渡依旧是非常流畅的。

请输入图片描述

 

请输入图片描述

 

请输入图片描述

请输入图片描述

在某些混合的特定视角下,可能一些动作或动作间的过渡会被禁用。比如在这种情况下无法继续左转(右转并不受影响)。

请输入图片描述

在给定路线之后,运动也会沿着既定路线,同时计算合适的速度,保持运动的自然。

请输入图片描述

请输入图片描述

当需要瞬时左转或右转时,与其他项目相比,MANN系统可以更快地对给定的控制信号做出反应。

与其他的神经网络系统相比,MANN系统的动作也明显更加自然。

请输入图片描述

 


四、简评

从最后的直观表现上来看,MANN的操作反馈迅速,动画流畅自然。

从结构本身来看,MANN具有灵活性,可以在各种非周期性动作和未标记的周期性步态类型中学习一致的特征。这个框架可以解放开发者们,让他们不再苦于相位标记的繁琐和困难。

从更加宏观的角度来看,MANN对Machine Learning的使用方式,也可以从某种程度上给与其他开发者一些启发。

Machine Learning作为AI的一种应用,不同于传统的工程方式,它使系统能够自主地学习数据。通过向系统提供信息并观察和搜索合适的模式,对未来结果进行预测。更广泛地说,系统学习所需的输入-输出映射后,将能够选择下一步要执行的最佳操作,优化运行的结果。

当然,Machine Learning在刚开始上手的阶段必然会有一定的上手难度和门槛,不可避免地需要开发者克服。但在未来的开发中,Machine Learning的使用频率应该也会越来越高,对Machine Learning的了解和使用对于未来的开发一定会有帮助。


五、Machine Learning相关开源库与Unity blog推荐

在Machine Learning相关领域下,目前的Unity已经有了越来越好的支持。

UWA开源库中也还有不少相关的开源项目,小编在此也推荐一些:

Machine Learning Agents Toolkit

Unity Neural Network

Self-driving Car Simulator

Evolutionary Artificial Neural Networks

还有一些Unity Blog相关的文章可供浏览,按时间发布先后:

Unity AI Themed blog entries

Unity AI – Reinforcement Learning with Q-Learning

Introducing: Unity Machine Learning Agents Toolkit

Using Machine Learning Agents Toolkit in a real game: a beginner’s guide

Solving sparse-reward tasks with Curiosity

Obstacle Tower Challenge: Test the limits of intelligence systems

Unity ML-Agents Toolkit v0.8: Faster training on real games

 

快用UWA Lab合辑Mark好项目!

 

请输入图片描述

今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路......

请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。

### AI 数学动画实现方法 #### 使用 Manim 制作数学动画 Manim 是一款功能强大的开源 Python 库,用于创建高质量的数学动画。通过学习 Manim 的基本语法和操作流程,可以轻松制作类似于 3Blue1Brown 风格的教学视频[^1]。以下是基于 Manim 创建正弦波动画的一个简单示例: ```python from manim import * class SineWave(Scene): def construct(self): axes = Axes( x_range=[-10, 10], y_range=[-2, 2], axis_config={"color": BLUE}, ) sine_graph = axes.plot(lambda x: np.sin(x), color=RED) label = MathTex(r"\sin(x)", color=RED).next_to(sine_graph, UR) self.play(Create(axes)) self.play(Create(sine_graph), Write(label)) moving_dot = Dot().move_to(axes.c2p(-10, np.sin(-10))) dot_label = Text("(x, sin(x))").scale(0.7).next_to(moving_dot, UP) self.add(moving_dot, dot_label) self.play(MoveAlongPath(moving_dot, sine_graph), UpdateFromFunc(dot_label, lambda m: m.next_to(moving_dot, UP)), run_time=5, rate_func=linear) ``` 此代码片段展示了如何利用 Manim 绘制并动态展示正弦曲线。 #### GeoGebra 和 Desmos 工具的应用 除了编程方式外,GeoGebra 提供了一个直观易用界面来构建交互式的几何图形以及三维模型[^2]。对于初学者来说,它无需复杂编码即可快速上手绘制各种静态或简单的动态效果。而 Desmos 更侧重于在线绘图能力,在教育领域也有广泛应用价值。 #### 基于 Matplotlib 和 Numpy 构建 GIF 动画 如果偏好传统科学计算环境,则可借助 NumPy 进行数值处理,并配合 Matplotlib 完成图像渲染最后导出为 GIF 文件格式存储至指定位置[^3]。下面给出一段具体实现过程: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import imageio fig, ax = plt.subplots() xdata, ydata = [], [] ln, = plt.plot([], [], 'r-', animated=True) def init(): ax.set_xlim(-10, 10) ax.set_ylim(-2, 2) return ln, def update(frame): xdata.append(frame) ydata.append(np.sin(frame)) ln.set_data(xdata, ydata) print(f'Frame {len(xdata)} processed.') return ln, ani = FuncAnimation(fig, update, frames=np.linspace(-10, 10, 200), init_func=init, blit=True) writer = imageio.get_writer('F:/sine_wave.gif', mode='I') for i in range(len(ani._frames)): writer.append_data(plt.gcf()) print("GIF saved successfully.") writer.close() ``` 上述脚本实现了从负十到正十区间内的连续帧捕捉并将最终成果保存到了 F 盘根目录下名为 `sine_wave.gif` 的文件当中。 #### 向量概念及其重要性 向量作为线性代数中的核心组成部分之一,在机器学习与深度神经网络等领域扮演着极其重要的角色[^4]。理解这些基础知识有助于更好地掌握后续高级话题比如张量运算或者梯度下降法原理等等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值