RVO避开agent

本文介绍了如何利用A* Pathfinding Project的RVO(Reciprocal Velocity Obstacles)算法实现避开agent的方法。文章指出,RVO算法在处理大量agent时性能优异,比单纯的射线检测更为高效。作者分享了官方文档的翻译,并提到A*插件的专业版支持RVO功能。文中还详细讲述了如何设置和集成RVO模拟,以及解决在Unity中遇到的障碍物问题,以实现agent之间的有效避障。
摘要由CSDN通过智能技术生成

         A* Pathfinding Project 3.1.4                         RVO的使用

 

         大家好!今天想给大家安利一个避开agent的方法。性能也是棒棒哒!其实自己之前也写过避开agent的算法,但使用了大量的射线,其实在agent数量比较少的情况下效果还不错,但面临大量agent时,射线这个方法就不适用了。这也促使我去寻找更好的解决方案,这不,RVO(Reciprocal Velocity Obstacles),之前百度发现关于它的介绍并不多,后面有找到关于这个算法的论文,本来打算看完实现一下,后面感觉一堆堆英文,一堆堆公式,有点可怕,现在又有点赶进度,所以就想要找更方便的方法了。后面发现A*寻路插件里面有RVO算法可以直接拿来使用,所以就偷懒啦!

       在这里,我把官方文档给翻译过来,有需要的小伙伴们看过来哦!这里虽然写的是3.1.4版本的,但就RVO这一部分,基本含有RVO的A*插件使用RVO的方法都是类似的,只是A*插件之前由于一些版权的问题没有使用RVO,直到后续版本才可以使用,而且必须是专业版,大家需要的话就在CSDN上面搜索下载,例如3.6.0版本的,以及4.1.16版本的。后面我会把在unity里面调用的方法整理分享,感兴趣的欢迎戳哈!

 


 

局部避免

(说明:因为A* Pathfinding Project是一个可以直接放在unity中使用的插件,本文就将其保留为英文,不做翻译,把它理解成一个插件就可以啦。)

      如何使用A* Pathfinding Project中的局部避免。

     基于RVO的A* Pathfinding Project包含局部避免-相互速度障碍(Reciprocal Velocity Obstacles)和ORCA-最佳相互避免碰撞(Optimal Reciprocal Collision Avoidance)。它本身很大程度上基于RVO2库,但已经扩展了很多功能来处理不同级别的agent(例如,建筑物中不同楼层的agent不应该发生碰撞)。    

 

A*专业版本的功能:

这是A* Pathfinding Project专业版本特有的功能。它拥有的函数/类/变量在免费版本的A* Pathfinding Project中可能没有,免费版本的功能也可能是有限的。

您可以点击这里进行购买

如果想要获得更深入的信息,请点击这里:Writing RVO Colliders

 

### 回答1: rvo2是一款流行的多体仿真引擎,其queryvisibility函数主要用于查询两个Agent之间是否存在可视障碍。可视障碍指的是视线被遮挡而无法直接看到对方的情况。这个函数的输入参数包括两个Agent的代号,以及它们所在位置的坐标信息等。当函数被调用时,rvo2会基于这些信息来判断两个Agent之间是否存在可视障碍。 对于具体的实现方法,RVO2是通过将两个Agent看作固定半径的圆来实现的。在判断两个Agent之间是否存在可视障碍时,RVO2会检测以两个圆为圆心、圆心距离为直径的大圆,然后依次检测该大圆上的若干个点是否被障碍物遮挡。如果存在可视障碍,则两个Agent之间的可视距离被限制为大圆上两个点之间的线段长度。 最终,queryvisibility函数将返回一个bool类型的值,用于表示两个Agent之间是否存在可视障碍。这个函数在多个应用场景中都有广泛的应用,如人群模拟、机器人导航等。在实际应用中,我们往往可以通过修改一些参数来改变这个函数的表现,以满足不同的需求。 ### 回答2: rvo2是一个用于人群模拟和路径规划的库。queryvisibility是rvo2库中的一个函数,用于查询在可行路径中是否存在障碍物。 在rvo2库中,人群的移动路径是通过导航网格(navigation mesh)来表示的。在该网格中,障碍物被定义为无法穿过的区域,并用多边形表示。 使用queryvisibility函数时,会根据给定的起点和终点,检查两者之间是否存在障碍物。如果存在障碍物,则返回false,表示两点之间不可行;如果不存在障碍物,则返回true,表示两点之间可行。 这个函数的作用在人群模拟和路径规划中非常重要。当人群移动时,需要根据当前位置和目标位置,查询路径上是否有障碍物。如果路径上存在障碍物,则需要通过其他路径避免碰撞和拥挤。 总的来说,queryvisibility是rvo2库中一个用于路径检测的重要函数,确保人群可以在避开障碍物的情况下顺利移动。 ### 回答3: rvo2 queryvisibility是一个查询函数,用于在RVO2库中计算两个移动物体之间的可见性。该函数主要用于行人和机器人等移动物体的路径规划和避障等问题。 该函数使用了远程可视化障碍(remote visibility obstacles,简称RVO)的概念,计算两个移动物体之间的RVO集合,即可视区域。如果两个移动物体之间存在可行的路径,则它们之间的RVO集合为空,否则为非空。 RVO2 queryvisibility函数的返回值为布尔类型,表示两个移动物体之间是否存在可行路径。该函数需要传入两个移动物体的位置和半径等参数,还可以传入一些可选参数,如最大查询距离和最大查询时间等。 总之,rvo2 queryvisibility是一个在RVO2库中非常重要的查询函数,它能够帮助程序员计算出两个移动物体之间的可见区域,从而实现行人和机器人等移动物体的路径规划和避障等功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值