2016/11/28

PhoenixFD 3 simulation and rendering tips

by Hammer Chen

People have been asking me about how to create a splash, or how to render out Mist with PhoenixFD 3. Here I made a very short tutorial how to do it.

1. Elements
You have four elements to create a splash shot: liquid mesh, foam, splash, and mist. The last three are particles, have to render out by PhoenixFD dedicate Particle Shader. Liquid mesh is animated geometry. During simulation, the liquid mesh will generate Splash particles, and those Splash particles will split into Mist particles. And those Mist particles might convert back to liquid mesh; all depends on the threshold you set.

2016/11/26

Beta tester與軟體公司該做的事

文 / Hammer Chen

Beta tester該做的
1. 用軟體
   - 正常使用
   - 壓力測試 (高解析度的模型、high grid resolution...等等)
   - 流程測試
2. 回報bug
   -要能重現bug   簡化場景, 簡化至剛好可以重現bug寄給原廠
   -提供作業系統 軟體 額外使用的外掛的版本號
3. 提供wishlist意見,加到新增功能清單中。這時候可以私心加入自己想要的功能

軟體公司該做的事
1. Beta版到底有哪些新功能? 要列清單寫清楚。因為有時候beta tester拿到軟體,高高興興裝起來以為有什麼驚奇的東西,結果摸了老半天不知道新版到底多了什麼 ...
2. 要提供beta tester回到舊版的機制。Beta tester其實比其他同行更早裝了新軟體,很酷以外也擔負了風險。現行的專案可能因此爛掉。軟體公司要讓測試員能隨時回到stable build穩定版,無後顧之憂。 

PhoenixFD and VRay benchmark參數與算圖數據


文 / Hammer Chen

PhoenixFD以VRay渲染foam/splash/mist以預設參數會耗相當多時間。以下是很粗略參數的效能評測,可讓原本耗費1小時的圖減少至1~2分鐘,品質降低在可接受的範圍。

2016/11/16

V-Ray導入alShaders shader

原文 / v-rays implementation of the anders langlands alsurface shader
略譯 / Hammer Chen

(圖片請見原文連結)
alSurface shader的歷史
alShaders中的“al”是以作者Anders Langlands來命名的。 他目前任職於Weta Digital的VFX sequence主管 。他寫了一系列針對Arnold渲染器的shaders Anders的動機是希望導入製作上需要的shaders到Arnold原本沒有的功能中。其中一個他寫的最重要的shaders就是alSurface shader 也被稱為uber-shader,這個shader被大家拿來用在實體 、金屬、 透明物、 反射物,甚至次表面反射, 例如皮膚材質。他寫的shaders一直在業界廣為推崇, 但是其中最為津津樂道的是能重現皮膚材質。最近他開放了shader的原始碼, 讓其他人可以植入到別的渲染器中。他甚至開了一個網頁專門介紹他的alShader。

V-Ray首次導入alSurface shader
由於許多V-Ray用戶的要求 Luc Begins在V-Ray論壇上, 加上這個shader現在已經是開放程式碼的。 Vlado決定要植入alSurface shader的部份功能, 特別是皮膚材質的部份。這個shader會考量到diffuse, 兩階的specular與次表面散射, 唯一缺乏的部份是折射與透明度, 可能之後會添加進去。以下是V-Ray的alSurface shader的分解說明:

由於導入alSurface shader的目的是圍繞在皮膚材質, 因此我們來看看跟其他的皮膚材質 Arnold中的aiSkin shader與VRay Skin Mrtl這三者有什麼差異 (事實上作法很類似)

以下是差異點:
Diffuse: 
VRay Skin Mtl: Diffuse 與 Sub-Surface color事實上是兩個不同的map然後以diffuse amount混合在一起。
alSurface: Diffuse與 Sub-Surface color用的是同一張map, 然後有一個SSS控制surface如何受到subsurface scattering與Lambertian diffuse的影響

Sub-Surface Scattering次表面散射:
VRay Skin Mtl:有三階的次表面散射, 每個都平等地混合在一起,使用了標準的dipole model計算SSS
alSurface:同樣也有三階的SSS, 但是每個各有權重控制, 也提供幾種SSS模式 。Vlado已經導入了其中兩種到V-Ray版的alSurface shader Diffusion法, 可以比標準的dipole model保留更多細節 Directional法 允許使用單一個Scatter maps 產生更多的細節保留。

Specular高光:
VRay Skin Mtl: 使用了兩個lobe specular模型, 具有銳利的 與廣的反射, 同時使用Phong作為reflective BRDF 。這個模型在很多狀況都很好用, 但是在平視(glancing angles)的角度時 他會因此減切到SSS 產生變暗的問題。 這是因為Fresnel效應是根據一個函數計算觀察角度與表面法線角度 ,而忽略了從光線照明表面的方向

alSurface: 這個模型也用了兩個lobe specular , 但是除了使用如Phong或Blinn的平滑BRDF 它還此用了微表面(microfacet) 。Fresnel效應則是根據一部分BRDF的計算(也就是所謂的glossy Fresnel) 並且會考慮到觀察的角度, 表面法線與光線的方向 ,使用者可以選擇GGX與 Beckmann BRDF兩種模型 根據微表面的特性 可以避免掉變暗的問題 從平視角度到逆反射(retro-reflection) 除此之外這個模型在同樣的平視角度不包含SSS。

其他明顯的差異
用在Fresnel的IOR在兩個shader都不同, 因為計算fresnel的方式有所不同。 因此, 如果用戶使用相同數值 alSurface shader的看起來會反射更強。

VRay Skin Mtl使用glossiness 因此高數值就更光亮 而alSurface shader使用roughness因此數值越高就越diffuse 因此貼圖就必須要先反轉 如果你要轉換套用的話

VRay Skin Mtl以diffuse混合 表示數值1等於100% diffuse,  alSurface shader則是根據SSS混合 表示數值1等於100% SSS 如果你有用到貼圖Single Scatter Map 可能也需要反轉才能套用

[相關資訊]
alSurface shader Wikihuman project

2016/11/13

Phoenix FD best videos

Some of the best videos by using ChaosGroup PhoenixFD. For more videos, you could follow on my pinterest. Enjoy~



2016/11/09

PhoenixFD optimization效能最佳化


編譯 / Hammer Chen
翻譯了幾篇跟phoenixfd效能最佳化的討論,大部分都跟splash與foam的算圖有關,因為這兩個影響算圖甚鉅。可是要產生寫實的海浪水花,這些splash與foam卻都是關鍵。

2016/11/04

PhoenixFD 3.0 for 3dsMax Review測試報告


文 / Hammer Chen

優點
  • 快速設定預設Quick Setup presets,迅速上手14種特效情境
  • scene scale場景尺度參數方便全局調控模擬效果
  • 全新的FLIP Solver,比起舊版可更輕易模擬大量細節的液體
  • smoothness控制,有效減少grid artifact
  • 新的PCG Solver,massive vorticity可以產生更寫實、帶細節的煙霧、爆炸
  • fire有獨立的opacity控制,可製作更寫實的火焰
  • 可模擬水花、泡沫與霧氣,將寫實度提昇更高層次
  • 直接降速,就可以達到不錯的慢速流體效果
  • 業界領先,非常直覺的模擬後變速控制
  • 新的force類型,可產生變化多端的效果
  • 支援輸出Alembic格式

缺點
  • 缺乏專門的render elements,無法直接分開smoke與fire
  • 無法模擬rigid body dynamics
  • 缺乏狀態控制,無法靈活地控制轉換狀態
  • 變速與增加細節的cache都共用在Resimulation底下,應該要獨立分開

距上次筆者發表PhoenixFD 2.2版的測試報告又經過了六個月(點這裡觀看閱讀)。這段時間,有幸參與了PhoenixFD每日的nightly測試版,也因此能在短時間與各位讀者分享這次令人期待的新功能! 一套外掛要同時模擬水 、做火、做煙霧、甚至還要能渲染粒子,這本來就是野心很大目標,可以想見程式設計本身的困難度,以及使用者介面設計的棘手。