花了近一周的空余时间,对shore rendering 进行了优化. 现在的效果:
在岸边坡度较高的地方:
修改了寻找海岸边沿的算法. 采取一种类似A* 寻路的递归检测算法. 能够快速勾勒水岸线.
在描边的过程中,需要记录当前点周围6个三角形与水面的相交情况.这个在以后的拉伸过程中会用到.
#2
假定海浪的动能为 W, 那么海浪能上升的高度是一个常数 h = F(W/g ). .
将水岸线沿Y(垂直水面的方向)上升 h 高度.
遍历所有封闭的水岸线.
遍历每一个水岸线的点.
计算每个点的拉伸方向. 这里要特别注意的是,如果相邻2个点距离过近,拉伸法线出现相交的几率很大.最后导致海浪起点重叠.会出现
难看的褶皱. 所以,我们需要在计算拉伸法线前,去判断这个情况,然后抛弃出现相交的点.
沿着拉伸法线extrude 出海浪的起点.
#3
接下来,需要找到海浪的终点,这其实是一步与地形求交的过程, 只是注意下求交的时候只遍历当前点附近的 3*3个点附近的三角形就够了,然后选择一个
交点最近的.作为终点.
对Far Cry , fort 地形 1024*1024 个顶点run-time 构建 shore- strip 的鸟瞰图, 这里镜头拉得有些远, 地形得细节等级都处于最低等级.