动画
不得不说,动画真的有很大的魅力,前几天折腾了 Web 动画的相关内容,无意间又跳进了视频动画的深坑。
动画的分类方式
按动画的交互性分类
| 类别 | 核心目标 | 最终媒介 | 交互性 | 典型例子 |
|---|---|---|---|---|
| 影视动画 | 叙事与视觉体验 | 线性播放的视频文件(.mp4, .mov等) | 无。观众是被动观看。 | 《玩具总动员》、《千与千寻》、动画剧集、MG宣传片 |
| 游戏动画 | 交互与反馈 | 游戏引擎(如Unity, Unreal Engine) | 有。动画由玩家实时触发和控制。 | 《英雄联盟》角色移动、《原神》攻击技能、《艾尔登法环》的怪物动作 |
| UI 动画 | 用户体验与信息传递 | 浏览器、App、可交互设备 | 有。动画响应用户操作(点击、滚动、悬停)。 | 网页按钮反馈、数据可视化图表、App页面切换动效 |
交互性和表现性是动画的两大核心要素,一般影视动画的表现性更强,游戏动画的交互性更强。但是不代表游戏动画就是高交互,高表现力的,比如 galgame 的动画就是低交互,低表现力的。这么分类主要是因为影视,游戏,UI 是动画最常见的应用场景。
按动画的制作技术分类
| 类别 | 核心技术 | 特点与应用 |
|---|---|---|
| 手绘动画 | 逐帧动画 | 每一帧都由艺术家手工绘制或数字绘制。艺术性强,风格多变。常见于传统动画片(如迪士尼早期)、独立游戏(《空洞骑士》)、动态插画。 |
| 建模动画 | 数字建模与绑定 | 在三维软件中创建模型、绑定骨骼,然后在三维空间中为骨骼设置关键帧。是现代影视和游戏行业的绝对主流。 |
| 定格动画 | 实体模型逐帧拍摄 | 通过逐帧摆拍实物模型(黏土、木偶等)来实现。艺术感独特,制作耗时。如《小羊肖恩》、《犬之岛》。 |
| 动态图形 | 图形与信息的动态化 | 介于动画和平面设计之间,核心是让图形、文字、数据“动起来”以传达信息。是MG动画的主要技术形式。 |
将两类分类方式结合,就能大致对动画的分类有比较全面的分类了。
- 影视动画
- 手绘动画:《千与千寻》、《龙猫》、《天空之城》等
- 建模动画:皮克斯的《玩具总动员》是影史首部全3D动画长片,开创了三维建模动画的时代。
- 定格动画:韦斯·安德森执导的影片,使用真实的木偶模型在微缩布景中逐帧拍摄而成。动画师需要极其耐心地移动木偶并拍摄照片,最终串联成流畅的影片。
- 动态图形:《蜘蛛侠:平行宇宙》虽然影片整体是3D动画,但它大量借鉴和融合了动态图形的视觉风格,如漫画式的文字拟声词、分屏效果、半调图案等
- 游戏动画
- 手绘动画:《茶杯头大冒险》所有动作和场景均通过传统手绘技法完成
- 建模动画:现在的 3A 游戏基本都是建模动画
- 定格动画:《小羊肖恩》、《犬之岛》等
- 动态图形:galgame 游戏
- UI 动画
- 手绘动画:电子绘本
- 建模动画:Threejs,QQ里的人物形象等
- 定格动画:无用武之地
- 动态图形:Web 里的交互式 UI 都属于动态图形
动画的实现探索
要实现动画一般需要两点,一个是素材,一个是合成。
对于素材来说,影视动画一般通过拍摄,游戏动画一般通过建模和手绘,UI 动画一般通过计算机绘制。对于合成来说,影视动画一般通过后期,游戏动画一般通过游戏引擎,UI 动画一般通过编程。特殊的有个生成式 AI,可以自动生成素材和合成。
我就不啰里八唆的说动画实现的原理了,什么帧动画,骨骼动画,动捕动画,等等。这里主要讲讲我探索动画时的一些尝试和疑问,也主要是 Web 和视频方向的。
关于使用工具的选择
我在各大平台的讨论区都碰到过,为什么不拿游戏引擎做 web 的动画,动效,交互设计?非要去搞一些 Threejs, Taiji 等新的渲染引擎?游戏引擎 Unity, Unreal Engine 等不香吗?为什么要区分游戏,影视,UI 动画?明显游戏动画引擎的功能更强,完全可以覆盖影视和 UI 动画。
确实,游戏引擎强大,我们都想要 ALL IN ONE 的解决方案,但是现实是,游戏引擎在 Web 的适配性上并不好。Web 主要靠 HTML 实现 Accessible 的语义化布局,需要视障用户无障碍访问。游戏引擎也太重了,开发 Web 完全是杀鸡用牛刀。还有各种各样的理由,从生态来看,确实是做对应的工作最好用对应的工具。
我并不是说不能做,比如 blender 可以用于录制视频,我只需要在三维空间,给图片,物体 K 帧,摄像机对准,就能实现视频剪辑软件的基础操作,我甚至可以做到视频剪辑软件没有的用 Python 实现全自动的动画。问题是以 3D 视角操作视频的体验并不好,并且缺乏对应的生态,转场,模板,特效合成等,都得自己实现。blender 有视频剪辑的功能,但也就提供两种基础的转场,其它的都要自己实现。
我早期也希冀 blender 能 ALL IN ONE,一方面 Adobe 的套件是订阅的,太贵了,另一方面作为个人业余使用,学习成本太高。想想看特效用 AE,剪辑用 PR,原画用 PS,模型用 Blender,动画用 Maya,看着都头大,每年订阅费都不少。要不说分为建模师,剪辑师,特效师,动画师,原画师,等等,它是有道理的。
编程动画
我入坑动画是 3blue1brown 的数学视频,那玩意儿真的很优雅(当然是结果很优雅,过程很拉跨)。manim 动画引擎基于 Python,使用 latex 渲染数学公示,cairo 渲染 2D 图形,ffmpeg 渲染视频。看着很美好,光安装就得解决若干问题,比如 latex 的中文渲染问题,cairo 的依赖问题等,由于太难用,ManimCommunity/manim就出现了社区维护的版本。blender 也能用 Python 编程,“眼见为识” up主就利用 blender 实现黑洞,引力波等的可视化。
之所以用编程的方式实现动画,我觉得首先很大程度上传统的动画制作方式很难表现数学、物理中的公式,图形等,制作出出色的动效是非常困难的。编程能自动化的封装过程,对数学公式等也更友好,是专有领域不可替代的。还有个很有名的火柴人动画的例子,这家伙用的是矢量图 K 帧的方式实现数学动画,建立在量少不复杂的基础上。
其次是自动化,我曾经试图一键生成同一模板的动画,很多视频其实没多少东西,就是拼拼凑凑整几个转场就完了。这块领域有Remotion | Make videos programmatically,Motion Canvas,一个是基于 React 的,一个是基于 Canvas 的,都是基于 Web 编程的方式实现动画。一个是声明式的,一个是过程式的。确实能达到一键生成视频的效果,借助AI编码,能减轻不少工作量。问题也在这里,封装了素材和合成过程,自定义很费劲。你想像视频剪辑软件那样拖动过去加个转场就得写一堆模板代码。
不乏有基于其它语言的编程动画引擎,似乎自动化和便利性是互斥的。整体而言只能覆盖很小的领域。
AI 动画
AI 动画也有两个方向,一个是生成式 AI,一个是 AI 动画编程。
目前生成式 AI 很火,文生图,图生视频,视频生视频都有。现在很多视频剪辑软件都有比较成熟的 AI 功能了,比如视频片段扩充,视频片段重组,视频片段修复,视频片段生成,等等。完全利用 AI 生成视频目前存在下面的问题。
- 一致性问题:AI 生成的动画素材在不同帧之间可能出现风格、角色细节不一致的情况,比如角色的发型、服饰颜色在前后画面发生变化,导致动画整体看起来不连贯。
- 质量问题:AI 生成的画面有时会出现畸形、模糊、细节缺失等问题。例如在生成奔跑动画时,角色的手脚可能会变形,影响观感。
- 版权问题:AI 训练数据可能包含受版权保护的内容,生成的动画素材可能无意中“借鉴”了已有作品的元素,比如角色造型、背景设计等,存在侵权风险。
- 可控性问题:AI 生成动画时,用户很难精确控制每一帧的细节和动作。例如想让角色做一个特定的手势,AI 可能无法准确理解和还原,导致结果不可控。
- 可维护性问题:AI 生成的动画素材往往缺乏结构化的分层和可编辑性,后期如果需要修改某一部分(如替换角色表情),往往需要重新生成全部内容,维护成本高。
AI 动画编程,这个方向是基于 AI 的辅助,blender 的 python 接口,可以利用 blender-mcp 实现用 cli 一边用自然语言辅助操作,一边自动执行。使用 remotion 这样的可编程视频,则能完全vibe coding,像写代码一样写视频。
未来也将会和多种工具服务视频一样,AI 也将会在各个阶段介入辅助,试图 AI 一站式解决动画制作的问题也不太可能。
总结
通用性和专有性,自由度和效率,这些往往不可兼得。我一度认为像 remotion 这样的工具是没有生态位的,用这么个工具需要 react 不说,完全基于 web,技术原因有限适配第三方库,受众少之又少,功能性也不如 blender 等第三方工具。实际上呢,但凡有一丁点效率提升,就有它的用武之地,就能占据一定的生态位。市面上依然有很多拼多多式的工具赚得盆满钵满,什么做了个特效,做了个各个型号的手机壳,电脑壳。