recast 生成navmesh主要流程

参考: 
    critterai   http://www.critterai.org 

 关于理解 NavMesh 生成:
    关于 PolyMesh 的理解,尤其是其有关多边形信息的格式,对于理解 rcPolyMesh 非常关键:
 一则关于 Mesh 导入转换成 NavMesh 的讨论帖子: 
 一则关于作者说不添加导入普通 Mesh 到 NavMesh 功能的讨论贴子:
   一个介绍CritterAI与Recast Navigation寻路的帖子

recast生成导航网格并不是直接用Mesh的原始面片开始合并的
先从平面几何体构建体素,再生成NavMesh
旋转一个物体会影响他的NavMesh生成结果
1146702-20180607100522502-1678000600.png

recast.h 中有大的步骤函数的定义

recast生成的5个步骤:
1 体素化: 将场景中所有物体体素化,保证体素信息覆盖全部原始几何体
2 生成移动区域: 
    a 将体素的上表面取出,为潜在可移动区域
    b 剔除 距离阻挡(墙,家具)太近的 和 上表面太小不足以移动的(桌子,扶手)
     c 合并可以移动的面,根据高度差,中间有没有阻挡等
    d 剔除太小的面(最小面积)
    1146702-20180607100523065-639874729.png
3 生成轮廓(Contour):
    a 从体素空间转为向量空间
    b 从上一步的移动区域生成非常详细的多边形信息 
       Marching squares算法  https://en.wikipedia.org/wiki/Marching_squares 
    c 简化相邻多边形的边界
        Douglas-Peucker算法  https://en.wikipedia.org/wiki/Polygonal_chain 
    b 简化外部边界(链接空的边)
    d 优化边界长度(限定最长边线)
     1146702-20180607100523619-1566093191.jpg
4 生成凸多边形:将轮廓几何体细分为凸多边形
5 生成高度信息:将高度信息写入顶点
    Delaunay triangulation 让三角形统一化
    





    








转载于:https://www.cnblogs.com/Hichy/p/8425549.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值