音准是什么意思| 心季吃什么药| 女性白带有血丝是什么原因| 30年属什么生肖| 不是经期有少量出血是什么原因| 尿道口下裂是什么样子| 摩羯是什么星座| 酒量越来越差什么原因| 嫦娥住的宫殿叫什么| 勉铃是什么| 看睾丸去医院挂什么科| 抗心磷脂抗体阳性是什么意思| cro是什么职位| 作风问题的核心是什么| 唐僧取经取的是什么经| 墨镜镜片什么材质好| 胃火吃什么食物好| 流泪痣是什么意思| 脾气虚吃什么中成药| 苦夏什么意思| 脚背有痣代表什么| 甲沟炎涂抹什么药膏最有效| 产后检查挂什么科| 夏天喝什么茶减肥| 吃什么可以降低血糖| asuka是什么意思| 26度穿什么衣服| 什么鱼刺少好吃| 给老师送花送什么花合适| 举目无亲是什么生肖| 停电了打什么电话| 兵解是什么意思| 增大淋巴结是什么意思| 产后抑郁症有什么表现症状| 舌头有裂纹是什么病| 开胸手术吃什么补元气| gm什么意思| 副县长什么级别| 泡泡是什么意思| 最快的速度是什么| 8.11是什么星座| 什么是马上风| 乙肝两对半45阳性是什么意思| 稀奶油是什么| 孩子拉肚子吃什么药| 易举易泄是什么原因| 勃起困难吃什么药| 老人脚肿是什么征兆| 拾掇是什么意思| 头痛吃什么药好| 新生儿便秘怎么办什么方法最有效| 三八妇女节送什么好| bra什么意思| 甲辰年五行属什么| 硌人什么意思| 龙傲天是什么意思| 姝字五行属什么| 办健康证在什么地方办| 淋是什么意思| 来大姨妈前有什么症状| 我的部首是什么| 哈尔滨市长什么级别| 狰狞是什么意思| 延年是什么意思| 牛魔王是什么生肖| 张牙舞爪是什么生肖| 矫正度数是什么意思| 肛门镜检查能查出什么| vt是什么意思| 抗体弱阳性是什么意思| 图号是什么| 20岁属什么的生肖| 芒果有什么功效| 这个故事告诉我们什么道理| head是什么牌子| 什么是食物链| 太平天国失败的根本原因是什么| 什么是外阴白斑| 梦见大蛇是什么预兆| 流涎是什么意思| 农历七月初七俗称什么| 宫颈出血是什么症状| 什么目寸光成语| 什么是酸性食物| 气血虚挂什么科| 皮肤黑穿什么颜色好看| 皮下出血是什么原因| 腱鞘炎贴什么膏药| 负数是什么意思| 闰6月有什么说法| 睡前吃香蕉有什么好处| 高铁什么时候检票| 杰字五行属什么| 96年是什么年| 乙丑是什么生肖| 头疼做什么检查| 云州是现在的什么地方| 万箭穿心是什么意思| 饭后呕吐是什么原因引起的| geya是什么牌子的手表| 灵官爷是什么神| 黄芪是什么样子的| 结缔组织病是什么病| 梦见自己吐了是什么意思| 宫颈肥大伴纳氏囊肿是什么意思| 眼睛长结石是什么原因引起的| 狗的鼻子为什么是湿的| 高血压有什么症状表现| 没有力气是什么原因| 历史是个什么玩意儿| 中队长是什么级别| 母子健康手册有什么用| 佩戴狼牙有什么好处| 发霉的衣服用什么洗能洗掉| 离岗是什么意思| 纯是什么意思| 吃什么解酒| 西洋参不适合什么人吃| 牟利什么意思| 胃烧心吃什么能缓解| 烂漫是什么意思| 身上汗味重是什么原因| 1962年五行属什么| 为什么会有癌症| 宿便是什么意思| 孩子发烧挂什么科| 水落石出开过什么生肖| 三点水翟读什么| 一什么冰雹| 皮上长小肉疙瘩是什么| 宸字五行属什么| 夏天木瓜煲什么汤最好| 最近天气为什么这么热| 女性肾功能不好有什么症状| 兰花用什么肥料最好| 小孩子手足口病有什么症状图片| 纠察是什么意思| 更年期是什么意思| 永垂不朽什么意思| 海为什么是蓝色| 蟑螂最喜欢吃什么| 喜大普奔什么意思| 肾蕨是什么植物| 上天是什么意思| 男士睾丸疼是什么原因| 甲状腺疾病有什么症状| 脸上长扁平疣是什么原因引起的| 鼓上蚤是什么意思| 取是什么意思| 头位是什么意思| 啫啫是什么意思| 数典忘祖指什么动物| aj是什么鞋子| 涎是什么意思| 综合内科是看什么病| 什么补钙效果最好| 什么是肝掌| mexican是什么牌子| 金字旁和什么有关| 肛周脓肿什么症状| 黄油可以做什么美食| 多发淋巴结是什么意思| 咽喉炎是什么症状| 7月29是什么星座| 清华校长什么级别| 帕金森病是什么症状| hpv是什么病严重吗| 祛痣后应注意什么| 通奸是什么意思| 品牌背书是什么意思| 湛江有什么好玩的| 维生素d低是什么原因| 什么水果可以降火| c2m模式是什么意思| 有痔疮不能吃什么食物| 洋葱为什么会让人流泪| 郑中基为什么叫太子基| 产检挂什么科室| 拔罐后发痒是什么原因| 阿胶烊化是什么意思| 宫保鸡丁宫保是指什么| 96年属什么的| 月经为什么推迟不来| 梦到迁坟是什么意思| 红色象征什么| 虫草泡水喝有什么功效| 症候群什么意思| 胎监不过关是什么原因| 早上吃什么早餐最好| gln是什么氨基酸| 节令是什么意思| 王莲是什么植物| 一惊一乍是什么意思| 官官相护是什么意思| 老人怕冷是什么原因| 孀居是什么意思| hpa是什么意思| 为什么宫颈会肥大| 条状血流信号是什么意思| 乘务长是干什么的| 送礼送什么好| 乳腺4a是什么意思| 女性血热吃什么好得快| 肠胃湿热吃什么药好| 顶胯是什么意思| 什么太阳| 蝎子怕什么| 什么原因导致胎停| 大便干燥一粒一粒的是什么原因| 为什么一到晚上就痒| 毛脚女婿是什么意思| 微信为什么发不了视频| 精液带血是什么原因| 颈椎轻度退行性变是什么意思| 不走寻常路是什么意思| 人为什么会老| 阴是什么生肖| 颈动脉斑块吃什么药| 水杯用什么材质的好| 吃什么不会胖又减肥| 床上为什么会有跳蚤| 首长是什么级别| 腊肉和什么菜炒好吃| 平板有什么用处| 小孩嘴唇发白是什么原因| 上海话册那什么意思| 病是什么结构的字| 烦躁不安的意思是什么| 腹泻吃什么消炎药| 烹饪是什么意思| 上海最高楼叫什么大厦有多少米高| 9.1什么星座| 网贷是什么| 小丑叫什么| 平起平坐是什么动物| 朱元璋为什么不杀朱棣| 调理肠胃吃什么好| 盆腔炎用什么消炎药好| py交易是什么意思| 11月17日什么星座| 粉丝是什么做的| 北京为什么叫帝都| 拉肚子是什么原因造成的| 吃什么有助于睡眠效果好| 艮什么意思| 锌过量会引发什么症状| 检查骨头做什么检查| 疰夏是什么意思| 蚊子喜欢什么气味| 右眼袋跳动是什么原因| 山东特产是什么| 大腿内侧发黑是什么原因| 乾隆和康熙是什么关系| 五心烦热是什么意思| 特需门诊和专家门诊有什么区别| 小龙虾不能和什么一起吃| 缺钾挂什么科| 试孕纸什么时候测最准| 检查阑尾炎挂什么科| 朋友是什么| 熊猫为什么会成为国宝| 过敏用什么药| 黄色鞋子配什么颜色裤子| lgg什么意思| 百度
恭喜你成为UI中国推荐设计师 (详情)
//百度统计 20220402 uicn

您的意见是我们 UI 中国进步的动力!
点击立即反馈按钮,发表您的意见!
立即反馈
QQ群反馈
您也可以加入UI中国官方反馈群进行反馈!
群号:302892100
备注:反馈问题后@管理员能让我们及时了解您的意见

提交需求

赛事与广告咨询合作,请填写需求表单,我们会在第一时间与您联系!

0/20
0/200

设计大赛

  • 设计大赛
  • 发布广告
  • 发布招聘
  • 其它需求

提交完成
感谢您对UI中国的支持和信赖!
Starry Night 表达式动画实验
0.0°
2025-08-06 原创文章 经验/观点 举报 2993 5 4 0

手写动画了解一下?

Starry night


设计场景

无缝衔接演化的星空


目标

1. 定义全局参数接口,快速调整。只用一个图层
2. 让参数驱动场景和随机动画的生成
3. 粒子自然随机地分布于界定范围
4. 实现周期随机,并且,达到无缝连接
5. 可按需调整形态


一、星星单体定义

1. 随机纵深

添加一个圆形基本形状,在形状的「路径/大小」属性上定义:

id = thisProperty.propertyGroup(2).propertyIndex;
seedRandom(id,true);
x = random(.001,4);//随机尺寸
y = x;//等宽高
[x,y]

解决思路:

random( ); 可实现数值上的随机,但会导致需要复制多个图层,不够灵活。
祭出进阶随机表达式,用形状层的独立索引 id 来产生随机种子,由一个图层管理:

id = thisProperty.propertyGroup(2).propertyIndex;//2代表返回第二级父级属性索引,此处为形状本身。
seedRandom(id,true);//true 使随机值固定,不随时间跳跃。
random( );

每复制一个星星(形状 Star),它的独立 id 就会产生差异化。

纵深用尺寸差异来体现,定义 [a,b] 限定合适范围即可。
惯用套路,使用一个小数值让最小的粒子都有存在感,范围限制在 (.001,4)。
同样的方法,我们可以添加一个匹配尺寸的随机「模糊」属性,让表现更加真实。

对象大小是一个包含宽、高的二维属性,随机必然产生偏差。
定义其中一个属性(宽度 x),再把其赋值给另一个属性( 高度 y)即可解决:

x = a;
y = x;
[x,y];

2. 角度偏移

形状的「变换/旋转」属性上,定义:

id = thisProperty.propertyGroup(2).propertyIndex;
value + 360*noise(id);//临近角度随机偏移

解决思路:

生成 360° 的临近随机偏移。
noise(id); 生成 [0,1] 的临近偏移量,再乘与 360。
value 为初始角度 0 ,加上偏移量 [0,360]:
value + 360*noise(id);

3. 随机分布

形状的「变换/位置」属性上,定义:

id = thisProperty.propertyGroup(2).propertyIndex;
seedRandom(id,true);
a = width/2;
b = height/2;
gaussRandom([-a,-b],[a,b]);//在画布区域高斯分布,10%在画布外

只用 random( ); 也是可以实现的,不过高斯(正态)分布更加自然,试试无妨。
画布中心是锚点是 [0,0],换算后星空的范围落于 [[-width/2,-height/2],[width/2,height/2]]
如果用于不同图层,只需要换成:

a = width;
b = height;
gaussRandom([0,0],[a,b]);

4. 无缝连接的周期随机亮度

形状的「变换/不透明度」属性上,定义:

freq = .2;//频率,每 0.2s 一次不透明度变化
amp = 100;//不透明度的偏移幅度
loopTime = 4;//定义周期
t = time % loopTime;//取余,周期重置
wiggle1 = wiggle(freq, amp, 1, .5, t);//抖动
wiggle2 = wiggle(freq, amp, 1, .5, t - loopTime);//反向偏移
value - linear(t, 0, loopTime, wiggle1, wiggle2);//首尾相接

学习了 Dan Ebberts 的 Looping Wiggle 方法,思路:


定义两个随机抖动 wiggle1,wiggle2。利用 linear 表达式将其首尾的随机数值连接,实现循环。
loopTime 和 t,则利用「取余」方法定义了动画周期,此处随着时间 (time) 的变化,每隔 4 秒一个周期。

其中,freq, amp 以及 loopTime 是三个核心参数,按需调整即可改变设计。

5. 形态

对形状层添加一个全局的「收缩与膨胀」效果
在「数量」上添加表达式:

a = 1.8 * layerStyle.outerGlow.opacity;//光芒长度和闪烁亮度关联
clamp(a,0,100);//限制范围

思路:

用「表达式关联器」,将星星尖角的数值 a 关联到下文添加的「外发光」属性上,达到亮度和发光度的正确匹配。
星星越亮,突出的尖角就会越大。
clamp( ); 把最大值限制到 100,可按需调整。

6. 无缝连接的周期闪烁

对父级图层 Starry 添加「外发光」样式,定义如下:

freq = .8;//频率,每 0.8s 一次不透明度变化
amp =30;//发光闪烁幅度
loopTime = 4;//定义周期
t = time % loopTime;//取余,周期重置
wiggle1 = wiggle(freq, amp, 1, .5, t);//抖动
wiggle2 = wiggle(freq, amp, 1, .5, t - loopTime);//反向偏移
linear(t, 0, loopTime, wiggle1, wiggle2);//首尾相接

思路:

同 4,应用 looping wiggle 方法。
初始外发光不透明度数值设为 50%,这个场景中,我不希望动画太过跳跃,幅度只用了 ±30%。
每个完整的 4s 周期里面,会有 5 次 每隔 0.8s ,从 20% 到 80% 的外发光闪烁。

调整核心参数 freq, amp 以及 loopTime,即可改变设计。


二、场景生成

单颗星星的定义完成,接下来就要实现设计师的终极愿望了:
一 劳 永 逸!

完整的星空图层结构如下图:

图层结构


两个全局控制参数决定星星的形态和整体的循环闪烁表现。分别是「收缩和膨胀」效果、「外发光」样式。
每颗星星 (Star) 的 id 会对自身的各子级属性产生不同的随机量。


按住 CMD+D 复制 Star!一片完全由参数驱动的星空扑面而来。
大繁归简,神奇的复制操作~~~
( •?∀•? )」? ヽ(•?ω•? )ゝ


三、小结


StarryNight 动画是对 近期所学 random 系列表达式的一个应用总结。案例中剥离了核心参数和全局控制来提升调整的灵活度和效率。完全可以傻瓜式地,直接使用「复制」快捷键来创造完整的场景。


整个场景的设计都是从本质规律出发的,这么一来就可以根据不同的需求逐步拆解,写出想象中的动画拉~


星空实际上是一种基础的粒子形态。同样的方法还可以生成「云团」、「烟花」、「撒花」、「爆破」等等常见的动态元素或场景。各位可以在此基础上举一反三。


用一根直线路径生成烟花:


烟花


星轨

Image title


至于研发实现环节,目前业界的 Lottie 方案对移动端的表达式解析还很不完善,对此我还是保留一点期待的。
当前可以使用视频和 apng 等特定的格式来做快速的设计验证。
掌握了核心参数法,视觉和开发 GG 的沟通也会更加的顺滑。
毕竟,他们也是用算法来写的,万变不离其宗——规律。


aep 源文件见文末附件。


附、应用的表达式


noise();//临近随机

random();//随机

id = thisProperty.propertyGroup(2).propertyIndex;//读取第二级父级索引
seedRandom(id,true);//生成随机量,使用 true 让随机值固定,不随时间变化
random();//输出

gaussRandom();//正态分布,10% 随机落于区域外

time*a;//随时间变化,月亮内部加了个湍流置换,效果随时间演化

wiggle(freq,amp);//抖动

clamp(a,aMin,Max);//限制参数a的范围

linear(x, xMin, xMax, output1, output2);//关联线性变化


更新:2025-08-06

下载
收藏

5人已收藏

Jerlin

Live Curious

  • 38

    作品

  • 890

    粉丝

  • 177

    关注

  • 正弦表达式 Math.sin( )
  • circle wave 表达式动画
  • AE 表达式应用——萤火虫
  • 用户体验设计要素:移动应用中的动态微交互

    猜你喜欢

      2025-08-06 原创文章 经验/观点 举报 2993 5 4 0

      Starry Night 表达式动画实验

      0.0°

      你确定要举报Starry Night 表达式动画实验

      如果查出恶意举报,十天内禁止提交任何举报申请。

      0/200

      上传证据: 超过10M的附件请使用网盘地址

      点击上传附件

      对谁可见:

      全部设计师
      • 全部设计师
      • 推荐设计师和认证设计师

      您确认要推荐?

      该作品发布时间:2025-08-06

      评分

      完整度

      启发性

      勤奋性

      排版布局

      推荐心得

      建议20-200字以内

      0/200

      4
      5
      0

      账号或密码错误,请重新输入

      账号或密码错误,请重新输入

      登录

      手机号

      发送验证码 120s 验证码错误

      登录
      第三方账号登录
      什么辣椒香而不辣 脑梗什么意思 尿素测定是查什么 什么水果是降火的 子宫内膜息肉吃什么药
      胆管结石用什么药能把它除掉 纯露是什么 画蛇添足什么意思 腿上长水泡是什么原因引起的 空是什么生肖
      宫颈肥大是什么原因 夏枯草治什么病 什么是焦虑症 ed病毒是什么 突然流鼻血是什么征兆
      985学校是什么意思 嘴唇上长水泡是什么原因 鹦鹉吃什么食物 Mo什么元素 气血虚是什么意思
      2010年属什么生肖hcv9jop4ns4r.cn mc是什么hcv7jop9ns8r.cn 无花果什么功效hcv8jop8ns7r.cn 紫癜是什么病hcv7jop9ns7r.cn 亡羊补牢的亡是什么意思hcv9jop7ns1r.cn
      夜间睡觉流口水是什么原因hcv8jop6ns5r.cn 独在异乡为异客异是什么意思hcv7jop9ns0r.cn 正念是什么hcv8jop0ns1r.cn 肝血管瘤是什么原因引起的creativexi.com 直肠下垂有什么症状hcv7jop9ns6r.cn
      熟啤酒是什么意思hcv9jop7ns3r.cn 2023年是属什么生肖hcv7jop5ns1r.cn 一什么珍珠onlinewuye.com pd是什么元素hcv7jop9ns3r.cn 咸鸭蛋不能和什么一起吃hcv8jop6ns9r.cn
      木灵念什么hcv8jop1ns4r.cn 广州机场叫什么名字hanqikai.com 贲门不舒服有什么症状hcv8jop6ns2r.cn 1990年属马的是什么命hcv9jop4ns8r.cn mk包包属于什么档次hcv8jop7ns0r.cn
      百度