Heath's Blog

There is no end, it is just the beginning! - A Game Developer's Notes

写着玩(1)——地形编辑

    地形编辑的基本要求实际上只有三个:

    1) 地形网格的生成

    2) 画刷所在区域的定位

    3) 网格顶点高度值的修改

    只要知道如何绘制矩形,第一点应该很容易做到。

    如何计算受画刷影响的网格顶点是第二点需要解决的问题,介绍一下我所使用的方法:先求从鼠标所在的屏幕空间点投射到三维空间的射线与网格平面(习惯上是XOZ面)的交点(x , y , z),将x和z取整作为受影响区域圆心(考虑画刷为圆形),然后根据画刷半径选取出一个正方形区块,最后在该区块中遍历每个网格顶点找出距离小于半径的,修改其高度。

    对于高度修改的算法,需根据想要拉出的地形效果配置不同的算法,比如:y += (radius – dist) * a(其中radius为画刷半径,dist为顶点到圆心的距离,a为调节系数),就可以拉出看上去还不错的土包:)

    在实现了以上三点基本需求后,高度图的生成、按照高度图生成地形、加载/保存等等一系列需求都比较容易搞定了。

Snap1

posted on 2010-03-10 21:36 Heath 阅读(2556) 评论(2)  编辑 收藏 引用 所属分类: Graphics Programming

Feedback

# re: 写着玩(1)——地形编辑 2012-06-07 12:37 liha

兄弟,能否把地形编辑的源码发我参考一下,我邮箱地址是lihaha1985,是126的邮箱。小弟不胜感激  回复  更多评论   

# re: 写着玩(1)——地形编辑 2012-06-10 23:18 Heath

@liha
随手写着玩的,代码已经找不到了,不好意思。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理