Recast Navigation 学习笔记(一)
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 先用关卡几何体生成体素模型,然后再生成导航网格覆盖它。处理过程有三步组成:①构建体素模型 ②把模型划分到简单的区域 ③用多边形替换这些区域
- 体素模型是将输入的三角面栅格化到多层高度域,并简单剔角色不会移动的位置而成。
- 可移动区被划分为多层二维区域。这些区域都有唯一的非重叠等高线,这样可以简化最后一步的处理过程。
- 用多边形替换这些区域:导航多边形沿着这些区域的边界被剥离并简化。
Detour
Recast
Recast 中的模块用于创建网格数据,Detour会用这些数据创建导航网格。
创建导航网格需要好多步骤,具体如下:
- 准备三角面
- 构建 rcHeightfield:描述高度域阻挡,rcCreateHeightfield,rcAllocHeightfield
- 构建 rcCompactHeightfield:描述无阻挡高度域
- 构建 rcContourSet:描述所有轮廓的集合
- 构建 rcPolyMesh:描述多边形网格,用于构建导航网格(未三角化的凸多边形集合)
- 构建 rcPolyMeshDetail:三角面网格
- 用 rcPolyMesh 和 rcPolyMeshDetail 构建 Detour 的导航网格
正常生命周期大致如下:
- 分配 Recast allocator 分配对象(如 rcAllocHeightfield)
- 初始化并构建对象(如 rcCreateHeightfield)
- 更新对象(如 rcRasterizeTriangles)
- 把对象作为管线的一部分
- 释放 Recast allocator 分配对象(如 rcFreeHeightField)
- 体素化:Recast通过栅格化三角形将输入场景变为体素数组(使用 Conservative voxelization 算法)。可以指定长、宽、高(3D矩形,沿着 X,Z,Y轴方向的)。体素体积越小,计算量越大。Conservative voxelization算法能够确保输入的三角形面被完全包裹在生成的体素中。
- 过滤:体素数组生成后,会通过一些简单过滤隔离可行走区域的体素。体素是否可行走受许多因素影响。除受自身大小因素,还受到许多代理参数影响。例如:
- 高度
- 半径
- 能爬的最大高度
- 能行走斜坡的最大角度
- 分割:可行走区确定后,Recast将把这些区域转化到2D区域。这些区域不重叠(应该是Y轴重叠的区域),这么做有利于下一步骤的处理。
- 创建多边形:Recast用之前创建的区域和边界生成简单的凸多边形。区域的边界就是多边形的顶点(尽可能大),这些凸多边形用来计算两点间的最短路径。最终会生成两种网格:导航网格和详细网格。
- 导航网格:可行走区域连接起来的网格,用于描述寻径空间。
- 详细网格:这个网格对应于导航网格,但有更详细的高度信息。这个高度信息决定是否将不同高度差多边形连接起来。
Recast Navigation 学习笔记(一)相关推荐
- Recast Navigation 学习笔记(二)
核心构建过程 http://www.critterai.org/projects/cainav/doc/html/e72bd1ee-04b0-4bbb-a21d-d8d7ecaa11af.htm 本文 ...
- ros2 Navigation 学习笔记 第三章(the construct 网站)
第三章 如何在环境中给机器人定位 序言 本章包括: 机器人定位的意义(即需要知道它对于环境中的位置和方向) 如何在ROS2中用AMCL定位 如何设置机器人的初始位置(手动.自动与使用ROS API) ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- Programming Entity Framework-dbContext 学习笔记第五章
### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...
- Windows phone 8 学习笔记(8) 定位地图导航
Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...
- 1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记
为什么80%的码农都做不了架构师?>>> 1.5 Hello, world! 解剖 -JSF实战 -hxzon -jsf学习笔记 既然已经对JSF能够解决什么问题有了初步理解, ...
- GPS nmealib学习笔记
GPS nmealib学习笔记 标签: GPSnmealibCSTACKHEAP 2013-10-17 11:12 4274人阅读 评论(7) 收藏 举报 分类: 嵌入式ARM(24) 版权声明: ...
- JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...
- JavaWeb-综合案例(用户信息)-学习笔记02【登录功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...
最新文章
- http学习笔记(三):报文
- MSDE2000的安装方法
- 【学亮IT手记】oracle集合运算
- android TextView设置字体颜色
- P4491-[HAOI2018]染色【二项式反演,NTT】
- mac 10.13 配置 php,MacOS10.13.6 升级后 PHP7.3配置
- 大数据学习笔记11:搭建完全分布式Hadoop
- 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
- 基于tcp实现远程执行命令
- EIGRP passive-interface
- 中国人口最多的姓氏排行
- linux pe ef 详解,PE工具列表(看雪學院)
- 怎么自学plc和自动化技术?
- HDU4565 So Easy!【矩阵快速幂】
- 产品经理原型工具选择:墨刀和axure的区别?
- 【系统收藏——中天证券创鑫软件 官方版 [同时支持三板、港股行情、沪深300指数。]】
- 微信开放平台应用绑定
- 【Linux系统】第9节 linux系统中用户分类以及用户与组属性的修改示例
- 浏览器首页被2345、hao123锁定了,怎么办
- GAN 的内在漏洞,只看眼睛就能找出虚拟人脸?