一场燎原的大火正向你扑面而来!本文将介绍在游戏中模拟火焰在自然界中传播时用到的一些技巧。

《孤岛惊魂》中使用的简单模型

Jean-Francois Lévesque 参与了制作《远哭 2》的火焰传播系统,以下是他在他的文章(参考[1])中所说的。

这里使用的火焰传播系统非常简单,为了游戏性必须牺牲一些真实性。作者喜欢将事情简单化,所以不会有复杂的数学公式和流体模拟。

对于 2D 平面来说,比如一块草地,为了模拟火焰传播,可以用一大块网格覆盖住。

接下来模拟火焰传播的过程是非常简单的。每个还没着火的网格有一个耐久度,而周围的火焰会让这个耐久度减小。当耐久度等于 0 时,这个网格就算是起火了,这个网格上的火会继续减少其他相邻网格的耐久度。

当然,非常容易着火的干草地的耐久度要低一些,而不会着火的石头的耐久度是无穷大。

如果是 3D 模型,就添加 AABB 盒,并且会准备几个模型以表现不同的烧毁程度。

在《远哭 2》中,火焰传播还会受到风的影响。但也并没有用到复杂的空气动力学,而仅仅是把风的方向向量,与火源到未着火网格的方向向量的点积,作为火焰的“攻击力”。

当然也有一些很重要的优化。

细节层次:level of detail,简单来说就是近处的火焰粒子较为精细高清,而远处的较为模糊粗糙。玩家看不清楚远处精细的东西符合我们的认知,这样设计也能节约很多 CPUGPU 计算资源。

事件管线:同样是为了节省 GPU 计算资源,我们会将相同的地块放到一个 AABB 盒中,即已经烧完放到同一个 AABB 盒,正在燃烧的放到另外一个。

约束条件:如果没有一些约束条件,游戏拍卖玩家扔的火很可能烧遍整个地图。因此可以这样设计,玩家扔出的莫洛托夫有 60 点“攻击力”,而一个方格里的草有 8 点“耐久度”,因此一个火瓶可以点燃 7 格的草。而这些在草上燃烧的第一遍火只有 50 点“攻击力”,再传下去的火只有 40 点“攻击力”,如此下去,火就不会永远燃烧下去了。

风对火焰传播的影响
以上是火焰传播的简单模型。但想要模拟真实的火焰传播,仍然有许多值得把玩的地方。

在有风影响时,火焰整体通常会呈现出鸡蛋状。黑色箭头所指即风的方向,受到风的作用,前端火焰,即鸡蛋尖,要比后端火焰,即鸡蛋尾的传播速度快。

例如在 S. Krezel 制作的虚幻 4 插件中,草地上的火焰传播在风的影响下是这样的:四幅一组的图中,左边两幅是风由左向右,右边两幅是风由右向左,上面两幅是弱风,下面两幅是强风。

可简单地把风方向向量与火焰向量点积作为火的传播速度,也可以根据在实验室的计算与观察来更真实的火焰传播。

斜坡对火焰传播的影响

除去风外,斜坡也是对火焰传播影响很大的因素。在参考[3] 中,作者得到的结论是,当前端火焰顺着风的方向,并且这个方向是上坡时,火焰的传播速度最快。数据如下:

左上图的可燃烧物是地中海松的落叶(pine halepensis litter), R0 是火焰在无风无斜坡时传播的速度,R 是火焰受到风与斜坡影响下的速度,SLA 即斜坡角度。

右上图可燃物是地中海松的落叶,fs 是火焰只受到斜坡的影响时的速度,fw 是火焰只受到风的影响的速度。

下面两幅图的可燃物是南欧海松的落叶(pine pinaster litter)。

而在参考[4] 中,作者依据 FIRETEC 火焰传播模型得到了以下结论:

其中 ROS 是火焰传播的速度,Slope 是坡度,U 是风的速度,而 L 是前端火焰的宽度。可以看到,”+“符号代表的强风模型,其火焰传播速度几乎与坡度呈线性,而”⭕“符号代表的弱风模型,其火焰传播速度在由下坡变为上坡后才与坡度近似线性关系。

火焰温度

火焰颜色条及其 RGBA 值。来源:参考[5]。

【游戏设计图形学】模拟自然界火焰的方法相关推荐

  1. 【游戏设计图形学】在地图上生成蜿蜒河流的两种方法

    引言 在开发游戏时,我们经常需要用到随机生成的地形,而河流是其中不可或缺的一部分.本文章将探讨如何在地图上生成河流. 河流生成的自然原因 高山积雪,地下水,雨水是河流发源的主要原因,而由于雨水形成的小 ...

  2. vue列表长度限定_游戏设计中的中英文名称可输入/显示长度规范探究

    大家好,我是游戏交互设计师懒蚂蚁GM~ 我们刚接触一款新游戏时,一般都会创建一个让自己满意的游戏角色,然后将自己的情感和行为映射到这个角色身上,以这个角色的身份去和虚拟的游戏世界进行互动.那么,我们在 ...

  3. 基于Unity3D的体素沙盒游戏设计与实现(上)

    基于Unity3D的体素沙盒游戏设计与实现 摘    要 随着计算机硬件和软件技术的逐步发展,世界游戏开发行业也在日益壮大,涌现出不少优秀的作品,逐渐成为各国文化创意领域一张闪亮的名片.本文以全球知名 ...

  4. 未来游戏设计的十大技术挑战

    "不到一年以前,硬件的处理能力还不足以让我们动态生成游戏中水的运动效果,"Lee Bamber(李.巴姆博)说,他是游戏创造者(The Game Creators)公司的创始人,一 ...

  5. 游戏设计中的纹理贴图

    以下内容综合了维基百科,百度百科,各游戏开发论坛,博客等,有些地方并未详述来源: 若有冒犯版权,请留言,我将删除博文.谢谢 BMEM技术(凹凸映射Bump Mapping) BMEM技术通过一张叫做高 ...

  6. 基于android平台的24点游戏设计与实现需求分析,基于Android平台的24点游戏设计与实现需求分析_毕业设计论文.doc...

    基于Android平台的24点游戏设计与实现 摘要 随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来.目前国内最常见的移动开发平台有Symbian ...

  7. 哈工大游戏设计复习题

    哈工大游戏设计复习题 由于网络上以及授课老师没给,我在这借用下学长给的资料,希望能给与现在学习的同学.未来学习的师弟师妹一些帮助. 什么是游戏:游戏是一种娱乐活动.是本身具有特定的流程模式.规则条件. ...

  8. 计算机图形学流体仿真mac网格,正交网格下不可压缩流体的图形学模拟

    摘要: 本文主要讨论了正交网格下不可压缩流体的图形学模拟.基于物理的动画模拟出像水,烟和火这样的流体现象在视觉效果上越来越重要,而且在实时游戏中也开始产生影响. 本研究主要内容包括:第一章阐述了用于描 ...

  9. 游戏设计的艺术:一本透镜的书——第十六章 故事和游戏结构能用间接控制巧妙地联合起来

    这是一本游戏设计方面的好书 转自天之虹的博客:http://blog.sina.com.cn/jackiechueng 感谢天之虹的无私奉献 Word版可到本人的资源中下载 第十六章 故事和游戏结构能 ...

  10. 《游戏机制——高级游戏设计技术》一2.4 渐进型游戏

    本节书摘来异步社区<游戏机制--高级游戏设计技术>一书中的第2章,第2.4节,作者: [美]Ernest Adams 译者: 石曦 责编: 陈冀康,更多章节内容可以访问云栖社区" ...

最新文章

  1. 网站建设中你不知道的八大SEO技巧
  2. C/C++与Matlab混合编程初探
  3. 项目管理其实可以简单一点——任务分工
  4. 数据库:MySQL、HBase、ElasticSearch三者对比
  5. curd什么意思中文_每日一句英译英:She's a ten什么意思?
  6. 在EL表达式中引用ADF Faces组件
  7. int和Integer的比较
  8. linux系统硬盘数量,Linux ext4文件系统划分磁盘inode数量
  9. python打印国际象棋规则口诀_python输出国际象棋棋盘的实例分享
  10. org.springframework.mail.MailAuthenticationException: Authentication failed 解决方案
  11. spring 中scope的singleton和prototype区别
  12. 计算机应用基础教程清华大学,清华大学出版社-图书详情-《大学计算机应用基础教程(第3版)》...
  13. 约束最优化方法之最优性条件
  14. 我们很高兴地宣布我们正在与 OKC 整合
  15. 《兔战队》第二卷桥d
  16. C++ 编译宏的一些符号
  17. 2020《人工智能技术服务》专业人才培养方案
  18. javax.servlet.Filter详解(二) 转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html
  19. linux 启动 grub 修复工具,当Ubuntu无法启动时,如何修复GRUB2?
  20. python发post请求json_python request 以json形式发送post请求的正确的姿势

热门文章

  1. yolov5m.pt triton部署
  2. 金蝶迷你版所有数据引出excel没有反应,如何处理
  3. C++ 多态性 (polymorphism)
  4. python的分隔符_python分隔符
  5. 使用formData对象提交表单并上传图片
  6. 洗内衣、白鞋、羊毛衫……需要专用清洁剂吗
  7. 玩转MongoDB4.0(MongoDB基础总结)
  8. 算法工程师修仙之路:机器学习实战(四)
  9. 让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)
  10. Hadoop系列-MapReduce设计思想与原理机制(九)