當前位置: 華文星空 > 心靈

如何透過想象畫出水?

2020-10-13心靈

其實也很簡單,我們都知道水正常情況下是一種透明的流體,那麽就可以開始了:

第一步 我們要想清楚水是什麽樣的 形狀 ,如果是一坨立方形的水,那看起來肯定不像水。為了簡化問題,我們不妨為要畫的水設定一個初始形態,然後把這一灘水分解成很多小顆粒。對每一個小顆粒套用納維斯托克 (Navier–Stokes)方程式:

\frac{\partial \textbf{u}}{\partial t}=-(u\cdot \triangledown)\textbf{u}+v\triangledown^{2} \textbf{u}-\frac{1}{d}\triangledown p+f

其中u為速度場、p為壓力場、v為速度、d為密度、f為外力、倒三角Del代表

\left( \frac{\partial}{\partial x}, \frac{\partial}{\partial y}, \frac{\partial}{\partial z} \right)

重復想象幾十幾百次就可以知道水的外形是什麽樣了,顆粒細分越多,結果就越貼近生活!

第二步 開始 上色 。首先我們要想清楚主光源在哪裏,以確定大致受光。同時因為水是非常光滑的,會反射周邊環境,我們也需要考慮周圍是什麽樣。我們可以把周圍的環境濃縮在一起想象成一個球,然後想象這個球發射的光照射到我們那一攤水上是什麽樣子。

我們首先要想象光到達水面時的衰減程度,即有多少亮度在傳播過程中損失了。這個問題可以方便的透過平方反比定律得出:

\text{intensity}\propto \frac{1}{{\text{distance}}^{2}}

當光到達水面時,一部份被反射,一部份被折射。所以我們需要考慮有多少光是反射,多少是折射。一般來說,入射角度越大,反射越多;入射角度越小,折射越多。但具體是多少呢?這裏我們可以使用菲涅爾等式 (Fresnel equation),但更容易想象的是雙向反射分布函式 (Bidirectional reflectance distribution function),即:

f_{\text{r}}(\omega _{\text{i}},\,\omega _{\text{r}})\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{\operatorname {d} E_{\text{i}}(\omega _{\text{i}})}}\,=\,{\frac {\operatorname {d} L_{\text{r}}(\omega _{\text{r}})}{L_{\text{i}}(\omega _{\text{i}})\cos \theta _{\text{i}}\,\operatorname {d} \omega _{\text{i}}}}

其中 \omega _{\text{r}} 是面對眼睛的向量, \omega _{\text{i}} 是面對光源的向量。和第一步一樣,只要把水面分成很多小塊,逐一處理就能想象出整體的水會是什麽樣子。

這樣想象出來的結果還是單一的光強,為了把水畫的色彩斑斕,只需要把上述過程重復兩遍,得到 \left( R,G,B \right) 的格式就可以啦!

怎麽樣,很簡單吧!

上邊雖然大多是玩笑,但想把水畫像,不清楚反射折射是很困難的。當然水在卡通化、風格化或漫畫作品中的處理還是有套路可循的,只要不是零基礎小白或是「繪圈太太」,稍加臨摹都能掌握。