Crowd Simulation人群模拟
人群:一组在相同环境里共享信息的个体。
三种人群模拟模型:
1.自底向上模型:给每个个体定义一套简单的规则(如远离其它个体,逼近其它个体,朝向同一方向等)来模拟整个群体的AI,其缺点是群体行为是不可控的 。
2.宏观定义模型:给整个群体定义一套运动规则(line),每个角色行为要遵循这套规则,虽然群体行为可控,但是规则定义会比较复杂,而且可能会导致个体和个体间发生碰撞等问题。
3.上述两种的结合:将整个大族群分成多个小组群,每个小组遵循整体的运行规则,但每个个体都是在整体运行规则的基础下自己决策的。常见于一些RTS游戏的实现。
Collosion Avoidance System防碰撞系统:一套用于辅助人群模拟,防止个体间发生碰撞的系统。
三种防碰撞实现:
Collosion Avoidance——force-based Models:
避免群体中个体与个体之间发生碰撞,可以通过施加个体间斥力的方式来实现。该方式同时可以用于实现群体寻路:每个障碍物施加一个斥力,离得越近斥力越大,这时只需要给出大概的运动方向就可以实现寻路过程中的碰撞避免。十分适合用于做人群模拟。
Collosion Avoidance——Velocity-based Models:
Velocity Obstacle:当两个物体相向运动时,各自会在对方的速度场中形成一个速度障碍,使对方的速度发生一定的偏移。其存在的问题是实现比较复杂,且存在多个个体时A如果避让B则可能撞上C。
Reciprocal Velocity Obstacle(RVO):把空间上所有的速度形成一个锥形区,用明可夫和等等来算出运动路径,实现很复杂,但是用RVO算法能实现一个