-
2010-02-07
不可以忽视的有趣空气 - [竞速大论]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fxcarl.net/logs/58126310.html
(本文图片大部分来自于互联网,分散在各种地方,都有可能失效的……)
到了第四篇关于飚车世界物理的文章了。时间真的过得快……上次也说过,这次我们将会写一些关于空气动力学的东西。首先要说的是,由于空气动力学本身极度复杂,F1这些年来一直在玩这个东西。所以一篇文章显然只能写一些简单的东西,将来肯定还会需要重新返回来继续讨论其中的细节。不说多了,我们开始正文:

空气动力学本身和汽车的关系非常大,因为赛车不仅要处理空气阻力的问题,也还会从空气身上借力,产生下压力来帮助赛车更快的过弯。更有趣的是赛车本身亦需要用空气来帮自己解决散热问题,刹车片的摩擦,引擎的工作都会产生大量的热,如果不想办法把它们吹凉下来,整个车都会被烧为灰烬。更更有趣的是,进气系统的设计还会直接与空气产生互动而影响到车辆的动力性能!
尽管空气与汽车有着那么密切的关系,但是由于空气是现实中无处不在的东西,所以想要计算一些基本的空气与车辆的互动比计算车辆的其他部分都要简单。我们这就用最简略的方法,看看这有趣的空气可以给赛车游戏带来多大的变化。限于每次的篇幅,我们这次只讨论阻力相关的部分。

法拉利的风洞
计算一切空气相关的系统时都需要先准备好计算用的参数。而这些参数的制备工作实质上是一组几何问题。它需要我们得知车辆在自身空间中的速度向量和“欧拉角”。所谓自身空间就是以车辆的前后为一个轴,以车辆的左右为一个轴,以车辆的上下为一个轴。自身空间中的速度向量就是看车辆相对于自身的当前位置,接下来会往什么方向移动,以及移动多少。
“欧拉角”是以Yaw、Roll、Pitch来描述一个物体的姿态的。从文字说起来倒是很简单,以俯仰(Pitch)为一个维度,左右倾斜(Roll)为一个维度,左右转动(Yaw)为一个维度的坐标系统。这样可以知道车辆在运动的过程中,是朝向什么方向的。譬如说我们知道车辆在向右侧15度的方向滑动。这个Yaw+15度就是一个“欧拉角”度。

不同游戏由于采用的基础空间系统不同,计算自身空间速度向量的方式各有不同。而有了速度向量之后,根据坐标计算欧拉角的方法倒是要相似很多。不过由于通用性比较差,这里就不介绍具体飚车世界中的算法了。反正大致就是把速度矢量做几次空间变换这样子,然后再接着求几个反三角函数。
当以上的参数统统齐备之后,好戏正式开始。
首先是阻力。它可以依靠车辆厂商提供的Cd系数来计算。公式甚是简单
F = 0.5 * 空气密度 * Cd系数 * 迎风面积 * 速度^2
由于我们拥有了车辆相对于自身坐标的速度,所以我们只需要用向车辆正前方的移动速度来作为阻力计算中的速度项就可以了。

可是这样就可以算结束了吗?虽然这样的公式已经让游戏中的车辆工作的很像那么回事了,但还是情理上感觉有点怪怪的。这种不和谐感的原因究竟是什么呢?
呒,我们好像也应该计算车辆倒车和侧向移动,垂直移动时的阻力吧 ……譬如侧向阻力可以让车在滑行时更容易停住之类的。
既然要计算这些前方之外方向的力,相对来说与正面计算比较相似的,是倒车的时候。只是通常来说很难找到车辆倒车时的Cd系数。比较想偷懒的话,可能直接把正面的 Cd 系数乘以 2 就差不多了。

侧面的阻力和垂向的阻力会有些不同。因为和车头车尾相比,车辆的前后两部分是不对称的。所以在侧向和垂向的阻力上,将会对车身产生扭矩。会让车辆比预期的稍微不容易侧滑,也会让车辆腾空之后的动态变得更可预计。
那么这样的力应该怎么计算呢?答案是 …… 先放下他们吧。我们下次再来研究它们!我们只需要一个最简单方案就可以了。于是我们大致可以采用放大迎风面积的方式来计算车辆侧向和垂向的阻力。侧向的时候,我们采用两倍的 Cd 系数。然后使用侧面的迎风面面积,一般来说是正面的2~3倍来计算。
而至于垂向的就更简单了,Cd 系数在这里已经不重要了,直接用车的长度乘以宽度的面积来计算阻力就好了。这样一来,我们就得到了一个虽然简单,但是综合性很强的阻力系统了。

可是这个阻力系统只是用来限制车辆的速度的话显然就显得有些过于不近人情,也没什么游戏乐趣。所以我们会让这些公式变得富有生气起来。不妨仔细的看一下我们的公式吧,其中有一个非常重要的项目叫做“空气密度”。而这个参数恰恰会因为很多现实中的情况而改变。
我们常常用于计算的是理想空气密度是1.297千克每立方米。这个密度是在海平面的一个标准大气压下、0摄氏度、空气成分等其他参数全部都是绝对标准指标下的数值。相对来说,它显得那么的纯净而又有些无趣。在实际中,根据海拔位置,气温,湿度等等印度,空气密度将会是一个变量。注意这个数值的大小。它的数值很小,于是就更加显得敏感。大家可能不知道,在 30 摄氏度的环境下其余条件依然为理想状态时,空气的密度便只有 1.164 千克每立方米了,这是高达10%的差距!
10%的差距会随着速度的平方而增长。在200公里每小时的时速下,将会节省出 8~10ps 的马力,这又是什么概念?或许这对于一台 500ps 的车没有什么区别,可是对于一台不到 300ps 的车呢?

测量赛场环境的重要性远比一般观众理解的要高的多
不仅温度,气压(无论是受高度还是天候影响)、湿度、空气成分的变化(各种颗粒的比例,像中国这种灰大的地方密度肯定大)都会直接的影响到空气的密度变化。甚至我们可以把雨量、雪量等其他天气状况计算在空气密度的变化当中来作为参数使用。这些会有多大的变化?
风也会在拥有风阻的车辆上发挥作用。相对于不断运动的车辆,风向在总体上是固定的(我们暂时不考虑各种建筑环境造成的风)它也会微妙的改变车辆的运动方式。我们不妨来继续用数值说话。我们以前提过,28m/s 的运动速度是车辆在 100公里每小时 下的近似速度。而可以吹拂起旗帜的风就可以达到 5m/s,这可是达到赛车场上平均车速 10% 以上的速度!它的改变将会改变比赛时的圈速几乎是不言而喻的事情。甚至大风阻的车辆可以在顺风时创造出不敢想象的成绩也不一定。

而想要制造这样的变化困难吗?或许很难,或许也很简单。只需要把游戏中这些全局通用的参数和天气预报做一个简单的绑定 …… 是不是很有趣呢?
好吧,这次的东西也就写到这里。飚车世界中已经实现了上述内容的全部技术底层,不过由于游戏已经运营多年,不太可能实际使用这些技术。或许有朝一日我们会在测试服务上看到这些东西,也有可能不会。毕竟它带给游戏的影响并非全部都是可预计的方面。我们很难想象如果连续阴雨一个星期,会对一个想要刷新纪录的玩家车队造成多大的影响 ……
下次我们依然会继续空气动力学的话提,下次我们将会聊到"翼"的和下压力的故事。不过在中间正好是新年……过年的时候,可能会写点别的吧。
随机文章:
悬架行程限制与物理算法局限 2010-01-31悬架预载与对不齐的轮胎位置 2010-01-242.8f 与 3.6f | 魔术参数与玩家体验 2010-01-16永濑丽子 | Reiko Nagase 2009-08-14Clutch | 可以玩一玩的僵尸题材竞速游戏 2009-08-08
收藏到:Del.icio.us






评论