适用场景
- 产品动效预告片设计无需在画面间切换,就能展示多个界面状态的短循环。
- 微交互展示片把开关、滑块、标签页和命令面板演示成一个连贯故事的序列。
- 音乐同步界面动画光标动作落在固定节拍网格上的作品。
动效亮点
- 从不切镜的单一形状每个状态都是同一个容器的形变,而不是场景切换。
- 由光标引发的变化每一次转场都始于一个可见的指针动作。
- 首尾闭合的循环最后一帧与第一帧一致,因此播放时可以无缝重复。
UI 形变动画设计预览
一个形状如何撑起整支短片
短片时长14秒,节奏为120 BPM,源文档将其划分为7小节。一个形状从“Generate”按钮开始,依次变为加载器、对勾、灵动岛、音乐播放器、音量滑块、开关、标签指示器、图表、命令面板和提示条,最后回到按钮。
代价是每个状态都必须能通过调整同一主体的尺寸和圆角,从上一个状态到达。无法适应这种形状变化的内容,只能舍弃或重新设计。
| 阶段 | 可见变化 | 设计含义 |
|---|---|---|
| 按钮到加载器再到对勾 | “Generate”按钮变为进度状态,随后变为确认状态。 | 请求、等待和结果被读作一个对象,而不是三个界面。 |
| 灵动岛到音乐播放器 | 紧凑的胶囊展开为深色卡片,带有专辑块、标题、进度条和播放控制。 | 从胶囊到卡片的扩展表明,同一个容器可以同时承载概览状态和详情状态。 |
| 滑块、开关、标签页 | 音量滑块被拉伸超过最大值,随后是开关和 Day / Week / Month 标签胶囊。 | 小型控件沿用同一套圆角语言,因此变化更多体现在动效上,而不是样式上。 |
| 图表、命令面板、提示条 | 图表自行绘制,命令面板输入“frame”,提示条收束循环。 | 最密集的状态放在后段,此时观众已经理解了这个形状的逻辑。 |
解读播放器、标签页和命令面板画面
三个截取的画面展示了同一个形状可以多么不同。在播放器中,黑色圆角卡片承载渐变块、“motion study 02”、位于0:49且剩余−2:09的进度条,以及上一首、播放和下一首图标。在标签页画面中,白色胶囊容纳 Day、Week 和 Month,Day 后面有一个黑色指示器。
在命令面板中,输入的单词“frame”带出两条结果:“Frame rate · 60fps”和“Every frame is code”,第一条高亮显示。
时间驱动的构建方式及其取舍
源文档描述了一个单一的 render(t) 函数,它根据主时间轴时间绘制整个画面。每个可见数值都是 t 的纯函数,使用缓动、弹簧或关键帧,帧与帧之间不携带任何状态。因此向后拖动时间轴会重现完全相同的画面。
这让导出结果可预测,但对制作者要求更高。用事件处理很容易实现的交互,例如悬停或输入,必须改写成带时间的关键帧。
只保留一个时钟
GSAP 主时间轴是唯一的时钟。各图层读取它的当前时间,而不是运行自己的计时器。
为每次变化叠加弹簧
改编说明要求为每次变化叠加弹簧,让重叠的运动相互融合,而不是重新开始。
让光标引发一切
每次状态变化之前都需要一个指针动作。没有这条规则,形变看起来就只是装饰,而不是交互。
来源与范围
这是 OpenDesign 官方对 @twoclipping 最初发布在 X 上的一件动效作品的代码重制与改编。它根据已发布的作品用代码重建,14秒的配乐是原创配乐,而非来自原作的音频。署名仅为事实性参考,并不意味着原作者的认可。
这是一项渲染出来的动效研究,而不是可用的界面产品。短片中的播放器、图表和命令面板不会响应输入。该模板来自一个拟议中的 OpenDesign 视频工作流;能否使用取决于所安装的版本。
将形变改编到你自己的产品
说明建议替换 SHAPE 定义中的各个状态及其内容,同时保留三条规则:从不切镜的单一形状、为每次变化叠加弹簧、每次变化背后都有光标。先列出你最需要展示的五个产品状态,再按容器从小到大排序。
如果想要循环,请让首尾状态保持一致。如果各状态的尺寸差异很大,过渡帧会显得被拉伸,请相应放慢节奏。
选择更少但更有力的状态
这支短片在14秒内展示了约十个状态。只有四个状态的产品预告片,可以让每个状态在画面上停留更久。
在一处统一换肤
文案、配色和时间设置为常量,位于参考代码的顶部,因此更换暖灰色画布或黑色组件只需小幅修改。
避免沉重的画布特效
说明提醒,大面积渐变和逐像素噪点会让每个截取的帧开销很大,从而拖慢 MP4 导出。
如何在 OpenDesign 中创建 UI 形变动画设计
定义形状及其状态
列出单个容器必须经历的各个状态,从紧凑的按钮到最大的形态。在动手绘制之前,先确定每次变化由哪个指针动作触发,并固定节奏。
建议提示词创建一支14秒的循环 UI 动效短片,画布为1920x1080的暖浅灰色。使用一个黑白相间的圆角形状,全程不切镜。以120 BPM的节奏,将它从“Generate”按钮依次形变为加载器、对勾、带进度条的音乐播放器、Day / Week / Month 标签胶囊,以及一个会输入一个短词的命令面板。每一次变化都必须由可见的光标触发。让最后一帧与第一帧一致,以实现循环。只使用示例文字,不要添加真实数据或可用的控件。
一切由时间驱动
要求每个可见数值都由时间轴时间计算得出,这样向后拖动时间轴也会得到完全相同的画面。将文案、配色和时间设置为常量,方便在一处统一修改。
检查声音、循环与节奏
检查结尾帧是否等于起始帧,光标动作是否落在节拍上,以及内容密集的状态是否过于仓促。只使用你有权使用的音频,或保持短片无声。
导出并获取分享链接
导出完成的设计稿,然后在 OpenDesign 中使用「Share」功能获取分享链接。在单独的浏览器窗口中打开链接,确认目标版本及其资源均可正常访问后,再将链接发送给他人。



