RecastNavigation下载地址

https://github.com/recastnavigation/recastnavigation

CritterAI 下载地址

http://www.critterai.org/

Recast/Detour文档

http://masagroup.github.io/recastdetour/index.html

理解 Heightfileds

http://www.critterai.org/projects/cainav/doc/html/6fb3041b-e9be-4f03-868b-dcac944df19b.htm

处理过程(这个文档描述的更为详细)

http://www.critterai.org/projects/cainav/doc/html/e72bd1ee-04b0-4bbb-a21d-d8d7ecaa11af.htm

Recast Navigation


Recsat 是先进的游戏导航网格制作工具。

  • 自动生成,可输入任意关卡几何体并会生成网格。
  • 快速,可快速生成关卡数据。
  • 代码开放,可自定义核心数据。

Recast 先用关卡几何体生成体素模型,然后再生成导航网格覆盖它。处理过程有三步组成:①构建体素模型 ②把模型划分到简单的区域 ③用多边形替换这些区域

  1. 体素模型是将输入的三角面栅格化到多层高度域,并简单剔角色不会移动的位置而成。
  2. 可移动区被划分为多层二维区域。这些区域都有唯一的非重叠等高线,这样可以简化最后一步的处理过程。
  3. 用多边形替换这些区域:导航多边形沿着这些区域的边界被剥离并简化。

Detour


Recast

Recast 中的模块用于创建网格数据,Detour会用这些数据创建导航网格。

创建导航网格需要好多步骤,具体如下:

  1. 准备三角面
  2. 构建 rcHeightfield:描述高度域阻挡,rcCreateHeightfield,rcAllocHeightfield
  3. 构建 rcCompactHeightfield:描述无阻挡高度域
  4. 构建 rcContourSet:描述所有轮廓的集合
  5. 构建 rcPolyMesh:描述多边形网格,用于构建导航网格(未三角化的凸多边形集合)
  6. 构建 rcPolyMeshDetail:三角面网格
  7. 用 rcPolyMesh 和 rcPolyMeshDetail 构建 Detour 的导航网格

正常生命周期大致如下:

  1. 分配 Recast allocator 分配对象(如 rcAllocHeightfield)
  2. 初始化并构建对象(如 rcCreateHeightfield)
  3. 更新对象(如 rcRasterizeTriangles)
  4. 把对象作为管线的一部分
  5. 释放 Recast allocator 分配对象(如 rcFreeHeightField)

  • 体素化:Recast通过栅格化三角形将输入场景变为体素数组(使用 Conservative voxelization 算法)。可以指定长、宽、高(3D矩形,沿着 X,Z,Y轴方向的)。体素体积越小,计算量越大。Conservative voxelization算法能够确保输入的三角形面被完全包裹在生成的体素中。
  • 过滤:体素数组生成后,会通过一些简单过滤隔离可行走区域的体素。体素是否可行走受许多因素影响。除受自身大小因素,还受到许多代理参数影响。例如:
    • 高度
    • 半径
    • 能爬的最大高度
    • 能行走斜坡的最大角度
  • 分割:可行走区确定后,Recast将把这些区域转化到2D区域。这些区域不重叠(应该是Y轴重叠的区域),这么做有利于下一步骤的处理。
  • 创建多边形:Recast用之前创建的区域和边界生成简单的凸多边形。区域的边界就是多边形的顶点(尽可能大),这些凸多边形用来计算两点间的最短路径。最终会生成两种网格:导航网格和详细网格。
    • 导航网格:可行走区域连接起来的网格,用于描述寻径空间。
    • 详细网格:这个网格对应于导航网格,但有更详细的高度信息。这个高度信息决定是否将不同高度差多边形连接起来。

Recast Navigation 学习笔记(一)相关推荐

  1. Recast Navigation 学习笔记(二)

    核心构建过程 http://www.critterai.org/projects/cainav/doc/html/e72bd1ee-04b0-4bbb-a21d-d8d7ecaa11af.htm 本文 ...

  2. ros2 Navigation 学习笔记 第三章(the construct 网站)

    第三章 如何在环境中给机器人定位 序言 本章包括: 机器人定位的意义(即需要知道它对于环境中的位置和方向) 如何在ROS2中用AMCL定位 如何设置机器人的初始位置(手动.自动与使用ROS API) ...

  3. 《Angular4从入门到实战》学习笔记

    <Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...

  4. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  5. Windows phone 8 学习笔记(8) 定位地图导航

    Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...

  6. 1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记

    为什么80%的码农都做不了架构师?>>>    1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记 既然已经对JSF能够解决什么问题有了初步理解, ...

  7. GPS nmealib学习笔记

    GPS nmealib学习笔记 标签: GPSnmealibCSTACKHEAP 2013-10-17 11:12 4274人阅读 评论(7) 收藏 举报  分类: 嵌入式ARM(24)  版权声明: ...

  8. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  9. JavaWeb-综合案例(用户信息)-学习笔记02【登录功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

最新文章

  1. http学习笔记(三):报文
  2. MSDE2000的安装方法
  3. 【学亮IT手记】oracle集合运算
  4. android TextView设置字体颜色
  5. P4491-[HAOI2018]染色【二项式反演,NTT】
  6. mac 10.13 配置 php,MacOS10.13.6 升级后 PHP7.3配置
  7. 大数据学习笔记11:搭建完全分布式Hadoop
  8. 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
  9. 基于tcp实现远程执行命令
  10. EIGRP passive-interface
  11. 中国人口最多的姓氏排行
  12. linux pe ef 详解,PE工具列表(看雪學院)
  13. 怎么自学plc和自动化技术?
  14. HDU4565 So Easy!【矩阵快速幂】
  15. 产品经理原型工具选择:墨刀和axure的区别?
  16. 【系统收藏——中天证券创鑫软件 官方版 [同时支持三板、港股行情、沪深300指数。]】
  17. 微信开放平台应用绑定
  18. 【Linux系统】第9节 linux系统中用户分类以及用户与组属性的修改示例
  19. 浏览器首页被2345、hao123锁定了,怎么办
  20. GAN 的内在漏洞,只看眼睛就能找出虚拟人脸?

热门文章

  1. 【揭秘】过敏性炎症的元凶竟然是“它”
  2. 【Unity】多种方法实现第一人称角色移动(一)角色控制器
  3. 关于nwjs中捕获应用崩溃信息的记录
  4. html弹性布局两盒,CSS中的弹性盒子总结
  5. java替换括号内字符串
  6. 「开源」目前见过的最好的开源OA产品
  7. oracle 的行列转换函数,Oracle行列转换函数
  8. Flask实战!从后台管理到人脸识别,六款优质Flask开源项目介绍
  9. SSH客户端介绍及推荐
  10. AI快车道深圳专场,揭秘CV目标检测核心技术