RealFlow 經驗隨記 006 – RealFlow 2013 生成的 Mesh,法線(Normal)方向可能相反

可能導致的問題

這個問題可能造成,當你在MAYA內,嘗試以 Mental Ray 材質表現水或液體時,光線的行為會出現問題,最後無法按照以往的經驗表現出正確的液體。

像是莫名其妙的超高反射率,或者令人頭痛的模糊表面散射(原本的銳利死哪去了?)


狀況描述

其實我被這件事情困擾很多天…哈哈!

簡而言之,一個本來在 RealFlow 5 做過,沒啥大問題的水花效果,不知何時起,突然在MAYA 內再也算不出之前的漂亮水花了… 我用的是 Mental Ray 的 mia_material_x,照理來說,只要調好四個參數,就應該要有起碼的透明效果才對,但是…很奇怪,它的反射率超高的,像下圖左邊這張:

516     517

媽呀~~這是鋼琴鏡面吧!XDDD            正常應該是右圖這樣有反射有折射

四個基本參數是:

  • Diffuse 標籤下的 Color 調成白色
  • Diffuse 標籤下的 weight = 0
  • Reflectivity =1
  • Transparency =1

511

只要調好這四個參數,就會有基本的水的效果(當然,其實有很多其他的選項可以精進,例如 Fresnel Effects,例如 Thin Wall 或 Solid 模式,或者是控制反射)

但是 mia_material_x 的表現就是非常奇怪,這導致水花的效果也非常奇怪,簡直像玻璃一樣 … 讓人吐血,我苦惱好多天… 甚至都打算放棄 mia_material_x ,試著用 blinn 來完成水花了 … MAYA 內建材質似乎就不會有這種奇怪的現象。

對了 … 其實還有令我更莫名的一點,就是假如把反射率調到零,也不能阻止它成為鋼琴鏡面,反射率依舊超高,嗯…我只能說…這真是太奇怪了!

原因發掘

不過,隨著我的吐血,其實我有注意到,如果越垂直水面觀察,就會回覆正常耶?像下圖左邊那張:

519      520

看到左圖下方有正常的折射了嗎? 而且還呈現很圓滑的折射視覺效果。而右圖,近乎垂直的視線,看起來就沒啥問題了…

所以這到底是 …

哈哈 … 你還沒感覺到什麼嗎?
 
 
 

[ … 保持神祕感三秒鐘 … ]

 
 
 
 
這就是全反射啊! XDDDD     只有全反射這玩意,才會在比較垂直的角度有折射,比較側視的角度純反射,嗯…全反射這個物理現象,請參考這些網頁:

挑你看得懂的理解即可。

全反射在 MAYA 內的形成條件

這件事讓我有點挑眉毛 …

為什麼平常我們看水面絕不可能看到全反射? 那是因為全反射的條件是觀察者要在「光密」介質才行,也就是說,你想要看到水的全反射,人要到水面下往水面上看才觀察得到。

那沒事 mia_material_x 幹嘛幫我模擬水下? 它幹嘛反過來? 我明明在 Y 軸的正方向吧? 難道折射率弄反了? 材質折射率其實要改成 1.4 的倒數? 那也不對啊! 我用任意的多邊形物體都很正常,像最上面的右邊那張圖一樣,工作良好 … 那表示餵給 mia_material_x 的折射率 1.4 是正確的。

等等 …

還有一種情況可能會讓 MAYA 把內搞成外、把下搞成上 –就是 Normal Vector !!!

馬上試驗,果然,整個水面的 Normal 朝下!

519

顯示 Noraml 請執行 Display->Polygons->Face Normals  ,好了,到這邊基本上該說的都說了,其實你只需要執行 Normal Reverse 即可解決問題。

所以這也說明了, Mental Ray 材質有依賴於 Normal 方向,而 MAYA 內建材質沒有。

問題根源

如果你喜歡追根究柢,可能還會想知道,到底是哪個環節出問題?

嗯 … 我作了一下試驗,得到的結論是:RealFlow 2013 的 Alembic 會有這個問題!

我的步驟如下:

1. 用 RealFlow 5 製作一個 Realwave (儲存為 .sd ) ,跟一個水花 Mesh ( 儲存為 .bin 檔案) ,匯入 MAYA ,賦予  mia_material_x 並調好四個參數,結果一切正常。

520

2. 同一份檔案,用 RealFlow 2013 打開,重算一遍 Realwave 、重建一次 Mesh,然後一樣分別儲存為 .sd (Realwave)  與 .bin (Mesh) ,再匯入同一個 MAYA 場景,賦予同一個 mia_material_x,結果一切正常。

522

3. 附加說明,雖然我上面兩張圖忘記把水花也賦予材質,不過水花也沒問題,其 Normal Vectors 也都正確朝外。

4.  在RealFlow 2013 內,到 Export Central ,勾選Realwave 與 Mesh 的 alembic sequence,將他們儲存為 Alembic format。

5. 用 Stitcher Tool 把多個 Alembic 檔案合併,然後匯入同一個 MAYA

6. 賦予同一個 mia_material_x 材質,果然發現鋼琴鏡面般的全反射又出現了 XDDD

7. 結案,總之 … 若使用 RealFlow 2013 的 Alembic 格式,匯入 MAYA 以後要注意 Normal Vector 的方向

補充、其實 Alembic 相關問題不只這樣,其它我目前遇到的還有:

  1. 上面 Realwave 是用 sd 格式存沒問題,但在 2013 用 .bin 儲存,同時又勾選 Alembic 的話, .bin 儲存的 Realwave 似乎也會出現 Normal 反轉的問題。
  2. 座標可能會差90度 (匯入MAYA後要手動轉 Y 軸 90 度)
  3. 在 RealFlow 2013 內,如果在 Export Central 內,Mesh 有勾選 Alembic ,並且建置 Mesh 完畢之後,若你拉動時間滑塊檢視,就會發現原本該有的 Mesh 不見了,卻有一組迷你縮小版 Mesh 在跑,像這樣:

5299

  • 其實解決方法很簡單,趕快將 Alembic  去勾選,再檢視就沒問題。
  • RealFlow 也可以讀 Alembic 當成 Cache ,所以他優先讀取 Alembic 當成 Cache,可你的場景  Scale 有縮小,所以…他忘記把 Alembic Cache 的 Scale 給還原了,就變成迷你版囉!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料