(转)海岸线提取完成, 海浪排岸效果
生活随笔
收集整理的這篇文章主要介紹了
(转)海岸线提取完成, 海浪排岸效果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當前這個里程碑, 并不會加入此效果, 那是下個里程碑的問題.
但是我已經先做了, 可能還有一些細節問題需要好好修改下.
效果圖如下:
海邊沙灘浪花
小島周圍的環形浪
要實現此效果, 最關鍵的是海岸線模型的生成, 要生成海岸線模型, 首先就必須提取出海岸線來, 首先水面是一個平面, 他將地形切割, 切割的邊緣就形成了海岸線, 那么其結果絕對不只是一條連續的邊. 可能有多條不連續和多條封閉的邊組成. 如果能成功的提取出這些邊來, 那么你就已經成功了80%了.
算法大致如下:
遍例地形的所有三角形, 找出其中三角形與水平面相交的, 求出其相交線段, 將所有的線段儲存到一個總表中.
這些交線段其實已經是海岸線的組成邊了, 只不過他們組織沒有規律, 無法用他們形成多個獨立的mesh. 下一步就是要把相接的線段串起來, 首先我們生成一個空表1, 然后把總表中的第一個線段放入, 并把總表中這個線段刪除, 然后繼續遍例總表中剩下的線段, 只要能接到表1中頭部, 和表1中尾部的線段, 就分別插入到表1頭或者表1尾, 并刪除總表中的這些線段數據, 最后當總表中再沒有能添加到表1的線段了, 則表示表1已經生成完成, 然后再把總表中的第一個元素放到表2, 同樣的算法又會把表二生成完成, 最后只到總表的數據為空, 則表示海岸邊生成完畢.
這樣, 表1, 表2, 表3 .... 就表示每條海岸線的邊數據了. 如果要生成海岸的mesh, 則沿海岸向外擴展下, 形成第二條邊數據. 有了這些數據就可以生成mesh了, 怎么畫隨便你, 這里推薦用 Triangle Strip , 是最方便,快捷的.
下面是海岸線mesh的網格渲染圖:
當做海浪向岸邊涌動時, 用紋理動畫就好了, 我在這里用了個多sin波疊加的波來擾動海岸線mesh的v紋理坐標值. 來對海浪做出點隨機化處理.
但是我已經先做了, 可能還有一些細節問題需要好好修改下.
效果圖如下:
海邊沙灘浪花
小島周圍的環形浪
要實現此效果, 最關鍵的是海岸線模型的生成, 要生成海岸線模型, 首先就必須提取出海岸線來, 首先水面是一個平面, 他將地形切割, 切割的邊緣就形成了海岸線, 那么其結果絕對不只是一條連續的邊. 可能有多條不連續和多條封閉的邊組成. 如果能成功的提取出這些邊來, 那么你就已經成功了80%了.
算法大致如下:
遍例地形的所有三角形, 找出其中三角形與水平面相交的, 求出其相交線段, 將所有的線段儲存到一個總表中.
這些交線段其實已經是海岸線的組成邊了, 只不過他們組織沒有規律, 無法用他們形成多個獨立的mesh. 下一步就是要把相接的線段串起來, 首先我們生成一個空表1, 然后把總表中的第一個線段放入, 并把總表中這個線段刪除, 然后繼續遍例總表中剩下的線段, 只要能接到表1中頭部, 和表1中尾部的線段, 就分別插入到表1頭或者表1尾, 并刪除總表中的這些線段數據, 最后當總表中再沒有能添加到表1的線段了, 則表示表1已經生成完成, 然后再把總表中的第一個元素放到表2, 同樣的算法又會把表二生成完成, 最后只到總表的數據為空, 則表示海岸邊生成完畢.
這樣, 表1, 表2, 表3 .... 就表示每條海岸線的邊數據了. 如果要生成海岸的mesh, 則沿海岸向外擴展下, 形成第二條邊數據. 有了這些數據就可以生成mesh了, 怎么畫隨便你, 這里推薦用 Triangle Strip , 是最方便,快捷的.
下面是海岸線mesh的網格渲染圖:
當做海浪向岸邊涌動時, 用紋理動畫就好了, 我在這里用了個多sin波疊加的波來擾動海岸線mesh的v紋理坐標值. 來對海浪做出點隨機化處理.
總結
以上是生活随笔為你收集整理的(转)海岸线提取完成, 海浪排岸效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 将内存中的datatable数据导
- 下一篇: 你的密码安全吗?——索尼事件的教训