返回文章列表
技术

流体不是特效,是一种世界观

2 分钟

我们花了十年把界面做"平",现在又花十年把它做"活"。这不是循环,是螺旋。

平面设计解决的是信息密度,流体设计解决的是注意力路径

#为什么是流体

人对流体有毫秒级的直觉。看到液体流动,你不需要学习就知道它会往哪走、什么时候会汇聚、什么时候会断开。这是免费的认知带宽。

而按钮的"点击态"要教,抽屉的"从哪滑出"要教。

#光线步进:用数学画一团东西

传统 3D 是"给我三角形",光线步进是"给我一个距离函数"。后者对流体极其友好,因为两个球体的融合只需要一个平滑最小值:

float smin(float a, float b, float k) {
  float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0);
  return mix(b, a, h) - k * h * (1.0 - h);
}

k 是"表面张力"。k 越大,两团东西越黏,融合时的颈部越粗。调这一个参数,你就在调整整个画面的"材质心理"。

你现在看到的背景,就是四个运动球体加一层域扭曲(domain warping)的结果。没有模型文件,没有贴图,全部是每一帧现算的数学。

#三个不要

  • 不要让流体抢主体。它的亮度上限我压在 40% 左右,文字用差值混合叠在上面。
  • 不要满帧全屏渲染。渲染分辨率降到 0.55 倍,人眼几乎看不出,GPU 省一半。
  • 不要在滚动时继续算。视口外直接停掉 requestAnimationFrame

#流体的克制

真正好的流体设计,用户说不出"这里有个动效",只会说"这个网站很舒服"。

特效是被看见的技术,设计是被感受的技术。

一旦你的流体开始被人截图讨论"这个球好酷",就说明它超标了。

余烬电台

40 首 · 网易云源