王小铭,钟林海
(1.广东科技学院计算机系,广东东莞 523083;2.华南师范大学计算机学院,广东广州 510631;3.深圳市龙岗区龙岗街道办大综管中心,广东深圳 518116)
基于物理与生物学机理的人工鱼行为模拟
王小铭1,2*,钟林海3
(1.广东科技学院计算机系,广东东莞 523083;2.华南师范大学计算机学院,广东广州 510631;3.深圳市龙岗区龙岗街道办大综管中心,广东深圳 518116)
提出一种简化的基于物理与生物学原理相结合的对象建模方法,并运用到鱼群运动的模拟之中.在该模拟中,人工鱼群的每一个体被定义为一个自主智能体,在个体生物感知模型和群体行为运动的物理机制约束下,采用运动学原理和渐变动画技术,较好地解决了人工鱼集群运动中个体与整体之间的运动协调性问题,在普通PC机上实现了三维鱼群游动较好的计算机模拟效果.
人工鱼; 集群运动; 物理与生物学机理; 渐变动画
群体生物模拟一直是计算机动画研究的热点之一,而生物个体的行为建模则是其最核心的技术.长期以来,国内外学者一直探索各种模拟生物及其行为的方法[1-2].而动画实现的方法则主要有传统的“关键帧”技术和渐变技术.文献[3]、[4]是我国学者涂晓媛和班晓娟以行为建模结合人工生命建模方法所做的人工鱼模拟研究,代表了人工鱼模拟领域的主要成果.然而,所有这些对象与行为建模的过程及其动画实现,都需要描述个体在某一时刻的位置、形状、运动状态及其与其他个体的相关关系,不仅工作量巨大而且对硬件资源的要求非常高(往往需要在图形工作站环境中才能实现),集群行为模拟的复杂程度就更不用说了.针对这一问题,本文提出一种简化的基于物理与生物学原理相结合的对象建模方法,并运用到鱼群运动的模拟之中.在该模拟中,人工鱼群的每一个体被定义为一个自主智能体,在个体生物感知模型和群体行为运动的物理机制约束下,采用运动学原理和渐变动画技术,较好地解决了人工鱼集群运动中个体与整体之间的运动协调性问题,在普通PC机上实现了三维鱼群游动的计算机模拟,达到了较好的模拟效果.
生物的感知和运动行为功能是各种生物得以进化繁衍的基础.每种生物的基本行为均依靠不同的感观信息来决定,模拟生物的感知和运动行为就是要解决好如何根据其感受环境的准确程度,进而采取相应运动行为的逼真程度.
虚拟鱼的感知功能由代表鱼的视觉、嗅觉、触觉等感觉器官的感知器实现.通过这些感知器从环境信息中取得水温、水深、水流方向和速度等水环境的相关信息,以及食物、捕食者、障碍物等场景中的对象信息.经过初步的筛选处理后,将这些信息传递给行为决策模块,以便对个体的进一步行为作出决策[3].为了感知模型得到简化,本文把视觉作为个体的唯一感观,每一个体通过眼睛观察周围可视范围内与其生存有关的目标,通过视觉范围检测和目标距离计算确定感知程度,并为可能的碰撞作出规避预判.
图1表示的是集群中个体的局部视野[5],图中用粗线条表示的个体可见视野是一个以r为半径的扇形区域.任何其他个体落入这个区域,都会被这个个体看见.扇形区域由半径r及角度θ两个参数决定.这2个参数的取值会影响最后的群聚行为:较大的半径r会让个体看到群体中更多的同伴,从而产生凝聚性更强的群体;较小的半径r会让整个群体分裂,形成较小群体的可能性较高.参数θ决定了每个个体的视野范围,视野宽广,就会得到组织良好的群体;视野较窄,得到的群体倾向就会如同蚂蚁那样沿着单一路径行进,如图2所示[5].
图1 个体的局部视野
图2 宽广视野与狭窄视野效果图
一般情况下大部分鱼都在视觉感知范围的半径之内,所以在进行视觉感知检测的时候首先检测目标是否在视觉感知半径范围之内,判断时只需要简单比较自身坐标和其他对象坐标之间的距离D是否小于相应的感知器官的感知范围半径即可.感知主体鱼对象m与感知客体鱼对象o之间的距离公式如下:
(1)
感知程度为距离的反比例函数,而且在鱼群运动中,鱼个体受到邻居的影响远远大于远距离鱼的影响,为距离的2次或者3次方函数[6].
在集群整体考虑过程中,本文使用270°的视野角度,得到了组织结构良好的群体.定义视觉范围是为了限制生物个体的感知范围,从而避免了可以无限感知环境的不真实行为.
在感知建模时有2点特殊的简化处理:第一是场景中鱼对象数目多时,根据集群运动的生物原理,鱼只是对感知范围内的目标感兴趣.第二是对于几何形状较复杂的障碍物和角色,可采用长方体、圆柱或球体作为边界箱,以加速实现遮挡判断,提高感知性能.
与视觉范围检测直接相关的另一个重要问题就是碰撞检测,对可能的碰撞作出规避预判.碰撞检测就是检测虚拟场景中不同对象之间是否发生了碰撞.如果一个物体的任何部分进入视野范围并且没有被其他物体全部遮挡,则物体是可见的.本文对于礁石遮挡体采用包围球代替进行远处对象的可见性判断.虚拟鱼需要处理的不是碰撞发生之后如何进行下一步行为,而是需要考虑如何规避可能发生的碰撞,也就是虚拟鱼是不允许和场景中的障碍物发生碰撞的.当“个体”分析得出对当前行为的执行将会导致碰撞的发生时,将发出碰撞规避的行为决策,所以关键是如何推断当前行为状态下自身是否会和其它礁石等对象发生碰撞.分析过程如下:
对于可能发生的碰撞,需要满足2个先决条件:一是碰撞主体M与碰撞客体O之间的距离Dm小于某一阈值;二是碰撞客体正在或者可能出现于碰撞主体当前行为的路径上.而且先执行第1点的判断,如果满足再执行第2点判断.这是由于第1次对距离的判断将剔除掉大部分对象,第2次判断只需要针对比较少的对象进行即可.另外对距离判断的计算量也要远少于对游动路径判断的计算量,所以这样的判断顺序是合理的.
首先,设置运算向量a为个体到障碍物位置间的差值.接着取a和v的内积,将a投射到v上,由此可以得到向量p,用向量p减去向量a得到向量b,如果向量v和圆在某处相交,则必须满足以下2个条件:首先,p的长度必须小于v的长度;其次,b的长度必须小于该障碍物的半径r.如果两者均满足,则需要校正转向力;否则,该个体可继续沿着当前方向前进.本文模拟的是海底大规模的群体运动,为了更好地展示效果,将鱼群的活动范围限制在一个区域内,对于该区域边界也实行碰撞检测规避.
图3 碰撞检测示意图
根据生物鱼的特性,采用以下这些行为决策准则:
(1) 行为的优先权:以外部信息和自身意图决定当前最优先的行为;
(2) 行为的持续和终止:在意图得到满足以前,保持对当前行为的执行,避免行为发生抖动.
行为决策主要基于外部信息和内部的自身意图.个体负责接收并分析外部信息,包括水环境信息以及感知到的各种对象的信息,结合当前的自身意图序列,作出最后的行为决策.这里的行为决策包括两部分内容:首先是行为模式的确定,包括碰撞规避、逃脱捕食、休闲游动、集群游动等;然后是对确定的行为模式进行参数化.行为模块的任务则是将参数化的行为模式分解为例如前进、转弯等的具体动作.
2.1行为选择系统的物理学原理
为了简化模型设计,针对鱼个体的模拟引入刚体模型的概念.刚体内任意两点间的距离是始终保持不变,但实际上物体受力时总会有变形.如果物体受力时变形很小,并且忽略变形后不影响研究问题的实质,则仍可把变形前后的物体看作一个刚体,这样简化了对问题的研究.本文中对大规模群体模拟时,不考虑同一个体各部位之间力的相互作用及由此产生的形变.
在刚体运动建模中,研究的重点是如何根据物体的物理特性,计算出物体在不同时刻所受的合力和合力矩,建立物体运动的数学表示,即运动方程.刚体的运动状态可表示为式(2)所示的初值问题[5]:
(2)
其中p代表物体在环境中的状态,一般是一个向量,描述了刚体的位置、方向等.t是当前时刻,v是物体的速度,w是物体的角速度,a是加速度,ε是物体的角加速度,式(2)为物体的运动方程或物体的状态变化方程.直接或间接使用物理方法及相应的物理参量,建立物体行为的数学表示,以此控制物体的行为,获得逼真的运动效果.
在本文建立的个体类RigidBody中,使用fWidth(宽)、fLength(长)、fHeight(高)3个量来表示个体的形状特性.
运动学模型就是通过直接给出物体的运动速度或者运动轨迹,来控制物体的运动规律.最简单的,可以通过确定每一时刻物体上的点在空间世界坐标系中的位置来实现.当物体只有运动而没有变形时,物体上点的相对位置保持不变,它的运动可以用一个统一的公式来表示:
(3)
根据真实世界中鱼个体的情况,可以把鱼左右两侧鳍摆动的力抽象为调整自身转弯和产生角加速度的推动力,把尾巴摆动产生的力抽象为使个体产生直线加速度的推进力.为了在三维空间中达到更逼真的模拟效果,同时在个体身上加入上下两侧的推进力来改变鱼上浮或下沉的运动状态.在个体类中,引入6个力来表示个体在运动过程中的一系列受力情况.
图4是各力作用在个体上的示意图,其中Thrust为作用在个体尾部的推进力,PThrust、SThrust、UThrust、DThrust为作用在个体左右上下侧的推进力,4个力使个体产生转动,Fa为个体受到的流体阻力.
图4 个体受力示意图
2.2集群运动的实现
在模拟群聚运动过程中,个体的受力是根据自身和周围个体的运动情况而实时变化的,我们把这些力全部设置为距离、角速度等一些物理量的函数,由个体根据这些量来自我调整,使个体更具有智能性.
根据凝聚和分离规则,同类个体都有聚集在一起的倾向,但是当个体之间的距离小于某一阈值时,分离规则的贡献必须足够大,才能避免个体碰撞在一起.所以,个体之间的分隔距离是很重要的参数.为此,本文将用作避开的转向力,写成分隔距离的函数.使用简单的反函数,使分隔的转向力和分隔距离成反比,如下式:
Fs=m1*steeringforce*
(unit[i].length*factor)/fabs(d),
(4)
其中,m1是根据个体与邻近单位位置关系而设定的转向力方向系数,steeringforce是设置转向力的初始值,factor是设置的初始分离因子,unit[i].length是个体的身长,d是两者之间的距离向量.由上式可以看出,分隔距离越小,得出的避开转向力就越大.
就对齐而言,考虑某个体当前的方向与其临近成员间平均方向间的角度.如果该角度较小,只需对其方向做小幅度调整;如果该角度较大,就需要做较大的调整.为了实现上述功能,把对齐用的转向力,设定成和该成员当前方向及其临近成员平均方向间的角度成正比.运用下式:
Fs+=m1*steeringforce*fabs(sub2),
(5)
其中,sub2是个体速度与平均速度的向量差.
2.3人工鱼渐变动作的实现
将鱼个体看成是刚体而进行的行为分析和行为选择,对于鱼群整体游动来看,是符合自然界规律的.但是从单个个体来看,就显得机械、僵硬.为了解决这个问题,我们采用渐变动画技术,使刚体鱼的运动具有柔体鱼运动时的身体形变效果.
这里强调“动作”隐含“无意识”的概念[7].本文将鱼的碰撞规避、逃脱捕食者等归为行为范畴,而向前游动的实现、转弯的实现等归结为动作范畴,这样的好处是可以分层次处理,条理清晰,有利于分工协作,最重要的是便于扩展.
根据鱼的运动规律,将鱼的动作大致概括成前进、左拐和右拐.人工鱼的任何行为都可由这3个动作组成.
(1)前进.前进是鱼在运动中的主要动作,在没有障碍物或者其他力的作用下,鱼基本都会以前进的运动为主,匀速与减速前进时,鱼的尾鳍基本都是不会摆动的,只有在加速前进时,鱼的尾鳍才左右摆动,以产生向前的推动力.本文抽象出鱼在游动中的5个状态模型(图5).其中L是尾巴完全左偏的状态,ML是尾巴左偏与中间位置的中间状态,M是中间位置,MR右偏与中间位置的中间状态,R是右偏状态.
图5 鱼在游动中的5个状态
基于渐变动画技术,对个体模型进行插值计算,生成具有形变的柔体动画效果.具体思想如下:
①由L变化到ML可以通过以下公式计算:
Dest=L*(1-t)+ML*t;
(6)
②由ML变化到M可以通过以下公式计算:
Dest=ML*(1-t)+M*t;
(7)
③由M变化到MR可以通过以下公式计算:
Dest=M*(1-t)+MR*t;
(8)
④由MR变化到R可以通过以下公式计算:
Dest=MR*(1-t)+R*t,
(9)
其中Dest是目标模型,t从0渐变到1,L、ML、M、MR和R是上文各状态的源模型,从上面式子可以得出,个体鱼左右摆动的式子可以用式(6)~(9)联合得出.因为L→ML→M→MR→R的渐变过程如果选用线性变化,个体鱼的摆尾效果将非常机械僵硬,不符合真实鱼的运动规律.本文选用非线性变化:T=tan(t),用T代替t.按照此曲线变化,鱼尾鳍的摆动就符合自然规律了.
(2)左、右拐.当鱼遇到障碍物或者其他因素影响,则会改变原来的运动状态,例如躲避障碍物,鱼就要拐弯.左右拐弯也是鱼的一种主要动作.要生成左右拐的动画效果,需要考虑2个因素:一是选用哪几个源模型进行渐变计算;二是鱼身弯曲的角度θ如何确定.
左拐选用L、ML、M等3个模型进行渐变计算,鱼身弯曲的角度θ可以用鱼的转身角度来近似计算.
Dest=ML*t+M*(1-t),
(10)
(11)
其中θ是鱼转弯时鱼身弯曲的角度,θ0是ML模型弯曲的角度.同理,右拐将选用R、MR、M等3个模型进行渐变计算,计算公式如下:
Dest=MR*t+M*(1-t),
(12)
(13)
在普通PC机及Visusl C++6.0环境下,利用DIRECTX3D对鱼的集群运动进行了仿真试验.实验方法及处理流程如图6.
图6 实验流程图
在面向对象设计思想的指导下,本文设计的人工鱼群感知和行为机制模型分别封装在各自的对象之中,在上述实验流程的驱动下完成对鱼的集群运动模拟.与图形工作站环境下复杂模型的模拟效果相比,本文的建模方法具有模型相对简单、环境资源要求不高,模拟效果比较好的特点.图7、图8是在上述实验流程下某一时刻产生的群聚效果截图和碰撞检测与规避原则下的鱼群运动截图.
图7 一段时间后群聚效果
图8 碰撞检测和规避原则下的运动
Figure 8 The movement accord to the principle of collision detection and avoid rules
本文基于物理与生物学机理抽象出一个简约的人工鱼群感知模型和行为模型,并应用到人工鱼群游动的模拟之中.人工鱼群的每一个体都是一个自主智能体,能感知到周围相邻个体的运动情况和其它环境物体的状态,并能为达到所在群体更好的集群运动效果而时刻调整自己的运动状态,从而实现由感知驱动行为的运动模式.在个体生物感知模型和群体行为运动的物理机制约束下,采用运动学原理和渐变动画技术,较好地解决了人工鱼集群运动中个体与整体之间的运动协调性问题,达到了较好的模拟效果.
[1] 曾芬芳. 虚拟现实技术[M]. 上海:上海交通大学出版社,1997
[2] LANGTON C G. Artifical life[M]//LANGTON C G. Artificial Life, SFI Studies of Complexity(Voll.VI).London: Addison-Wesley, 1989.
[3] 涂晓媛.人工鱼-计算机动画的人工生命方法[M].北京.清华大学出版社,2000.
[4] 班晓娟,吴崇浩,王晓红,等. 基于多Agent的人工鱼群自组织行为算法[J].计算机工程, 2007,33(23):182-188.
[5] BOURG David M, SEEMAN Glenn.AI for game developers [M].O’Reilly, 译. 南京: 东南大学出版社, 2004.
[6] CRAIG W. Reynolds,Flocks,Herds,and Schools: A distributed behavrioral model[J]. Computer Graphics,1987,21(4):25-34.
[7] TYRRELL T.Defining the action selection problem[C]//Proceedings of the Fourteenth Annual Conference of the Cognitive Science Society, Bloomington: Indiana University,1992.
Keywords: artificial fishes; Flock; mechanism of biology and physics; tweening animation
SimulationofArtificialFishesBasedonPhysicalandBiologicalMechanism
WANG Xiaoming1,2*, ZHONG Linhai3
(1. Department of Computer, Guangdong University of Science and Technology,Dongguan, Guangdong 523083, China;2.School of Computer, South China Normal University,Guangzhou 510631,China;3.Longgang Sub-district Office, Longgang District,Shenzhen, Guangdong 518116,China)
For the artificial fish simulation, there exists a problem of huge workload demands and strict request for hardware resources to model objects and behaviors to achieve animation. In this article, a new simplified model object method is put forward to solve this problem, based on the combining of physical and biological mechanism. This method is used to simulate the movement of fishes. In the simulation, each individual fish is defined as an independent agent, which is restrained by the physical mechanism of group activities and model of biological perception of an individual. According to the kinematics knowledge and the tweening animation technique, the problem of coordination between an individual and the overall is solved well, and good simulation of three-dimensional swimming of fishes on PC is achieved.
2011-04-17
*通讯作者, wangxm@scnu.edu.cn
1000-5463(2012)01-0058-05
TP391
A
【责任编辑 庄晓琼】