3D拼合地形中的浪花

来源:互联网 发布:古墓丽影崛起帧数优化 编辑:程序博客网 时间:2024/05/01 00:51

原始地图

 

 

网格

 

查找边缘

 

 

                  在开发3D地形的过程中,我遇到了一个难题,就是浪花的处理。我之前没有研究过水。所以很担心做不好。经过网络查阅和不断的思考。我认为浪花的处理最困难的是查找水与地形的接触边缘线。经过不断的试验。终于找到了边缘线。现在将做法记下来。

 

                 图1是一个拼合好的地形水池。

     

                 首先,我需要在水池里点击一下鼠标,并通过鼠标击中的格子向八个方向扩散进行查找不是平面或地形高度大于H的格子。这些格子和扩散方向被记录下来。

               

                 然后遍历这些格子,根据扩散方向画出水向边缘的发力射线。

                 图2是这个水池的网格。图中的一些线段就是发力的射线。

 

                 最后是由每个发力射线的起点向对应方向的格子中的模型体中处于H1~H2高度(也就是水面高度范围)的三角形沿发力角度进行N次偏移射线碰撞检测,并得到碰撞的N个顶点记录下来。这些顶点连接起来就是边缘线了。

                

 

带边缘的水