修复Recast导航折返问题
原因分析:
最近在使用 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导航折返问题相关推荐
- 游戏思考17:寻路引擎recast和detour学习二:recast导航网格生成流程\源码剖析流程\局限性,附录计算点线面举例代码
一.recastnavigation使用介绍 1)模式选择 Solo Mesh:单块生成 Tile Mesh:分块生成 Temp Obstacles:分块并支持动态阻挡 这里测试的话选单块生成 2)模 ...
- php影视网站主页不显示列表,七星修改米酷影视6.2.8完整版–PHP7.0及以上,修复页面不显示和不能播放等...
一.注意:PHP环境不再支持5.4-5.6,只支持PHP7.0及以上,我的环境推荐使用LINUX+NGINX+PHP7.3使用正常,请参照该环境. 二.预览地址: http://www.3366dh. ...
- 一劳永逸,iOS 网页视图控制器通用类封装
原文链接:http://www.jianshu.com/p/553424763585 随着 H5 的发展,在 iOS 开发中,网页视图的使用率逐渐提升,为了增加代码封装度.减轻开发负担,因此通常会对网 ...
- 【转】3D图形引擎(DX9): FX
[转]3D图形引擎(DX9): FX 做图形程序已经很多年了,积累了一些经验. 来这个论坛也有好几年了,遇到问题的时候,也会在这里发帖子问,也很感谢大家的回答与帮助,希望能多认识一些朋友,大家多交流. ...
- php轻博客社区视频教程,轻博客主题 - SEO极致优化的ZBLOG轻博客主题
zblog自适应轻博客主题,简洁.轻巧.极致优化~ QQ群:457320274 (问题反馈以及其他链接交换等) 交流社区:https://www.bxiu.net/ (有问题可以求助交流) 更新记录: ...
- 无忧PHP企业网站内容管理系统源码v2.8 标准版
简介: 无忧PHP企业网站管理系统是采用PHP+MYSQL技术和MVC模式进行开发的,架构清晰,代码易于维护. 支持伪静态功能,可生成google和百度地图,支持自定义url.关键字和描述,符合SEO ...
- 达梦数据charindex_更新日志 · dotnetcore/FreeSql Wiki · GitHub
每三个月一次版本号:2.3/2.6/2.9,修复严重 bug 会发布 2.3.x v2.3-preview (myget.org) 增加 Column 特性 RewriteSql/RereadSql: ...
- html5实现微信支付宝接口,支付宝H5开放文档
V3.1.1 更新日志 2018-03-28删除 service worker 版本输出及文档,V3.1.0后将不再维护sw版本的ap. V3.1.0 更新日志 2018-02-26优化 ap 初始化 ...
- 微软推送win11 22622.575补丁!
今日微软推送的Win11 22622.575预览版补丁带来了一系列的修复和改进,如可从文件资源管理器的导航窗格中打开新选项卡中的文件夹等等.下面就来看看详细的更新内容. 更新内容 新功能和变化 文件资 ...
最新文章
- Java 匿名类也能使用构造函数
- python第三方模块—psutil模块
- java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
- 认识计算机硬件观评课,观课听课评课评语
- 重新精读《Java 编程思想》系列之组合与继承
- mysql手机号保密数据类型_mysql中的数据类型
- 杂项-QRCode:ZXing
- 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
- js时间搓化为今天明天_js转时间戳,时间戳转js
- 产品经理应该mysql_数据库对产品经理的重要性
- ios 不被遮挡 阴影_IOS开发之Bug--iOS7View被导航栏遮挡问题的解决
- 无人驾驶三 卡尔曼滤波及无迹卡尔曼滤波的几何意义
- 百度贴吧高考作文强贴
- 网页中Flash播放器常用参数设置(转)
- IOS开发笔记(1)---Hello World
- 【转】OUTLOOK签名档中加入写信日期
- 究竟先操作缓存,还是数据库?
- 跟大家分享一下牛人常用的资源(牛客网 )!
- win 10 安装 iis6
- 通过资源监视器排查网络高占用异常
热门文章
- 工业4.0时代的质量工作十化
- 如何去理解算法时间复杂度?
- i5 10400f和 i7 6700k选哪个好
- 怎么检测细胞是否受支原体污染?
- html 图片是块元素吗,HTML+CSS:html元素分类之块级元素、内联元素、内联块级元素...
- java 银行管理系统
- 贝叶斯分类(Bayesian)
- android fstab文件,[Android6.0][RK3399] fstab 文件格式说明和解析代码跟踪
- 交叉熵损失函数优缺点_交叉熵损失函数的优点(转载)
- 【redis】吐血整理---redis合集