You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Processing 3着色器实现粘滞效果(Gooey Effect)

粘滞效果(Gooey Effect)实现指南

嘿,我来给你拆解一下怎么实现这个超酷的粘滞效果——那种看起来像Blob一样软乎乎、能互相融合的运动效果,其实原理和实现都比你想的简单!

核心原理

这个效果的本质是靠SVG滤镜的组合魔法:

  1. 先给移动的元素(比如椭圆、圆形)加上高斯模糊,让它们的边缘变得柔化模糊;
  2. 再通过「颜色矩阵滤镜(Color Matrix Filter)」专门提升Alpha通道的对比度——模糊后原本淡的透明区域会被彻底压成透明,深的不透明区域会变得更实;
  3. 两者结合,就会让元素在靠近时产生“粘在一起”的融合感,形成类Blob的运动效果。

具体实现步骤

1. 准备可移动的基础元素

先用HTML和CSS创建几个会动的椭圆(或圆形),比如让它们在容器里做随机轨迹的动画:

<div class="gooey-container">
  <div class="ellipse ellipse-1"></div>
  <div class="ellipse ellipse-2"></div>
  <div class="ellipse ellipse-3"></div>
</div>
.gooey-container {
  position: relative;
  width: 400px;
  height: 400px;
  /* 关键:把SVG滤镜应用到容器上 */
  filter: url(#gooey);
}

.ellipse {
  position: absolute;
  border-radius: 50%;
  background: #2563eb;
}

.ellipse-1 {
  width: 80px;
  height: 120px;
  animation: move1 4s infinite ease-in-out alternate;
}

.ellipse-2 {
  width: 100px;
  height: 90px;
  animation: move2 5s infinite ease-in-out alternate;
}

.ellipse-3 {
  width: 70px;
  height: 100px;
  animation: move3 3.5s infinite ease-in-out alternate;
}

@keyframes move1 {
  from { top: 20%; left: 20%; }
  to { top: 60%; left: 70%; }
}

@keyframes move2 {
  from { top: 70%; left: 30%; }
  to { top: 10%; left: 60%; }
}

@keyframes move3 {
  from { top: 40%; left: 60%; }
  to { top: 70%; left: 20%; }
}

2. 定义核心SVG滤镜

在页面任意位置插入一个隐藏的SVG(宽高设为0不影响布局),里面定义我们需要的滤镜:

<!-- 隐藏SVG,仅用于定义滤镜 -->
<svg width="0" height="0" viewBox="0 0 0 0">
  <filter id="gooey">
    <!-- 第一步:高斯模糊,stdDeviation控制模糊程度,数值越大越糊 -->
    <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blurred" />
    
    <!-- 第二步:颜色矩阵,重点提升Alpha通道对比度 -->
    <!-- 矩阵的最后一行对应Alpha通道:0 0 0 [对比度倍数] [偏移值] -->
    <!-- 倍数越高、偏移越负,Alpha对比度越强,融合效果越明显 -->
    <feColorMatrix
      in="blurred"
      mode="matrix"
      values="1 0 0 0 0
              0 1 0 0 0
              0 0 1 0 0
              0 0 0 20 -5"
      result="gooey-effect"
    />
    
    <!-- 可选:把原元素的颜色叠加到处理后的效果上,避免颜色被模糊淡化 -->
    <feComposite in="SourceGraphic" in2="gooey-effect" operator="atop" />
  </filter>
</svg>

3. 调整参数优化效果

  • 高斯模糊的stdDeviation:根据元素大小调整,元素越大可以设得越高;
  • 颜色矩阵的最后一行数值:比如0 0 0 20 -5,如果觉得融合不够强,可以增大倍数(比如改成30)或调小偏移(比如改成-8);反之如果效果太夸张,就降低倍数或增大偏移。

内容的提问来源于stack exchange,提问作者solub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:10:44