iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
2
Modern Web

寫給工程師的 WebGL 學習心得系列 第 24

[WebGL - Day24] Metaball (1/2) - 原理與在 Photoshop 實作

  • 分享至 

  • xImage
  •  

Metaball 是一個電腦圖學裡的理論,中文 wiki 叫 元球,也有稱呼為變形球、黏黏球等
是很經典的效果
在3D軟體、After Effects、CSS濾鏡、Photoshop、shader 都可以找到各種實作


three.jsmarching cubes
three.js - Metaball

CSS 濾鏡實作Metaball & goo effect Experiment
three.js - Metaball

本偏先介紹 Metaball 原理,會在下篇使用 shader 實作

雖然 three.js 的 Metaball 也是 shader 的實作,
但這兩篇會以 模糊濾鏡 + 增加對比 的方式來說明 (類似 CSS 濾鏡的 2D 效果)


Photoshop 與 CSS 實作 Metaball

我學習這個效果時是先看到朋友的文章 噁心黏黏球 ( 純 CSS)

本文不討論 CSS 濾鏡與CSS動態,這部分的內容可參考朋友的文章

先準備兩個有模糊的圓(紅球藍球)
Photoshop - Metaball-1
對比 調高

Photoshop - Metaball-2

就是 Metaball 的效果了 (兩球交界的 紫色 部分)
Photoshop - Metaball

拉高對比的原理

除了直接用 亮度/對比 拉高對比外,
拉高對比的原理,看起來是:

  • 最亮的部分還是最亮最暗的部分還是最暗
  • 接近中間值時,一次拉大輸出顏色的變化

改用 曲線 濾鏡時,將曲線調整到大約 50% 時直接 拉陡
Photoshop - Curves filter

看起來差不多
Photoshop - Metaball-3


補充曲線濾鏡:

我將先前影片部分截圖後進 Photoshop ,並套上 曲線濾鏡
預設值,輸入 0,輸出 0;輸入 255,輸出 255
Photoshop - Curves-1

輸入 60,輸出 0;輸入 170,輸出 255
Photoshop - Curves-2

輸入 128,輸出 0;輸入 130,輸出 255
Photoshop - Curves-3

也就是上述的 輸入接近中間值時,一次拉大輸出顏色的變化
結果與直接使用 亮度/對比 濾鏡的 拉高對比 效果相同了


本篇多說了一些 輸入/輸出 的結果,
是為了在下篇在 Shader 裡使用 smoothstep() 控制 輸入/輸出 的曲線

本篇只提到了 亮度/對比 中的 對比
亮度 同樣可從 輸入輸出 調整出對應的結果喔!


上一篇
[WebGL - Day23] Ascii Filter 與實作
下一篇
[WebGL - Day25] Metaball (2/2) - 在 Shadertoy 上實作與可應用效果
系列文
寫給工程師的 WebGL 學習心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
King Tzeng
iT邦新手 3 級 ‧ 2019-10-11 08:21:25

哇!!好帥啊!!/images/emoticon/emoticon32.gif

也可以用 CSS 做這效果,很有趣喔!

有~之前有看過黏黏球的CSS應用,覺得很酷很有趣!!/images/emoticon/emoticon37.gif

我要留言

立即登入留言