HOU211學習總結

關於fxphd HOU211 - houdini ocean effect的學習總結

*分類進行總結,非按流程順序

類別分爲:
boat(geo/ani),
ocean_procedual,
ocean_sim,
foam,
white_water


boat_geo

這裏要做的事情就是設置碰撞體,將不必要解算的東西刪除,等一些列的cleanup,合併點,加N之類的,沒什麼好說的。

boat_ani

這個教程中的做法還是值得學習的,用sop模擬出boat在海洋中上下顛簸,牛逼的是還能配合海浪起伏。
具體做法:
1. K一個船的基本的行駛方向;
2. 就是在穿身底部建一條線,讓這條線,跟隨船移動(可以依據船身的bbox建立),resample 3個點即可(3個點足夠反映船隨浪的運動趨勢);
3. 讓這條帶有船基本運動方向的線的點緊貼海洋表面,可以用wrangle的intersect方法(vop也可以,wrangle計算比較快),同時帶有海洋表面的N,用attribute promote的方法平均這三個點的P,N,變成一個點,讓這個點帶有平均後的P,N;
4. 根據點的N利用2次cross product,計算出aim,up(N),side,up就等於N,用float to matrix轉成一個3*3矩陣,將aim,up,side視爲x, y,z座標系,再利用extract maxtrix求出translate,rotation,給到obj層級下的null obj用作locator,建立一個geo裏面包含靜態的船,作爲locator的子物體;
這裏寫圖片描述

5 這樣會發現船運動不夠平滑,因爲translate和rotation都是根據點的N算出來的,所以在chop中用geo節點導入N屬性,用filter節點平滑,配合lag節點做船運動的延遲效果,最後在sop用channel節點導入平滑好的N;
*進入chop之前,需要將進入chop的節點結果做一個cache(cache節點)
*攝像機也可以用這種方法,可以多點平滑和延遲。


ocean_procedual

ocean surface中會有多個grid,ocean_evaluate,但只有一個ocean_spectrum,這裏說的ocean_procedual就是一個巨大的grid,只要能覆蓋鏡頭就好. 因爲houdini ocean都是考貼圖的置換給出的foam和海洋細節,需要實現導出displacement map纔會渲染出置換(ocean_evaluate),在rop中用compsite節點back map比較方便. 這樣渲染出來因爲grid的拓撲是規則的,所以置換的運用都是重複的,需要在sop noise一下grid的拓撲(xz軸).


ocean_sim

  1. 因爲教程中建立splash的方法就是用工具架上的splash tank,因此會自動建立ocean sim和white sim;
  2. 在建立發射源階段需要修改ocean_specturm以匹配原來的ocean,之後讓發射源(ocean_source節點)的範圍依據船的bbox設置,讓source能跟隨船運動
  3. 解算階段沒什麼好說的,設置好碰撞體和flip的splash的程度就好了
    *增大flip的splash的幾種方法:
    (1)flip solver - collision - velocity scale 增大
    (2)surface extrapolation 減小
    (3)velocity smooth 減小
  4. 解算之後的粒子用vdb生成mesh三(可以適當配合vdb reshape sdf),mesh需要保留粒子的v,N,保留mesh 表面,可以用intersect的方法比較方便,速度也快;
  5. 讓mesh的邊緣有更高的ocean細節,需要事先建立一個高細分的grid帶有海洋燥波,導入,用intersect的方法,讓mesh投射到高細節的grid上,再與原mesh做邊緣的blendshape,將uv屬性也傳遞過去;
    這裏寫圖片描述

  6. 用measure節點計算curvature,結合solver,作出mesh上foammask屬性,用到ocean surface shader中的foammask.
    *渲染海洋高細節置換的方法在back map的時候,在該cop下用,先blur 再減去源displace,可以得到相當高的置換貼圖.
    這裏寫圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章