这个问题提的太好了,既是玩家们很容易察觉到的问题,而深究起来又有很深的技术原理。

这次咱们避免长篇大论,直接直观地看几种物理参数对“真实性”的影响。

1、物理帧率

现实世界是连续的(只要不要深入到量子物理的世界【滑稽】),现实世界也不是由CPU、GPU模拟的;而游戏物理,全靠模拟,模拟真实性的第一个影响因素就是——物理模拟的频率。

先举一个有趣的例子:N年前跑跑卡丁车可以通过截图操作让电脑变卡、然后穿过障碍。这就是物理检测帧率变低导致出现碰撞错误的典型例子。

所以现在成熟的引擎中,通常物理计算频率和显示频率完全是无关的,就算游戏画面卡成了幻灯片,物理也尽可能保证正确性。而物理帧率越高、计算结果就越准确,下面以Unity里的一个简单场景为例,介绍“物理帧率和真实性”的关系。

1、物理50帧(Unity默认的FixedUpdate帧率),小球弹了7下:

2、物理计算降低为20帧,小球弹了9下:

显然,之前50帧的效果比这个20帧的真实太多了。问题是,还能进一步真实吗?答案是可以的。

3、物理计算改为100帧,小球只弹了6下:

有趣的是,进一步降低物理帧率,比如1秒10帧,足球甚至会穿过底板……(穿墙的问题有其他解决办法,不在本回答考虑范围之内)。

好吧,大部分读者到这里应该已经恍然大悟了,由于现实世界的物理过程是连续的,那么只要让物理引擎不断提高计算频率,就可以无限接近真实的物理世界吗?

不是的,有两个问题:1、帧率越高CPU、GPU负担就越大,迟早要超负荷。2、就算帧率足够足够高了,还会有其他更多问题,下面说。

2、物体外形

以一个简单的模型为例。一般的模型都由美术设计师来制作,包含了许多许多的三角面,以下这把枪,从模型来说一般来说有几千个三角面(因为扳机、枪口等位置都由很多的弧面和凸起)。但是物理系统在处理很复杂的外形时,碰撞检测会成几何级数增加。所以必须采用简化的物理外形:

虽然枪的模型有几千个三角面,但是物理方面,我们把它简化为三个长方体、一个圆柱体。糊弄玩家足够了【滑稽(读者表示其实是4个长方体【滑稽】)】。

Unity也支持直接用3D模型作为网格,但是做出了一个非常苛刻的限制:如果一个物体能够在物理世界中自由运动和反弹(被称作刚体),那么它必须具有简化的物理外形。这个问题这么理解:皮球打在不同表面上,它的第一次反弹的方向很容易计算,和入射方向、反弹面的朝向有关。

如果是一把枪撞击到地面上,它会如何反弹呢?你会发现地面碰到枪的位置略有一点差异,那么反弹方向就会有巨大差异,撞在枪口略上一点、略下一点,最终结果会有天壤之别。

所以物体外形带来的复杂度也会对模拟结果带来巨大影响。

3、物体表面的材质

真实世界的碰撞发生时,两个物体之间一定会发生挤压,这个挤压时间很短、速度很快我们可以忽略它。但是在物理模拟时,我们只能采用近似的公式来估计反弹的速度,这就造成了和现实巨大的不同。

现代物理引擎也有“物理材质”的概念,但是它一般只包含“摩擦力”、“弹力”这两个主要方面,与现实世界细究起来差异太大了。

上图是Unity中的物理材质,参数为:动摩擦力、静摩擦力、弹性系数。下面两个是选择不同的物理算法。

4、其它问题

其它问题都和计算复杂度有关,一是物理公式的迭代次数,二是误差的累计。

很多方程求值时要采用迭代逼近的方法,循环次数越多结果越精确,但是我们只能强行限制到有限的次数,否则会导致运算量不必要的增大。

另外就是为避免无限迭代下去,当物体速度小于某个非常小的值时,我们就假设它“完全静止”了,这样可以省下进一步模拟的计算消耗。

5、总结

实时游戏的开发和设计,是一个“造假”的艺术,只要能让用户觉得“真实”,而且从性能上讲可实现,那么就达到目的了。

所以伟大的开发者们一方面不断让游戏更真实,一方面还要尽可能降低计算的开销。最终达到一个大部分人都可接受的结果。

虽然物理引擎的效果目前似乎还不尽人意,但是从技术手段上来说,已经有了长足的发展。总之,想对题主说:能玩不错了,凑合玩吧【滑稽】

python 物理引擎 摩擦力_为什么单机游戏中的碰撞很不真实?物理引擎真的很难做到和现实一样吗?...相关推荐

  1. 用python爬取3dm上的单机游戏评测信息

    用python爬取3dm上的单机游戏评测信息 参考结果 #爬取3dm上单机游戏评测榜,50页的相关信息import requests from lxml import etree headers={& ...

  2. 让子弹再飞一会:游戏中关于碰撞体积的趣闻

    "人被杀,就会死":子弹射出,就要碰到目标,这是个直白的因果关系,在电子游戏里也适用.不过,这个世界上所有简单的因果都有复杂的时候.很久以前,我尝试某款射击游戏的私服时,面对半栋楼 ...

  3. 广州python开发工程师招聘_【广州游戏开发工程师招聘_最新广州游戏开发工程师招聘信息】-前程无忧...

    诚伯信息有限公司广州-天河区0.6-1.5万/月12-18 学历要求:本科|工作经验:1年|公司性质:民营公司|公司规模:5000-10000人 岗位职责1.与一流的开发团队协同工作,分析游戏各种玩法 ...

  4. 吃鸡是python写的吗_吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~...

    原标题:吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~ 吃鸡游戏火爆全球,已经把腾讯的<王者荣耀>都比下去了,有传言,腾讯给"王者荣耀"开 ...

  5. 主角是李逍遥的Java游戏_经典单机游戏仙剑奇侠传一20周年,你所不知道的隐藏剧情...

    原标题:经典单机游戏仙剑奇侠传一20周年,你所不知道的隐藏剧情 要说起经典的RPG游戏那可是当属仙剑莫属了,当年用着老式机和一众小伙伴在一起偷着玩的时光,大家还记得吗.这款游戏可算是开创了一个时代,具 ...

  6. 单机游戏java百鬼夜行_百鬼夜行单机游戏

    百鬼夜行单机游戏是一款角色扮演类的回合制卡牌游戏,游戏采用日系风格进行设计角色卡面以及角色立绘,为玩家营造一个属于妖怪的世界,玩家在游戏中可以收集各种角色进行战斗,探索各种各样的场景迷宫! 百鬼夜行单 ...

  7. python服务器端开发面试_【网易游戏Python面试】python 服务端开发-看准网

    10.21终面已参加,希望能顺利通过终面拿到offer-❤一共三轮,电话面试+笔试+视频面试,视频面试3V110月19日投的新媒体运营的简历,HR说因为是周末,等工作日再联系我,在周一下午三点我接到了 ...

  8. zedgraph支持游标吗_经典格斗游戏中的隐藏人物,当年在游戏厅你能选出来吗

    当年在游戏厅中我们玩到的大部分格斗游戏中都是可以选择隐藏人物的,只要玩家懂得秘籍的使用就能选择自己想选的人物. 有意思的是,这些隐藏人物针对的仅仅是街机玩家,而在家用机的平台上面都是可以直接选用的,甚 ...

  9. 连招 横版 flash 游戏_街机游戏中的无限连究竟有多变态?有种对决叫作没开始就结束了!...

    在街机游戏的发展历程中,催生出了非常多有趣的玩法.而在当年的街机玩家的不断探索中,也把街机游戏曾经神秘的面纱给一一揭开.在这些经典的玩法中让人最印象深刻的技能还是得说无限连了!这个玩法说高级也不算高级 ...

  10. zeal刷新不出来_饥荒:游戏中的这些事物都是无中生有,几乎可以无限制刷新!...

    在饥荒这款经典的生存类游戏中,其事物的"刷新"和许多其他的生存游戏不太一样,有些生存游戏的事物刷新是定时定量的,而饥荒则不完全,就拿牛群来形容,他们必须要有多个成年的牛进行繁殖才会 ...

最新文章

  1. jsp/servlet与ajax实现简单局部日期时间更新
  2. 第二次 图书助手冲刺第一天
  3. 阿里云安全运营中心:DDoS攻击趁虚而入,通过代理攻击已成常态
  4. 微信红包接口 java_【java微信开发】红包接口调用
  5. undertale人物_传说之下所有人物的照片
  6. 根据Uri获取文件的绝对路径
  7. erl_0016 《硝烟中的erlang》 读书笔记003 “error_logger 爆炸”
  8. .NET Core 中 IOptions 有什么用
  9. Redis设计与实现-集群
  10. 刺激战场测试fps软件,绝地求生刺激战场通过GLTools实时显示游戏帧数方法
  11. IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
  12. Win10压缩卷提示磁盘空间不足
  13. Python 爬虫自动访问点击刷CSDN博客文章阅读量
  14. python画一箭穿心_turtle的简单绘图
  15. 2022管理类联考真题试卷不含答案-文都管联院
  16. 一文集齐几大硬核Linux技术公众号,不是精品不推荐
  17. springboot单文件下载和多文件压缩zip下载
  18. linux服务器停止步骤,停止和重新启动许可服务器的步骤
  19. 第一天:Hbase 概述
  20. CSS(七) css列表样式(ul)

热门文章

  1. python借助OpenCC实现中文繁体转简体
  2. 找到服务器系统日志,查看服务器系统日志
  3. addClass(““).delay().removeClass(““);没有效果的解决方式
  4. word打开文档很久很慢_word打开慢,详细教您怎么解决word打开慢
  5. ZZULIOJ1011: 圆柱体表面积
  6. unity2d物体3d效果
  7. 不下心删了线上环境mysql数据库数据,辛亏有惊无险
  8. 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
  9. DhtmlxGrid第一次接触,jsp页面
  10. Ruoyi 整合Flowable UI Modeler 6.7.2