完全表现出现实世界中各种偶然而不可预料的风景!

    【Forza Horizon】系列是一款独特的开放世界赛车游戏,就如本系列的爱好者所了解的一样,在最新作【Forza Horizon 3】中,游戏的舞台完美的再现了包含澳大利亚的风景,自然环境与天空,以及气候等要素。在GDC 2017最后一天的分享【Shoot for the Sky: The Ambitious HDR Time-Lapse Skies of FORZA HORIZON 3】上,以【Forza Horizon 3】的天空为焦点进行了技术解说。

 
Playground Games的光照主美术师 Jamie Wood

    本次担任分享讲解的,Playground Games的光照主美术师 Jamie Wood。因为3月3日是美国Nintendo Switch的发售日,Wood幽默的提示到在听讲时,”请关闭Nintendo Switch的电源”。

    因为本次分享的主题的"HDR",作为Xbox上首次对应HDR的游戏,本以为会公开一些HDR实现的相关经验技术,但实际完全不是。【Forza Horizon 3】中,不在使用前作的【Forza Horizon 2】中基于环境模拟的来表现天空和云彩的方法,完全替换为了基于实际拍照的方法。因为准备了原始的HDR信息,也应该不需要任何HDR的经验技术了。

    因为是基于实拍来表现天空表现,虽然需要大量的成本,资源以及人员,成为了非常麻烦的工作,但在只有【汽车】,【道路】,【天空】3个要素构成的【Forza Horizon】系列里,有着巨大的效果。

    Wood首先介绍了前作中环境模拟的天空表现。通过一些云的模板,以及128阶段的云光照,随着早上,傍晚,夜晚的时间变化一起光照也发生着变化。即便是现在来看也是毫不逊色的美丽景色。

【Forza Horizon 2】的天空表现
 

    但是这种环境模拟的方式终归是模拟的,只能有限的进行表现,和现实的天空有着很大的差异。现实的天空中,经常会出现戏剧性的风景,特别是晚霞美丽可以称作“魔幻时刻”。而【Forza Horizon 3】追求的,就是在游戏中再现这种现实世界丰富的天空表现,所以在开发初期就确定采用基于实拍的方式。

【可是现实的天空更加丰富多彩】

    基于实拍的天空也有简单的实现方法,是把录像的天空影响直接在游戏中流式传送播放(Stream)。和VR的影像内容一样,这个方法就可以就可以把现实的天空一模一样的直接的实现了。

    但是这种方法很早就放弃了。原因就是,这样无法加入制作组内部的经验技术,磁盘空间和内存容量,以及要确保流式传输的带宽,和游戏里影像的整合性等,有着各种物理上的制约。那么,【Forza Horizon 3】中基于实拍的天空表现,是用多个相机在24小时里连续循环,通过实时摄影采集的大量的天空数据。再把这些进行数据化的要借助大量劳力的手法。

    摄影方法,是在【Forza Horizon 2】发布后的2014年冬天开始,因为这时还没确定游戏舞台,有着测试摄影的意义,在Playground Games的所在地英国进行了摄影。

    在空阔的平地上用架设了有专用转台的大型三脚架,在转台上设置了3台佳能EOS-1D X、是当时高端的数字单反相机,光是摄像器材开销150万日元以上了。除此之外还有还有24小时连续驱动的电池,256GB的CF卡(CompactFlash),80TB的网络存储服务器(NAS),还包含工作PC的SSD固态硬盘等等,器材是极大的开销。可以是背负着XBox招牌的旗舰游戏的规模感。通过这些努力制作出来的天空数据,不仅仅实现【Forza Horizon】系列的美丽,还加入了自然真实的天空表现。

译注:日文原文比较简单下面的ppt拍照里有一些技术细节,等gdcvalut更新视频后再做细节介绍了。。

【撮影处理】
 
 
 
【数据化处理】
 
 
 
 
 

【Forza Horizon 2】(FH2 SKY SYSTEM)和【Forza Horizon 3】(OPUS HDR SKY)的对比
 
 
 
通过比较可以发现,【Forza Horizon 2】的天空表现更像CG一些。

【天空的运动】
 
 
 
 
【追加的処理】
 
雾的处理

间接光的表现

云影的表现

 车体上反射的表现

天候表现

    2015年夏天重新在澳大利亚进行了约1个月的摄影。拍摄了200万张照片,游戏中实现的澳大利亚的天空和天候的变化,完全的再现了“真实的澳大利亚的天空”

【在澳大利亚的正式摄影】
 
 
     
   看到的实际实现的基于拍照的天空,效果比想象的还要好。以前基于美术师感觉实现的天空表现,距离现实的天空表现太远,也只能表现有限的内容,而本作中实现了谁看起来都是真实的澳大利亚的天空,特别是加入了各种偶然的表现,再现了无法预估的天空样式,是最大的收货。
   按这次分享会上提到的时间表来看,他们应该已经在某国进行着【Forza Horizon 4】的天空拍摄了,那么2018年预订发行的下一款作品的天空会实现怎么样的进化呢,开始变得有意思起来了。

【完成数据】
 
【随着时间的変化】
 
 

【Forza Horizon 3‘】的天空表现


GDC2017 把“现实的天空”在游戏内再现【Forza Horizon 3】的天空表现的更多相关文章

  1. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  2. 使用uGUI制作游戏内2D动画

    在3D的游戏中制作2D的效果是一个很常见的需求,我在很早前玩过一个叫做艾尔之光的游戏,里面就大量的使用了这个技术.就像下面图片中的伤害数字,这些数字往往还是有一些动画效果在里面的,比如大小的变化,颜色 ...

  3. 破解者是如何篡改游戏内数值的,揭秘Android手游破解全过程

    由于Android系统的开放性,让人人都是开发者成为可能,也正因如此,手机APP遭受破解和盗版问题长期存在,且愈演愈烈.尤其是手游 行业,如刀塔传奇.植物大战僵尸.2048等知名游戏被破解的案例不胜枚 ...

  4. Unity3D脚本调用Objective C代码实现游戏内购买

    0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...

  5. Cocos2d-x使用iOS游戏内付费IAP(C++篇)

    本文章转载 http://www.ityran.com/archives/5515.非本人原创! 前期准备 设备与账号 在开始编码之前我们需要准备测试环境. IAP只能真机测试,准备一台iOS设备是必 ...

  6. unity 嵌入 百度分享 与 游戏内购物 iap

    原地址:http://blog.csdn.net/u012085988/article/details/18268869 最近老板让在unity项目里实现分享与内购功能,还要ios和android两个 ...

  7. 在Unity3D中利用 RenderTexture 实现游戏内截图

    using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; publ ...

  8. 辐射4 中文武器命名方法, 不用winhex, 直接游戏内操作

    参考资料:https://www.reddit.com/r/fo4/comments/3t354b/tip_you_can_add_text_formatting_italic_underline/h ...

  9. 利用Python写一个抽奖程序,解密游戏内抽奖的秘密

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 极客挖掘机 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

随机推荐

  1. 用Canvas做视频拼图

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 几天前同事给我看了一个特效,是一个拼图游戏,不同的是,拼图里的是动画.他让我看下做个DEMO,于是就自己整了一会,也确实不难.用canva ...

  2. Celery入门指北

    Celery入门指北 其实本文就是我看完Celery的官方文档指南的读书笔记.然后由于我的懒,只看完了那些入门指南,原文地址:First Steps with Celery,Next Steps,Us ...

  3. PID控制器(比例-积分-微分控制器)- I

    形象解释PID算法 小明接到这样一个任务: 有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水. 小明接到任务后就一直守在水 ...

  4. pyqt QFileDialog

    from PyQt5 import QtWidgetsfrom PyQt5.QtWidgets import QFileDialog class MyWindow(QtWidgets.QWidget) ...

  5. ckeditor 上传图片解决跨域问题

    前后端分离ckeditor跨域问题处理 这个跨域问题很常见,特别是前后端分离的情况,IP地址不同导致了页面跨域,具体原因大多是因为前端ifame问题 分析 ckeditor插件里config.js需要 ...

  6. 浅谈压缩感知(二十):OMP与压缩感知

    主要内容: OMP在稀疏分解与压缩感知中的异同 压缩感知通过OMP重构信号的唯一性 一.OMP在稀疏分解与压缩感知中的异同 .稀疏分解要解决的问题是在冗余字典(超完备字典)A中选出k列,用这k列的线性 ...

  7. Oracle表被锁无法问题处理

    1:查出锁定表的信息SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,s.termin ...

  8. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  9. 使用Kotlin优雅的开发Android应用

    来源:https://juejin.im/post/5915c0a744d904006c4e3bcd demo下载地址:https://github.com/xiehui999/KotlinForAn ...

  10. Effective Java 第三版——44. 优先使用标准的函数式接口

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...