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

    【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. C++ 友元函数总结

    1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同 ...

  2. [Beego模型] 一、ORM 使用方法

    [Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [ ...

  3. android:应用性能优化SparseArray

    HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performanc ...

  4. mysql yum安装

    # 下载yum源的rpm包wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# 安装rpm包rpm - ...

  5. Python学习笔记(十四):模块高级

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-23 21:30 学习笔记 1,包导入是把计算机上的 ...

  6. 4种事务的隔离级别,InnoDB怎样巧妙实现?

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/z50L2O08e2u4afToR9A/article/details/82186189 事务ACID ...

  7. GraphQL: Object doesn't support property or method 'from'

    From: https://github.com/graphql/graphiql/issues/688 psyCodelist commented 11 days ago Hi, Thank you ...

  8. 树莓派中编译OpenCV3.4.1和OpenCvSharp

    一.简介 本文重点描述在树莓派中编译OpenCV3.4.1和OpenCvSharp,大家都知道OpenCVSharp是使用C#调用OpenCV最简洁的一个库.但是在Linux上或者树莓派上运行时,需要 ...

  9. 树莓派3中安装JDK

    一.简介 树莓派3(Raspbian系统,下载地址:https://www.raspberrypi.org/downloads/raspbian/),安装JDK8,直接运行:apt-get insta ...

  10. Python中文语料批量预处理手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...