2016/02/15

Phoenix FD - Ship Tutorial航行的軍艦逐字翻譯



作者 / tsetso
編譯 / Hammer Chen

Hi 大家好我是 tsetso。這集教學裡面我們將介紹安裝PhoenixFD 2.0所附的船場景。我們將從頭建構場景,我們會先設置單位、船的長寬與運行速度,設定好後,我們將建置PhoenixFD模擬器,設定泡沫與飛沫。最終我將展示如何設定算圖,讓我們開始吧!

最重要的一件事,很多人會搞混的是單位設置。其實沒有所謂的正確單位,例如歐洲使用的是公制單位,我用公尺會很方便,但如果你住在英國,你可能會用英制單位,因此最重要的不是單位,而是尺寸。例如船如果是150公尺, 是正確的,如果是430英呎,也是對的。可是如果船是1000公尺,這樣的尺寸就是錯的。PhoenixFD在設計的時候是對正確的尺寸,如果你用了錯誤的尺寸,那就會很麻煩。因此請記住要使用正確的尺寸,這樣模擬時就會方便許多。

範例檔案裡面, 1 unit= 20 centimeters ,但為了簡化我改成 1 unit = 1 meter 。我也把home grid設定大一些,設定為10 meters 。為了要設定正確的戰艦尺寸,我上網查了一下, 船的長度是154公尺,寬20公尺。我在場景放了一個box 作為對照之用。

接著我設定船的動畫,啟用auto key。在1000 frame中,移動船400公尺。我用計算機算出船的航行速度,換算成每小時的移動速度。我上網查了一下,這樣的速度有點慢但可以。將動畫曲線設定為線性。

在場景中創建PhoenixFD Simulator。 我們不需要建立一個大的grid 包含整個航行的範圍。只需要讓grid包含在船的周圍就可以了,在尾部的地方留多一點空間, z軸的高度也可以矮一點 只需要涵蓋在吃水線的地方就可以了。這時候我撥放動畫,你會發現船移動到grid範圍之外了 我們可以把grid連結到船。這是很厲害的製作方式, 因為我們只需要很小的simulator 我們可以花更少時間 模擬更多細節,但請記得要勾選"Initial Forces"。

提高解析度到約一百萬個cell。 Enable Liquids, 設定initial fill up。上網查看船的吃水線是多少的,因此知道大約的高度。據此將initial fill up設定為40。

關閉所有其他的Preview,勾選show mesh。至rendering 切換到ocean 將ocean level設定為40,因為initial fill up也是40。(譯者注:否則會產生如下圖的高低差)

模擬一下。我不喜歡船尾的模擬效果,因此我在船尾放了一個box ,利用這個加上liquid source, 這樣才能在船尾產生好看的波浪。到heper/ phoenixFD Liquid source,Add box。  discharge設定為14,polygon ID=1,這樣水才只會在指定的面產生液體。再次模擬,模擬完後在船尾產生我想要的波形。

提高模擬解析度 我希望達到14百萬個cells Dyamics則是要確定conservation是symetric類型,適合用在海洋,特別是這類的模擬,因為我希望船頭的波浪是對稱的,我也提高Quality由30 至50。這是我之前的模擬結果,你可以看到如果把Quality設定為30 波浪跑到了grid範圍外,被切到了。將Quality提升至50就不會再發生了。Step of frame設定為4, 因為船移動的相對快。

重新模擬。最後我很滿意這樣的結果 15百萬個cells產生了足夠的細節,我想目前波浪的品質夠好了,可進入設定splash與foam的階段。

enable splashes,這時會跳出shader選擇YES。為了讓splash產生foam,將foam on Hit由0設定為1。Enable foam 會產生另外一個shahder,把foam的rate設定為0, 確保foam不會直接產生,現在只有splash會產生foam。

改變解析度到1.5百萬,關閉mesh顯示,啟動foam 與splash的preview 接著進行模擬。結果出來了!首先我發現到的問題是foam被grid切到了,因此我要把outside life提高。提高至20,代表20秒。我也要提升splash的outside life,避免splash被simulator的範圍卡到。現在你看到foam跑到simulator之外了!目前foam飛的過高,我將Rise speed大幅下降,也減少falling speed。 falling speed其實是直接作用於粒子的力場。將splash的air friction 提高很多,這樣可以避免單一個粒子飛到太高,因此將數值設定為100。

我發現foam的尺寸過大,前foam size是30 m太大了,改成0.03。提升variation。提高一點distribution, 這樣就不會有太多大泡泡。接著我們來看splash的尺寸,這裡我只需要提高variaion,因為尺寸的variation總是好事。

現在我要減少bubble to bubble interaction,因為bubble的尺寸夠大,足以黏再一起,因此不需要如此強烈,如此模擬會稍微快一些,因為bubble to bubble會消耗很多模擬資源。因為你必須要個別處理粒子,因此我把數值設定為1。

看一下參考圖片,你看水花的圖案非常的細微。把Foam的Patterns Size設定為1.6。模擬結束可以看到pattern形成。現在減少half life 設定為0.5。將splash rate設定為10 產生更多粒子。我發現10可以產生足夠的粒子,並且把threshold提高至20。 Splash Export Velocity 這樣才能渲染motion blur。

現在把解析度再調高至51百萬,經過22小時候,我們得到結果,等待是值得的,得到了很多細節,現在你可以在viewport直接預覽海浪的displacement了!

到rendering tab/ Enable displacement/ type: Vector。 現在必須要指定map,放入PhoenixFD Ocean texture 將wind speed設定為5 meter。

我可以最佳化viewport的顯示,關閉mesh preview,關閉splash,提高detail reduction,這樣播放動畫時會快一點,現在來設定水的材質。

在場景中放置vraysun,取消勾選visible。將shadow subdivision調低為1。(譯者注....後面都是算圖設定,省略不翻譯)

No comments: