论文部分内容阅读
自然界中动物群体的集体运动非常神奇壮观,引起人们想要在计算机中实现这些群体运动的兴趣。基于关键帧技术的计算机动画首先由动画师根据剧情绘制出动画中的关键画面,然后由动画软件根据补插规则将关键画面之间的一系列画面生成出来,最终生成动画。对于传统的手绘动画,基于关键帧技术的计算机动画无疑是个进步,但是它仍然存在一些缺陷,如需要消耗动画师大量的劳动,动画角色的行为缺乏自主性等等。群体动画的出现将计算机动画带到一个新的高度。群体动画不仅要求群体整体的运动协调一致,而且要求每个个体的运动也具有独特性,因此为满足这个要求需要对每个个体的运动行为进行控制。目前主要有自主行为控制方法和引导行为控制方法,自主行为控制方法主要通过控制个体的运动行为来控制群体整体的行为,而引导行为控制方法由用户控制群体的宏观运动行为,个体的行为在群体整体行为的引导下产生。计算机动画的人工生命方法是一种自主行为控制方法,该方法很好地克服了基于关键帧技术的计算机动画制作方法存在的不足。但是该方法需要为动画角色构建生物力学模型,而构建生物力学模型不仅难度高而且运行时计算量大,因此该方法虽然可以使动画角色的行为具有很高的自主性,制作出生动逼真的动画,但是制作过程比较复杂。微粒群优化算法是根据鸟类的群体行为设计出的一种群体智能算法,主要用于求解优化问题。微粒群中的每个微粒从初始解开始,在最优解的引导下能够找到很多的可能解,将微粒看作运动个体,将可能解看作运动空间中的可行位置,那么微粒群优化算法可以用于为群体运动中的个体生成运动路径。因为微粒群优化算法容易实现并且计算速度快,所以用它控制群体的整体运动生成个体的运动路径来制作群体动画比较简单。但是微粒群优化算法中的微粒被看作是没有质量没有体积的点,因此在将微粒换成有一定形状大小的个体时个体之间难免会发生碰撞。针对以上两种行为控制方法存在的问题,本文对群体动画中的行为控制方法进行研究,将自主行为和引导行为结合起来,提出一种混合行为控制方法。该方法在标准微粒群优化算法的基础上加入碰撞检测机制以及碰撞避免措施,通过微粒群优化算法控制群体的宏观运动行为引导产生个体的运动行为,同时在碰撞检测机制和碰撞避免措施的作用下,每个个体能够自动地避开环境中的障碍物以及其它运动个体,具有一定的自主性,所以该方法不仅实现起来简单而且还能使个体的运动自然逼真。一般的碰撞检测方法有时会出现个体穿透障碍物的现象,因此本文提出加入穿透检测的碰撞检测方法。一般的碰撞避免方法存在个体转向过大的问题,因此本文提出沿切线方向运动的碰撞避免方法。并且本文设计出群聚算法和跟随领导者算法两种具体的混合行为控制算法,在ACIS和HOOPS平台上用C++编程实现对这两种行为控制算法的模拟,并将模拟效果中较好的场景数据和路径数据进行保存。为快速制作出大量的角色模型用于群体动画中,本文提出基于遗传算法的NURBS模型群体生成方法,由一个已做好的NURBS模型快速生成一群外观类似但不完全相同的模型。最后利用生成的角色模型以及保存好的场景数据和路径数据,在Maya中制作出群聚动画和跟随领导者动画对群聚算法和跟随领导者算法进行检测。