nav,即navigation,现行3D游戏主流寻路方式,起源的思路是和A*完全不同的,因为navmesh不需要一张二维表,只需要利用模型阻挡生成一张近似寻路用的“mesh”。

  细节不多提及,参见http://www.ai-blog.net/archives/000152.html中的示例,

  A*寻路中,可以借用他的思想做出效果非常好的优化,在游戏中测试512×512的寻路速度在几个毫秒内即可完成。

  在生成阻挡点信息时,将整块没有阻挡点的凸多边形(这里全部使用四边形)合并为一块navmesh,生成若干mesh再使用navigation思路进行首次路径生成。测试512×512游戏实际场景的mesh数量一般低于1万块。比起512×512的数值,优化非常惊人。然后储存连通表,再次优化掉一半左右的无用导航格。

  假设红色为阻挡点,生成后的网格应该如下:

  navmesh的计算方法,射线法(line-of-sight)参见:http://blog.csdn.net/budtang/article/details/5959606  

  1、无阻挡凸多边形生成能去最大就去最大,比如如果存在64×64和一个8×8的块,就不应该被划分为64×56和64×8的块。2、生成后保存大块连通表数据。3、无法计算动态阻挡,navmesh信息需要提前计算存入文件,遍历生成mesh比寻路更耗时。

  

转载于:https://www.cnblogs.com/BryZ/archive/2011/12/26/2301872.html

navmesh思路的A*寻路算法优化相关推荐

  1. JPS寻路算法优化思路

    JPS寻路算法学习 A*算法 简介 A*算法的一些概念 算法流程 JPS 算法简介 JPS 算法的两条定义,三个规则 JPS 算法举例 JPS 五个优化算法 1.JPS-Bit:位运算优化 2.JPS ...

  2. 高效算法,B*寻路算法,python版,思维优化(3),python实现B*寻路算法

    接下来我们对 路径进行优化 椭圆属性,圆上的每个点到 a.b 两点的距离都是一样的,我们选择爬过障碍的最短路径,计算每个点到 起点和穿透点的距离之和 ,最大说明该障碍点 离两个点最远,也就是绕过障碍的 ...

  3. python终极版实现B*寻路算法,高效算法,B*寻路算法,思维优化(4完结)

    总结一下流程: 思维:直接走向终点+穿透障碍 1,从起点 直接向终点做,每次获取一下指向终点的向量,加一下自身坐标,得到下一个坐标. 分支:1.不是障碍,就继续往前走. 2.是障碍,获取四个关键点(障 ...

  4. 实用高效的寻路算法——A*寻路算法的实现及优化思路

    前言:寻路是游戏比较重要的一个组成部分.因为不仅AI还有很多地方(例如RTS游戏里操控人物点到地图某个点,然后人物自动寻路走过去)都需要用到自动寻路的功能. 本文将介绍一个经常被使用且效率理想的寻路方 ...

  5. RTS游戏开发:基于Gird的Theta*寻路算法,以及利用视线算法优化A*路径的思路【附视线算法的代码、A*、Theta*的伪代码】

    为什么要有Theta*寻路,Theta*寻路相对A*寻路的优缺点. 这是一个A*的寻路找出的路径,可以看出,A*的路径是附着于网格的.这导致了A*的路径不是最短路,而且不自然,在RTS游戏中这是不被允 ...

  6. [unity3d]recast navigation navmesh 导航网格 寻路算法 源码分析

    recast navigation navmesh导航网格算法源码分析 Author:  林绍川 recast navigation navmesh是unity3d ue4内置的寻路算法 本文为了方便 ...

  7. 算法优化:旋转对称图最优解法及思路分享(几乎最优)

    文章目录 前言 一.问题描述 二.算法展示 1.成果展示 2.读入数据 三.算法思路分析 1.切入点分析 2.正确切入点 3.算法的实现逻辑 4.算法的逻辑优化 总结 前言 本文将总结并分享类似旋转图 ...

  8. 高效算法,B*寻路算法,python版,思维优化(1)

    上一篇文章只发布了很粗糙的代码,属于能跑就行,确实难看懂. 这一篇继续说一下爬墙思维,,B*寻路算法就是贪婪思维 +攀爬思维, 但是比较难判定怎么算爬过的障碍,所以这里改为  贪婪思维 +穿透障碍,( ...

  9. 关于小游戏魔塔的优化算法(2)---用A*改造寻路算法

    魔塔添加新的功能! 上一节我们做到了寻找可行走路径,但是不够 因为魔塔中充斥着各色各样的怪物,门.我们可行走的路径实在太少了! 现在我们作为一名玩家,想通关游戏,我们大概每层要做两件事情 用损血最少的 ...

最新文章

  1. java 小对话框_创建Java对话框
  2. 鹅厂机器狗,站起来了!
  3. 初学Netty(杰哥好久不见)
  4. 【Smartform】开发中报SSFCOMPOSER154错误原因分析
  5. .NET Core UI框架Avalonia
  6. easyui combobox java_Easyui的combobox实现动态数据级联效果
  7. linux ssh非交互脚本,sshpass实现shell脚本非交互密码验证
  8. supervisor 重启_supervisor_twiddler的使用
  9. 计算机丢失twitchsdk,修复twitchsdk_32_release.dll
  10. Dart 语言不如 Kotlin?这里列了 13 个原因
  11. thinkphp5---join联合查询
  12. AE(自动曝光)系统简介
  13. [BZOJ4816][Sdoi2017]数字表格 数学
  14. 电脑桌面下方的任务栏卡死解决方案:
  15. Android判断手机号码是否是正确的手机号码
  16. 《如师通语言学习软件(罗塞塔石碑)》(Rosetta Stone) v3.4.5 英语/日语/法语/德语/韩语/俄语/西班牙语/意大利语/阿拉伯语/葡萄牙语/汉语 [云端免安装版]
  17. XX用户不在 sudoers 文件中。此事将被报告。
  18. 互联网大厂的年终奖(华为分红400亿,腾讯每人发股票 )
  19. Jeesite 4.0 学习笔记
  20. 跃迁:从技术到管理的硅谷路径

热门文章

  1. UVA 12657 Boxes in a Line
  2. 【重点!DP】LeetCode 97. Interleaving String
  3. Leetcode 538.二叉树转换为累加树
  4. 小白入门视频处理笔记:1. *.avi文件读入matlab后的数据结构
  5. python plot linestyle 线型颜色及线条控制(linestyle、marker、color)
  6. PyTorch 中如何指定GPU
  7. JavaSE Collections类 , Iterator迭代器 , 增强for循环
  8. FLEX教程:改变LIST控件项被选中的背景提示效果.
  9. ASP.NET技巧:使Div内内容可编辑
  10. 微信小程序入门 ——增删改查+页面跳转+传值取值+布局样式