Re: [請益] 有沒有動物毛髮的fins & shells技術教學?

作者: cjcat2266 (CJ Cat)   2017-09-08 02:33:46
: 難道是要 同一隻動物模型複製三層 然後同時綁同一個骨架骨架
: 外面幾層用透明毛髮材質嗎...?
就我所知的方法有三種
方法一就是土法煉鋼
在建模工具理面自己手動作出不同毛髮層
優點是每層都可以精確手動控制
缺點就是...費工,而且不方便與動態毛髮效果整合
方法二是把方法一的手動部分搬到vertex shader或geometry shader
用vertex shader的話,就是同一個mesh畫多次
每次畫的時候傳入vertex shader的毛髮參數逐漸改變
例用毛髮長度參數和normal,把vertex往外推出層新的一層
另外搭配毛髮粗細參數、密度、亂度在每一層的漸變,調出想要的效果
用geometry shader就是把上數的多次繪製
結合成一步,一次生成所有毛層,再一次繪製
http://www.xbdev.net/directx3dx/specialX/Fur/
http://www.catalinzima.com/xna/tutorials/fur-rendering/
方法三是ray marching
用手動方式或geometry shader把mesh複製一次,往外推到最外層
然後在pixel/fragment shader階段用ray marching的方式計算每個像素的顏色
原理是從攝影機往每個像素的射線逐步推進取樣
搭配mesh的毛髮材質代表的參數反推毛髮佔據的空間
兩個射線取樣如果從毛髮空間中穿過
表示該像素需要繪製毛髮,接下來從取樣位置和毛髮參數推算最終顏色
https://www.shadertoy.com/view/XsfGWN
方法一和二因為是實質上分層的關係
近看會有看得到多層平面的瑕疵
而ray marching的分層瑕疵則是來自於射線取樣過疏
解決方是當然就是增加層數或者降低射線取樣間距
這就要在效果跟效能之間取平衡了
這也凸顯了方法二和三的動態調整優勢
方法一就只能手動增減層數,方法二和三可以調整個參數就了事
沒有做過效能比較,這個有興趣就得自己去研究了
以上
作者: teeheehee (軟尾拋拋翔(′・ω・`))   2017-09-08 08:18:00
感謝解惑

Links booklink

Contact Us: admin [ a t ] ucptt.com