阅读笔记-游戏开发中的人工智能-第4章-群聚

论坛 期权论坛     
匿名技术用户   2021-1-11 22:30   27   0
<div class="blogpost-body" id="cnblogs_post_body">
<p>1. 基本群聚</p>
<p>    这一节介绍的算法,来自于Craig Reynolds在1987年发表的论文《Flocks,Herds and Schools:A Distributed Behavioral Model》。在论文中,他提出算法原型仿真整群的鸟、鱼或其他生物。<br>    这个算法的做出的行为非常类似水中的鱼群或成群的飞鸟。所有的“类鸟群”(指模拟的群体)可以同时朝同一方向移动,接着下一时刻,群聚形成的形体之尖端会转弯,而群体中其余的部分也会跟着转,形成的类鸟群在群体中传达转弯的行为,而形成波浪状。<br>    算法的三个规则:<br>    凝聚:每个单位都往其邻近单位的平均位置行动。<br>    对齐:每个单位行动时,都要把自己对齐在其邻近单位的平均方向上。<br>    分割:每个单位行动时,要避免撞上其邻近单位。<br>    单位视野<br>    两个参数决定每个单位的视野,半径R和角度θ。大的半径能让单位看到群体中的更多同伴,从而产生凝聚性更强的群体。也就是说,群体没有分裂成小群体的倾向。<br>    对于较小的视野,可能会产生类似一队蚂蚁行进的效果。比如:仿真一群战斗机,可能会使用大角度。仿真一直军队鬼鬼祟祟跟踪某人,可能会用小角度。 <br>    <img alt="" border="0" height="223" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-de190792afbb23174ff56f5cc279a36f.png" style="width:417px;" width="417">           <img alt="" border="0" height="205" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-9d6315c357612f6e6bd409ae4d1af52c.png" style="width:396px;" width="396"><br>                  图-单位的视野                                                                                             图-宽视野与窄视野</p>
<p>            <br>2. 群聚实例</p>
<p>2.1 行进模式<br>    这个实例考虑的是以物理机制为基础的范例,把每个单位视为刚体,通过在每个单位的前端施加转向力,来保证群聚的行进模式。每条规则都会影响施加的力,最终施加的力和方向是这些规则影响的综合。另外,需要考虑两件事:首先,要控制好每条规则贡献的转向力;其次,要调整行进模式,以确保每个单位都获得平衡。<br>    对于避开规则:为了让单位不会彼此撞上,且单位根据对齐和凝聚规则而靠在一起。当单位彼此间距离够宽时,避开规则的转向力贡献就要小一点;反之,避开规则的转向力贡献就要大一些。对于避开用的反向力,一般使用反函数就够用了,分隔距离越大,得出的避开用转向力越小;分隔距离越小,得出的避开用转向力越大。<br>    对于对齐规则:考虑当前单位当前方向,与其邻近单位间平均方向间的角度。如果该角度较小,我们只对其方向做小幅度调整,然而,如果角度较大,就需要较大的调整。为了完成这样的任务,可以把对齐用的转向力贡献,设定成和该单位方向及其邻近单位平均方向间的角度成正比。<br>2.2 邻近单位<br>    凝聚,对齐,分隔三个规则要起作用的前提是得到每个当前单位的邻近单位。邻近单位就是当前单位视野范围内的单位,需要从角度和距离两方面进行判断。<br>    首先根据角度检测,对于不同的视野检测方法是不同的(比如,宽视野,窄视野),下面的例子是对于宽广视野的检测<br>    ·计算d&#61;目标单位位置-当前单位位置,w为d以目标单位反方向的坐标系中的向量坐标。<br>    ·如果w.y&gt;0,则目标单位必然在视野范围内。<br>    ·如果w.y&lt;0,则要看x,y坐标构成的线段斜率,是否在设定的视野区域之外,如果fabs(w.x)&gt;fab(w.y)*_BACK_VIEW_ANGLE_FACTOR,则目标单位在视野范围内。其中的_BACK_VIEW_ANGLE_FACTOR就是视野角度系数。该系数等于1时,视野弧线的直线与x轴夹角是45度,该系数越大,两条线越接近x轴,不可见区域越大,反之,系数越小,两条线越接近y轴,不可见区域越小。<br>     <img alt="" border="0" height="405" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-caf86c56974446e4c9af1bcc733cf68d.png" width="863"> <br>                                                                                  图-宽广视野<br>    此外,书中还给出了有限视野(实际上就是个半圆)和狭窄视野(实际上是一个扇形)的角度检测方法。在经过角度检测后,还要检测距离。如果向量d的数值小于当前单位的长度与视野半径的乘积,即可以认为目标单位与当前单位足够接近。这样经过角度
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP