- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3D游戏寻路算法.doc
3D游戏寻路算法(A*)
?????? ?关于游戏寻路,网络上也有很多相关的文章,一般都是已A*为主,他只是一种启发式搜索,最开始写A*是在大三,主要还是做一个路径搜索的算法。???????? 关于游戏中A*的算法优化,由于在搜索的过程中会通过open表和close保存一些结点,为了加快查找效率一般采用对维护的方式,利用map的最小堆(按照估价值的大小排序)来构架数据结构。其实还可以利用线性的hash_map来创建维护。??????? ???????? 而3D中游戏寻路也是采用同样的方法,只是在不同于2D的8个方向搜索而是3*8个方向的搜索。所以他的复杂度之高,在对于一个3维的N*N*N的空间,他的搜索运算为n^3*24,就需要考虑算法中的优化。
??????? 总之一句3D寻路费时又费空间!?????? 下面是我总结的优化??????? ?????? 1.总体还是利用a*和堆维护。?????? 2.由于点是实心,可以直接进行对角线的行走,也就是对角线行走一步后x,y,z的坐标都会改变,从而降低通过2次二维变换的过程。二步变一步!?????? 3.利用凸包的方式来优化。
?????? 4.把一个场景的3D地图全部细分,利用多叉树进行管理。?????? 关于凸包的优化可以通过这样一个例子说明(因为在2D中更好的描述通过2维的地图):?????? A、假设1要到2的,通过A*的搜索,他会先到0然后发现不能通过在回溯,重新寻找新的路径,这样可能浪费一些搜索时间。?????????????????????? B.?? 可以通过多边形的最小矩形凸包的方式,这样就可以减少不必要的搜索,如图所示。???????????????????????????????????????那么1到2就不会经过0点。。因为次区域设置为不可通过。?????? C.?? 如果我们要查找的点在我们凸包内,所以我们在寻路最开始应该验证点是否在凸包内,如果在此区域内,在行走时不能过滤这个矩形空间。
????? 注:游戏中地图一般是不变的,所以这些都是不变,凸包已知,验证点在凸包中也是线性的。????? ????? ????? 由于在计算3D的凸包的时候计算量大,最开始采用静态的方式来记录数据。
????? 简单的3D寻路算法源码(不包含凸包优化):
?????????/Files/expter/3DAStar.rar
整理自《Programming Game AI by example》1.DFS优先深入每个图,直到找到目标节点往往可以找到到达路线,可往往不是最优的。2.BFS广度优先地寻找目标节点。往往可以找到最优路径,但耗时多。3.Dijkstra使用了动态规划(原文中称为“边放松”)//该为贪心,本人罪过速度较快4.A*与Dijkstra相似,使用启发因子(F=G+H),速度是以上算法里最快的。可以看看:/probill/blog/item/80d71f1b19e2fe1e8718bfe5.html5.创建导航图
posted on 2009-01-23 17:22 Bill Hsu 阅读(2282) 评论(3) ?编辑?收藏 引用 所属分类: Game Dev 、Algorithm
Ogre场景编辑器和3D寻路算法(基于导航网格Navigation Mesh)完成
作者:鸣·铭 日期:2009-10-10
字体大小: 小 中 大
Ogre场景编辑器基本功能已经完成:)1.类似于3DSMAX的摄像机,非常方便美术操作2.动态刷新素材资源3.支持所有操作任意步撤消4.可以导入并编辑天龙八部的地表(通过TLSceneViewer导出)5.可以轻松绘制特定图案,绘制时自动融合6.可以对地表应用特定格式(Word的格式画刷)7.多种方式调整地表高度,制作斜坡,悬崖等非常方便8.支持动态光源,以及光源的特定变化9.可以很方便的摆放物体,通过快捷键和鼠标既可以直观的调整物体位置、旋转、缩放,也可以在场景组件界面里做特定调整10.可以自动很快速的生成非常优化的导航网格(Navigation Mesh, Navmesh)生成的导航网格与天龙八部类似,已经非常优化了。天龙八部很早就已经放弃Region的方式寻路,改用了.path文件,也就是导航网格,同时继续沿用WCollision,但是WCollision仅只是用来调整人物高度的,并没有参与寻路。因为要低调,就先写这么多吧:)
A* 3D – No, really, it’s 3D
July 3rd, 2007
There seemed to be a little disappointme
文档评论(0)