看板 GameDesign 關於我們 聯絡資訊
: 難道是要 同一隻動物模型複製三層 然後同時綁同一個骨架骨架 : 外面幾層用透明毛髮材質嗎...? 就我所知的方法有三種 方法一就是土法煉鋼 在建模工具理面自己手動作出不同毛髮層 優點是每層都可以精確手動控制 缺點就是...費工,而且不方便與動態毛髮效果整合 方法二是把方法一的手動部分搬到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的分層瑕疵則是來自於射線取樣過疏 解決方是當然就是增加層數或者降低射線取樣間距 這就要在效果跟效能之間取平衡了 這也凸顯了方法二和三的動態調整優勢 方法一就只能手動增減層數,方法二和三可以調整個參數就了事 沒有做過效能比較,這個有興趣就得自己去研究了 以上 -- Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.43.15 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1504809233.A.FA1.html ※ 編輯: cjcat2266 (160.33.43.15), 09/08/2017 05:05:41
teeheehee: 感謝解惑 09/08 08:18