地形編輯的基本要求實(shí)際上只有三個:
1) 地形網(wǎng)格的生成
2) 畫刷所在區(qū)域的定位
3) 網(wǎng)格頂點(diǎn)高度值的修改
只要知道如何繪制矩形,第一點(diǎn)應(yīng)該很容易做到。
如何計算受畫刷影響的網(wǎng)格頂點(diǎn)是第二點(diǎn)需要解決的問題,介紹一下我所使用的方法:先求從鼠標(biāo)所在的屏幕空間點(diǎn)投射到三維空間的射線與網(wǎng)格平面(習(xí)慣上是XOZ面)的交點(diǎn)(x , y , z),將x和z取整作為受影響區(qū)域圓心(考慮畫刷為圓形),然后根據(jù)畫刷半徑選取出一個正方形區(qū)塊,最后在該區(qū)塊中遍歷每個網(wǎng)格頂點(diǎn)找出距離小于半徑的,修改其高度。
對于高度修改的算法,需根據(jù)想要拉出的地形效果配置不同的算法,比如:y += (radius – dist) * a(其中radius為畫刷半徑,dist為頂點(diǎn)到圓心的距離,a為調(diào)節(jié)系數(shù)),就可以拉出看上去還不錯的土包:)
在實(shí)現(xiàn)了以上三點(diǎn)基本需求后,高度圖的生成、按照高度圖生成地形、加載/保存等等一系列需求都比較容易搞定了。
