原因分析:

最近在使用 recastnavigation 寻路时,遇到一个奇怪的问题

这里的agent使用的crowd移动工具,有时候移动的时候会出现,在一条直线上,没有其他阻碍的情况下,agent会出现中途减速,或者来回折返

这种情况在沿tile边界,或者拐角时容易出现。

在寻路的路径出现的折返的情况,如图


从路径A-C,理论上不应该出现 A-B-C因为没必要经过B,应该是tile数据有点问题导致这个情况

解决方案:先做一个简单处理,把findStraightPath的找到的路径,做一次校验,过滤掉折返点

int FixedPath(int ncorners,float* cornerVerts,unsigned char* cornerFlags,dtPolyRef* cornerPolys) {if (ncorners < 2) {return ncorners;}// 过滤共线折返路点const float* p0 = cornerVerts;const float* p1 = cornerVerts + 3;const float* p2 = cornerVerts + 6;// 起点不覆盖for (int i = 1; i < ncorners - 1;){if (cornerFlags[i] & DT_STRAIGHTPATH_OFFMESH_CONNECTION) {break;}// 共线if (dtAbs(dtTriArea2D(p0, p1, p2)) < dtSqr(0.1f)) {// 反向if ((p1[0] - p0[1])*(p2[0] - p1[0]) < 0|| (p1[2] - p0[2])*(p2[2] - p1[2]) < 0) {--ncorners;memmove(cornerFlags + i, cornerFlags + i + 1, sizeof(unsigned char)*(ncorners - i));memmove(cornerPolys + i, cornerPolys + i + 1, sizeof(dtPolyRef)*(ncorners - i));memmove(cornerVerts + 3 * i, cornerVerts + 3 * (i + 1), sizeof(float) * 3 * (ncorners - i));continue;}}++i;p0 = p1;p1 = p2;p2 += 3;}<span style="color:red">re</span>turn ncorne<span style="color:red">r</span>s;}

修复Recast导航折返问题相关推荐

  1. 游戏思考17:寻路引擎recast和detour学习二:recast导航网格生成流程\源码剖析流程\局限性,附录计算点线面举例代码

    一.recastnavigation使用介绍 1)模式选择 Solo Mesh:单块生成 Tile Mesh:分块生成 Temp Obstacles:分块并支持动态阻挡 这里测试的话选单块生成 2)模 ...

  2. php影视网站主页不显示列表,七星修改米酷影视6.2.8完整版–PHP7.0及以上,修复页面不显示和不能播放等...

    一.注意:PHP环境不再支持5.4-5.6,只支持PHP7.0及以上,我的环境推荐使用LINUX+NGINX+PHP7.3使用正常,请参照该环境. 二.预览地址: http://www.3366dh. ...

  3. 一劳永逸,iOS 网页视图控制器通用类封装

    原文链接:http://www.jianshu.com/p/553424763585 随着 H5 的发展,在 iOS 开发中,网页视图的使用率逐渐提升,为了增加代码封装度.减轻开发负担,因此通常会对网 ...

  4. 【转】3D图形引擎(DX9): FX

    [转]3D图形引擎(DX9): FX 做图形程序已经很多年了,积累了一些经验. 来这个论坛也有好几年了,遇到问题的时候,也会在这里发帖子问,也很感谢大家的回答与帮助,希望能多认识一些朋友,大家多交流. ...

  5. php轻博客社区视频教程,轻博客主题 - SEO极致优化的ZBLOG轻博客主题

    zblog自适应轻博客主题,简洁.轻巧.极致优化~ QQ群:457320274 (问题反馈以及其他链接交换等) 交流社区:https://www.bxiu.net/ (有问题可以求助交流) 更新记录: ...

  6. 无忧PHP企业网站内容管理系统源码v2.8 标准版

    简介: 无忧PHP企业网站管理系统是采用PHP+MYSQL技术和MVC模式进行开发的,架构清晰,代码易于维护. 支持伪静态功能,可生成google和百度地图,支持自定义url.关键字和描述,符合SEO ...

  7. 达梦数据charindex_更新日志 · dotnetcore/FreeSql Wiki · GitHub

    每三个月一次版本号:2.3/2.6/2.9,修复严重 bug 会发布 2.3.x v2.3-preview (myget.org) 增加 Column 特性 RewriteSql/RereadSql: ...

  8. html5实现微信支付宝接口,支付宝H5开放文档

    V3.1.1 更新日志 2018-03-28删除 service worker 版本输出及文档,V3.1.0后将不再维护sw版本的ap. V3.1.0 更新日志 2018-02-26优化 ap 初始化 ...

  9. 微软推送win11 22622.575补丁!

    今日微软推送的Win11 22622.575预览版补丁带来了一系列的修复和改进,如可从文件资源管理器的导航窗格中打开新选项卡中的文件夹等等.下面就来看看详细的更新内容. 更新内容 新功能和变化 文件资 ...

最新文章

  1. Java 匿名类也能使用构造函数
  2. python第三方模块—psutil模块
  3. java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
  4. 认识计算机硬件观评课,观课听课评课评语
  5. 重新精读《Java 编程思想》系列之组合与继承
  6. mysql手机号保密数据类型_mysql中的数据类型
  7. 杂项-QRCode:ZXing
  8. 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
  9. js时间搓化为今天明天_js转时间戳,时间戳转js
  10. 产品经理应该mysql_数据库对产品经理的重要性
  11. ios 不被遮挡 阴影_IOS开发之Bug--iOS7View被导航栏遮挡问题的解决
  12. 无人驾驶三 卡尔曼滤波及无迹卡尔曼滤波的几何意义
  13. 百度贴吧高考作文强贴
  14. 网页中Flash播放器常用参数设置(转)
  15. IOS开发笔记(1)---Hello World
  16. 【转】OUTLOOK签名档中加入写信日期
  17. 究竟先操作缓存,还是数据库?
  18. 跟大家分享一下牛人常用的资源(牛客网 )!
  19. win 10 安装 iis6
  20. 通过资源监视器排查网络高占用异常

热门文章

  1. 工业4.0时代的质量工作十化
  2. 如何去理解算法时间复杂度?
  3. i5 10400f和 i7 6700k选哪个好
  4. 怎么检测细胞是否受支原体污染?
  5. html 图片是块元素吗,HTML+CSS:html元素分类之块级元素、内联元素、内联块级元素...
  6. java 银行管理系统
  7. 贝叶斯分类(Bayesian)
  8. android fstab文件,[Android6.0][RK3399] fstab 文件格式说明和解析代码跟踪
  9. 交叉熵损失函数优缺点_交叉熵损失函数的优点(转载)
  10. 【redis】吐血整理---redis合集