ABOUTCG微资讯将定期为您推送有干货,有价值的CG行业文章!
作者:Andrzej Poznanski
翻译:ABOUTCG翻译小组
《伊森卡特的消失》中的视觉革命
让我们来看下一款由marvelous game制作的叫做《伊森卡特的消失》的游戏的幕后制作流程。2年前,他们的一个开发者Andrzej Poznanski发布了一篇文章说到游戏的视觉设计使用了一套叫做photogrammetry的设备流程。这篇文章让我们对它的运作原理有一个清晰的认识。
..不是照片。实际上这是我们游戏里的一个教堂的三维模型。在告诉你们是怎么做出这么照片级真实的素材之前(也许令人惊讶的是,我们为什么不在游戏中使用完全写实的模型),我们想想到底是什么让它看起来这么真实。
看看你周围 – 你看到任何无缝循环的贴图了吗?
不,你不会看到的,就算你看到了 – 靠近点。那些砖墙或者地板块并不是完全的像教科书定义一般的无缝循环。看看那些边缘比其他的颜色更暖一些的地方,还有一些比其他地方更圆润的部位,还有脏污和灰尘附着在部分区域。一些部分剥落了,一些区域变色了,一些部分表面开始生锈了…OK,也许最后那些并不会在你的高档社区出现,但是你懂我的意思了。
这些也都不会随机分布。如果你真的仔细观察你也许就能感觉到这些。地板在前门的地方会有更多的磨损,或者椅子经常会刮擦到的地方,还有外墙经常被雨淋的那边也许会更深一些,等等。
你也许会察觉到这些,但是谁会真的关心呢?你的大脑通常不会 – 那是真实的,那很正常,没啥可兴奋的。但是,当东西不真实的时候,你的大脑就会注意到。就像在游戏中。即使在潜意识里,你的大脑也会识别出那些完美的无缝贴图,还有那些平均分布的磨损的表面,那些分布在错误位置的褪色 – 然后就会悄悄在你耳边说:LOL!(译者:lol是网络常用语,多表示很好笑的意思,不是英雄联盟…)
我对《子弹风暴》特别自豪 – 我指导了所有的环境艺术家制作的内容 – 但是有时候艺术就和这个游戏一样疯狂。看一下这个地板的表面,你觉得它看起来正确吗?
并不是技术上有那么多限制来阻止开发者来制作看起来正确的东西,在流行的电脑和主机上都不是。真正的问题是 – 如果我们把制作周期和预算放一边 – 更常见的是视觉艺术家的大脑并没有有意识的分析真实的世界。我们可以和你一样快速的指出游戏中看起来不真实的素材,但是我们经常会在自己的工作上停止思考。需要一个砖墙的贴图?基本上就是一堆砖块排在一起吗?做旧?没问题老板!如果勤奋点的,可能会在做破损之前撇一两眼照片。但是即使这样,经常也是我们看了,但是没有真正看到实质。
在《伊森卡特的消失》里,你会看到一些对于游戏来说从来没有过的最真实的环境。素材不再是接近真实 – 它们就是真的。但是这不是说我们魔术般的把我们的大脑变成了理想中的复制器…
进入维基百科photogrammetry的词条(https://en.wikipedia.org/wiki/Photogrammetry)
有了photogrammetry技术,我们不再需要脱离真实世界,在被墙和屏幕环绕的地方再创建一个世界出来。我们起身,走出室外拍摄照片,很多照片。而且还不止这样。之后,一个神奇的软件 – 我们使用的是Agisoft的Photoscan – 分析这些照片,然后匹配它们,直到最后每一个明显的细节和从其他角度拍摄的细节完全匹配。结果会返回一个点云的三维空间,代表了真实世界的物体。从这里开始,软件连接这些点来创建一个三维模型,然后将照片上的像素点映射到模型上变成贴图。
我就绕过不谈劳氏细节尺度不变特征变换(SIFT)算法的细节了,软件做了解算相机本身和外部方位属性和一些其他的细节 – 你只需要关心喂给软件足够好的物体的照片,就能得到物体的完全复制品,三维的,有颜色,而且有你一直梦寐以求的细节。
你可以在我们的Tumblr上看到更多相关视频:
(http://theastrocrew.tumblr.com/post/80684014222/the-magic-of-photoscan)
Photogrammetry是难以置信的。我做游戏20年了,和一些非常有天分的艺术家一起在AAA级别的大作,比如子弹风暴或者战争机器工作过,我不是那么容易被艺术类的内容触动。但是每一个照片扫描的内容都能触动我。那么多细节,那么错综复杂,但是最重要的,所有细节都有深刻的意义。裂纹,污渍,侵蚀 – 大地母亲用了几亿年塑造了这些素材,用它和艺术家只用几天制作的素材相比,真的有点不公平了。
为了让人信服,你可以自己来看。我们找到了一个新的独特的方式让你体验一下《伊森卡特的消失》里的photogrammetry 。下面这些并不是游戏素材的静态截图。在你点击图片之后,会载入一个三维模型,然后贴图会被下载,然后你就能提前体验游戏世界了。
你可以旋转,平移和缩放摄像机,或者就直接让它自动转。我强烈建议自己移动摄像机(按住鼠标右键旋转,方向取决于你点击的位置),特别是全屏之后更能体验到这些素材的细节和质量。
说到质量 – 这些都是原始的没怎么处理的扫描,有些比游戏中使用的质量还要低一些。
26张照片从每一个角度覆盖同一个石头,然后就可以得到这个:
https://p3d.in/e/xtwH3+spin+shading,subd-hidden+load
Photogrammetry无法计算移动物体。如果你想要扫描人脸,即使是两张照片中的很小的头部/脸部肌肉运动差异都需要很多手工的清理和重雕刻。但是你可以使用这个来避免问题:
塑料假手不是必须的。这些设备需要像这样设置:
按下所有相机的快门然后闪光灯在同一毫秒闪烁,然后就能得到这个:
https://p3d.in/e/9qXB2+spin+shading,subd-hidden+load
你不需要一直拍覆盖整个物体的照片,你可以只拍摄其中一部分,只要重叠的部分足够。这就让你可以拍更大的东西 – 135张照片(超过30亿像素的数据!)你可以得到这个大小的石头:
https://p3d.in/e/N2NdT+spin+shading,subd-hidden+load
有足够技巧的话你可以扫描整个区域 – 超过200张照片(在50亿像素左右)你就可以得到这个瀑布的场景,水完全静止。在你要问之前我要说,不,我们游戏里的水不是静止的。
https://p3d.in/e/Cadwc+spin+shading,subd-hidden+load
想要更大?整个100英尺的采石场如何?242张照片(大约60亿像素!)就能得到这个:
https://p3d.in/e/1tNIW+spin+shading,subd-hidden+load
再大一点呢?整个山谷怎么样?这个场景拍了无数照片。为了游戏目的,我们实际上废弃了山谷一半的扫描,一半是我们自己创建的,所以下面就是你们能看到的扫描的半个:
https://p3d.in/e/UkccT+spin+shading,subd-hidden+load
比这个再大就得在近地轨道拍了,所以我们就到此为止了。
这时你也许会跃跃欲试,想着“谁都可以照几张照片,丢进软件然后等着出来最终的游戏场景”
不幸的是,事情没那么简单。对于新手,如果你不太了解扫描技巧,通常会得到这样的结果:
或者,当你尝试扫描一个靠墙的人的时候,你得到这个:
所有这些点 – 是你要扫描的人的阴影和墙。但是要扫描的人不见了。这不是我们要的结果,除非我们扫一个幽灵。
Photogrammetry流程易学难精。
多数人知道怎么拍照片,但是很少数的人能掌握这门手艺,甚至即使是这些少数人,也需要心态的改变。你看,大部分摄影师学习的东西和photogrammetry需要掌握的是相反的。
浅景深(DOF)看起来很棒,帮助我们从一个二维图像分析出深度,但是photogrammetry明显很讨厌它。这直接关系到快门速度和ISO设定。摄影师都认同的是,在像素级别,相机抖动或者前后景的移动和ISO噪点都会毁了你的扫描。
控制光线会有帮助,但是普通照相使用的灯光会直接干掉扫描而不是提升它。你当然需要避免高对比的灯光 – 即使你认为你的相机可以在亮部和暗部记录下足够的高动态范围的细节,photogrammetry软件肯定会强烈反对你的。还有,任何在照片中会带来高光的东西都会导致不好的结果。
照片中所有的物体都得是静止的,包括背景和光线。想象一下要让风停止吹动树叶和草得多难,还有要让太阳一直躲在云后面有多难。
当我们去山里旅行的时候,我们遇见了几次大跌眼镜的情况,就是嘲笑那完美的晴天然后召唤乌云。想象这种情况 – 你正做着尚格·云顿那经典的劈叉(嗯,几乎是的)尝试让你的脚在一些博尔德岩层上保持平衡,然后突然太阳就出来了。你得停止拍摄照片,然后保持30秒到5分钟这个姿势来等下一片云。好疼。
我可以说几个小时关于采集照片扫描图片的挑战,但是不要误以为得到那些“简单”的完美的照片就结束了。
你通常需要使用一些方法来给照片做遮罩和处理照片。有时候当软件疑惑的时候要手动对齐照片,然后,双手合十 – 软件最终会吐出一个物体。就像上面那些简单案例你看到的,还是会有一些错误和缝隙需要你手动修正。接着是你不能接受贴图质量,然后开始长时间的,复杂而繁琐的提升贴图映射和移除过渡曝光和阴影信息的工作,来获得完美的物体。
这就完了?还差的远呢。
扫描的物体通常有20到2000万三角面。这是整个游戏最多能允许的多边形的数目,都在这一个物体上了。你需要对多边形优化和重拓扑非常在行,来制作能精确继承原始扫描多边形信息的低模。贴图也是一样 – 你需要排出惊人的贴图密度来最大化贴图使用空间。
即使这样,你还是会有时候得到4-16倍大于预期大小的内容。在The Astronauts公司,我们想出了一个压缩技巧,用非常小的质量劣化,来让我们达到比产业默认的DirectX DXT压缩方法更高的压缩比。这可以帮上一点忙,但是我们还是要在贴图/场景的信息流上创造奇迹。感谢现代GPU的大显存。
读到这儿你也许已经不想再看到关于我们如何最大化使用photogrammetry的内容了,然后也许会对于我们不使用完全真实的内容而疑惑。看看我们游戏中的这个老房子:
我们所有这些工作都是为了做出足够真实的素材,然后我们就使用一些风格化的灯光和后期处理来打破它们,然后使用一些传统方法制作的素材来混合进扫描的素材里吗?这又怎么了?
我们并没有像你想象的那样在流程中扫描了所有的素材,然后每一个像素都是极度真实的。我们废了这么大劲来制作这些素材就是想让你们不再只是看到素材,而是开始看到这个世界,感受这个世界。它也许在有些人看来很真实,也可能对有些人看来很神奇,但只要我们扫描的正确,在所有感官之上的,是感觉正确。
最后,photogrammetry只是个工具。还是要取决于设计师和艺术家来决定要创建什么样的世界,还有想要邀请玩家进入什么样的旅程。
在我们这个案例中,我们制作了一个怪异的幻想风格的游戏,是一个黑色童话,而不是一个纪录片 – 这需要一个确实的视觉风格来支持,并且要高于照片真实(这有时候比达到照片真实更难)。
Andrzej Poznanski 来自《伊森卡特的消失》的开发博客
0回复【CG微资讯】场景模型与贴图制作的革命,基于拍摄的3d扫描技术"