行星过山车中复杂运动场景的应用矩阵数学

在开发《 Planet Coaster》期间,我非常有才华的同事Owen Mc Carthy开发了一个人群系统,使我们的公园充满了成千上万的智能代理,这些智能代理从目标到目标都在导航,并播放各种有趣的动画和交互方式。 在本文中,我将重点关注这些动画和交互,更准确地说,是系统的某些技术方面如何洒到动画团队的膝盖上。 成千上万的客人! 人群中的每个成员实际上都是一个粒子,它根据AI决定要去的地方从A点流向B点。 如果客人想要停下来坐在长椅上,则客人需要离开该粒子流,完成其相互作用,然后无缝地回到人群中,而不会出现任何小故障或交叉。 系统的早期原型 当人群成员处于主要人群系统中时,其位置完全由其所附着的粒子控制。 速度或位置的任何变化均由系统驱动,其动画在现场编写,并采取一些预防措施以确保动画中的移动速度不会与粒子的速度不同步(这会导致很多滑动)。 我们想要进入Planet Coaster的那种有趣的坐姿动画的早期渲染(确实做到了!) 当客人走近长凳时,他们将需要播放“坐下”动画,这将使客人离开长凳一定距离后一直坐着。 您无法以一个线性运动来对此进行动画处理,因为速度变化非常细微,客人的方向发生了转折,并且当他们停下来时需要一段时间才能坐在板凳上。 当来宾仍像流动的粒子一样行进时,无法实现这种控制水平。 简化了人群动画系统以提高性能,因此对于这种精确的运动水平,我们需要能够将交互的控制权交给动画师。…