静态地形网格减面

一. 合并的方法

  1. 通过地形块之间夹角来合并块,这是基础
  2. 通过特殊范围(例如海域)判断来加大夹角来使合并更容易
  3. 通过遮挡关系加大夹角使合并更容易

二. 按地形的夹角合并

  1. 方法步骤:
    a.使用四叉树, 从最大的开始,每次等分四格,
    b.子格重复四格等分,直到分出的子格大小小于等于预设的宽度
    c.从最小子格开始, 求出四个子格的法线, 计算他们的之间夹角, 小于M值后, 两两之间合并
    d.往上一级处理, 找出合并的子格, 重复上面的步骤合并子格, 直到最大的格子
  2. 该方法, 对于比较平的地形上, 效果很好, 基本在减少50%的面数
  3. 效果见如下, 把网格从4万多面降至不足2万
    合并前
    在这里插入图片描述
    合并后
    在这里插入图片描述

三. 特殊范围的判断

  1. 这里取海面为特殊范围, 方法步骤
    a.判断最小格子里四个顶点最处于海平面下
    b.往上一级, 四个子格都在海面时, 该格标记为在海面下
    c.重复上一步骤到最大的格子
    d.在判断合并时, 在海平面下的格子会加大M的值,使子格子更容易合并
    2.该对于在海面下的减面效果很显, 对野图减面效果也很好,因为有大面积在水下的地形
    3.例如以下,直接把3万多的面降到只有几百面
    合并前
    在这里插入图片描述
    合并后
    在这里插入图片描述

四. 遮挡判断

  1. 步骤:
    a.先生成地形的实体Mesh
    b.收集与地形包围盒相交的物件
    c.创建RenderTarget, 清除为黑色
    d.绘制地形Mesh的深度
    e.绘制相关物件,但要大于地形像素深度的才绘制,且填充白色
    f.把绘制结果保存到一张贴图上

结果例如:
在这里插入图片描述

g.生成最小格子时, 读取这张贴图, 计算这格子四个顶点与贴图的映射, 如果都是白色,标记为被遮挡
h.到上一级格子,如果所有格子,都被标记遮挡, 则这格也算遮挡
i.重复步骤直到最大的格子
j.在判断合并时,如果该格子是被遮挡的,使用更大的判断夹角,以使格子更容易合并

  1. 该方法对于地形有很多物件的情况下,减面明显, 对于凹凸地形也有一定帮忙
  2. 例如以下,可以使用面数从6万降至4万
    使用前
    在这里插入图片描述

使用遮挡判断后:
在这里插入图片描述

五. Q&A

  1. 当前使用静态网格对于手机还是有一定的性能提升
  2. 静态网格的使用,对于物理系统也算友好
  3. 不直接使用减面工具,可以保持顶点的规则性,有利于物理与渲染的贴合性.
  4. 但静态网格生成依然有一定精度问题, 而且面数依然居高不下.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值