untiy 利用法線做高效3D模型 邊緣泛光

2021-10-08 02:37:30 字數 925 閱讀 4205

在unity3d專案中,當選中乙個3d模型,需要對其做乙個外觀的變化,來表現乙個互動。

經常是以描邊或邊緣泛光的形式來處理。

描邊的效果經常都是通過兩個pass來實現的,1個輸出 沿著法線發現 放大的模型,再統一著色,這個顏色就是描邊的顏色。另乙個則直接輸出。由於第乙個沿著法線有做放大,所以就能實現描邊的效果。

而邊緣泛光則只需要乙個pass解決。當然效果有點區別,這個看需求而定。

思路:核心就是邊緣檢測,通過視向量和頂點的法向量的點積來實現。當兩個向量的夾角越大,越靠近邊緣。依賴這個做顏色強度,和紋理顏色做差值運算 就可以了。

沒有邊緣泛光效果

加上內邊緣泛光效果

br = pow(br,3.0);這裡的數值可以使用外部變數來控制邊緣區域的大小。

其他的**注釋已經非常詳細了,我這裡就不做太多講解。

nplot用法(線 柱 標籤 移動窗體)

myplot.clear 加入網格 grid mygrid new grid myplot.add mygrid myplot.title 測試 lineplot lp new lineplot double a new double string b new string double ab ne...

Thread的join的用法(執行緒執行排序)

執行緒必須要先start,才能join,只有啟動了,才能對執行緒進行操作。如有乙個執行緒叫a,那麼請看以下示例 a.start 啟動a執行緒 a.join 邀請a執行緒先執行,本執行緒先暫停執行,等待a執行緒執行完後,主線程再接著往下執行 system.out.println ok 這句話,要等到a...

gdb便利用法

1,不退出gdb,執行shell命令 gdb shell ls a.out foo more.c pipe1.c test1.c test.c gdb shell gcc test.c g 2,不退出gdb,執行make命令 gdb make3,儲存gdb 命令的輸出到乙個檔案裡 4,path和環境...