查看原文
其他

揭秘《死者之书》之环境资源及特效创作

Unity Unity官方平台 2018-11-15

在揭秘《死者之书》的创作过程中,我们已经分享了:

 

今天将由Unity的Demo团队的CG和VFX艺术家Zdravko Pavlov带领大家了解摄影制图资源、树木以及VFX的创作过程。


摄影制图法工作流

我曾经在《Viking Village》、《The Blacksmith》和《ADAM》项目中参与过粒子效果、刚体动力学和布料模拟的创作。然而《死者之书》项目则有些不同,这个项目中我需要使用摄影制图法创建多个环境资源,这是一个全新的领域。

 

网络上有很多文章是关于使用拥有摄影制图法,多数文章会说,你需要数码单反相机和带有50mm定焦镜头的相机。但是我没有这样的设备,所以我决定使用自己的Sony a7II相机来做初步测试,这个相机有16mm-35mm变焦镜头, 像素为24MP,没有反光镜。但这个相机正好适合接下来的工作。

 

更宽的镜头会带来更多的失真效果,但摄影制图软件会很好地处理这个问题。定焦镜头会较为僵硬,而从理论上说,它会带来更清晰的图像。如果你在一个受控的工作室环境中进行扫描,定焦镜头的效果其实很棒,在这样的环境下,我会大力推荐定焦镜头。在户外的时候,能够使用高质量变焦镜头来给想要的对象进行构图将有助于之后的制作。

 

下面是我使用摄影制图法初期进行的一些探索。



我尝试了多数热门的摄影制图软件,其中一些效果不错。我选择的是RealityCapture,因为它具有十分优秀的性能,能够处理大量图片而又不至于耗尽内存,它还能从图片中重构大量细节。我由此得到了多个模型,有时候模型有多达1.85亿个三角形,它们都能以PLY格式成功导出。



这个数目已经超出了预期,甚至稍微达到了极端。多数重构内容最后大约有5000~9000万个三角形。我一开始使用的是GeForce 980Ti显卡,后来换成GeForce 1080显卡,这样能给我带来一些性能的提升。

 

我还将相机换成了Sony aRII,像素为42MP,带有PlanarT*FE50mmF1.4ZA镜头。然而使分辨率变成原来的2倍并使用高级的清晰主镜头,并没给我带来所期待的惊艳效果。

 

一方面,更长也更狭窄的主镜头意味着需要退后几步才能使图像重叠,用来进行画面重构。当我们在森林之中时,不一定这样做,因为树林中还有其它树木、灌木等障碍。这还意味着我们必须管理、存储和处理原有2倍的千兆级图像数据。但尽管如此,还是不一定能得到更高分辨率的扫描结果。更多的图片才能得到这样的结果,所以使用24MP像素更容易控制。



我使用了PLY格式来导出高密度的几何形状。RealityCapture的PLY导出器没有缩放功能和坐标轴方向控制,所以PLY格式文件总会过大、旋转方向不对。需要自己解决这个问题。

 

多数软件不能处理几千万这个数量的多边形,所以我仅仅存储文件,使用RealityCapture的抽取功能制作出相同模型的低多边形版本。得到的模型大概有100万个三角面。这样的模型能在Zbrush、MeshLab或其它建模软件中打开进行重拓扑操作。根据不同模型,需要使用了不同的重拓扑方法。我经常使用的是ZRemesher,有时候则手动处理。



我使用xNormal来烘焙纹理。xNormal不会受到数亿三角形的影响,可以轻松处理它们。我使用顶点颜色信息来烘焙漫反射纹理。高多边形中的顶点密度完全足够用来制作干净清晰的纹理,不需要任何顶点间的补间。

 

如果你的密度云不够密集,或是有区域丢失,如下图所示。从照片投射纹理可以给这些区域带来更多细节。


有些区域是无法触碰到的


多数摄影制图教程会告诉我们在扫描一个对象时,最好能避免直接刺眼的光照和阴影。如果你要捕获的是块小石头,你可以将它带到阴凉处或甚至是工作室里,使用柔光盒和转盘来方便扫描。对于树木来说则不需要那样做,所以我会查看天气预报,希望能遇到多云的天气。然而即使在阴天,仍会有阴影和环境遮蔽。

 

这个问题可以通过Unity的DeLighting工具解决。只需要一个法线贴图、弯曲的法线贴图和烘焙AO即可。它可以在消除阴影的同时保持漫反射值不变。


DeLighting实际使用效果


我们得到的资源后导入Unity中,测试动态光照和着色器。

 

 

需要注意得是,有时候我们不一定能采集到模型的所有部分,也不一定能得到所有角度的画面。也许会遇到时间不够或是电量即将耗尽这样的情况,所以我们会忽略一些东西,可能一直到回到家开始处理数据时才发现这个情况。我在这个过程中犯了很多那样的错误,但我通过使用Substance Painter来克隆特征并修复丢失的数据,挽救了部分作品。


实际游戏资源

《死者之书》创作周期很短,所以部分工作外包给了环境艺术家Tihomir Nyagolov,他对环境进行了白盒建模。我们在附近的森林中采集摄影制图数据,这些工作自然地转为制作最终游戏资源上来。我没有环境艺术的背景,对处理游戏优化、LOD等都毫无经验。Tihomir Nyagolov使用GrowFx已经创建了一些树木的占位符,所以我从这里开始接手工作并从中学习。

 

GrowFX是个十分强大而功能全面的工具,可以用来创建多种植被。它能够与场景中的其它对象交互,可以实现各种独特而自然的效果。构建过程不会考虑游戏资源创建,足够灵活。



《死者之书》中的树林原本主要是针叶树。我寻找并扫描了一些树木。然后将GrowFX创作缝合到已扫描模型上。最后的树干由扫描的模型和独特的纹理组成,较低部分缝合到了程序化生成树干,一直到顶部的剩余部分则使用可平铺纹理。


底部的一小部分被克隆到纹理顶部,使之变成可平铺纹理


在石块和树干上进行摄影制图是一回事,扫描松叶完全又是另一回事。在这里我使用了Quixel,它给我们提供了精美的扫描地图集。Quixel的工作人员与我们合作,为《死者之书》制作了大量小型资源,例如:草地、灌木和碎片等。

 

我们可以使用Quixel Megascans的地图集,但对于类似《死者之书》的实时项目中,我们需要做一些优化。优化包括构建大型元素,例如:树枝、树顶等,将这些元素排列成新的纹理、为法线贴图转换初始扫描数据、位移和传输等。



已有的Megascans法线数据略有修改,从而给出伪造的总体体积印象。

 

 

我使用不同的法线编辑方法,例如:Normal Thief和其它自定义3DSMax构建脚本,用来将树枝与树干混合起来。


调整顶点法线,使之能够与树干混合

 

通过使用这个方法,可以制作不同类型的针叶树。


我们想要森林富有生气,所以风是一个关键要素。我们的环境艺术家Julien Heijmans设计了基于顶点着色器的风动画解决方案,树林则基于这个方案而设置。

 

创建矢量场有很多不同的方法。在熟悉了Chaosgroup流体处理器和PhoenixFD后,我决定看看能从中得到什么样的可用数据导入Unity。我导出场景模型,将它以FBX格式放进3DS Max中,然后在其中运行一些流体,流体会在植被周围打转然后产生旋风效果。较大树木会挡住小型植被,所以效果在这里不会那么突出。

 

PhoenixFD流速通道的一些片段

 

我使用集成的PhoenixFD回放控件循环操作模拟的序列。然后通过PhoenixFD Texmap读取矢量信息,将其标准化处理并作为漫反射纹理插入程序化创建的等值面。

 

矢量信息通过PhoenixFD Texmap读取,标准化处理并作为漫反射纹理插入

 

一个模拟效果的水平片段示例

 

渲染图像序列会被导入到Unity中组合最后的纹理图集。我过去使用After Effects完成这个工作,但现在Unity拥有一个十分方便的Image Sequencer工具,它能自动完成这个工作。这是由Unity在巴黎的GFX团队开发的全新VFX工具。

 

Image Sequencer的实际使用效果


创建的纹理图集会放到场景中,我制作了一个小方框用来定义模拟效果的边界,并将其用来作为位置的参照物。

 

这个实验推动了预告片中一些镜头的视觉效果。如果你正使用Unity进行影视制作,我推荐使用这个方法。它会插入主程序顶点着色器的风动画解决方案中,这个方案是由我们技术主管Torbjorn Laedre为该项目开发,它用在预告片中的多个场景中,也在GDC上展示的主机版本中得到使用。后续文章中,Julien和Torbjorn将向你分享更多关于处理风和最后方案的方法。

 

Unity中的动画矢量场

蜂巢

下面是项目早起,我对蜂巢的概念画出了大致构图。

 

使用MultiScatter制作并用V-Ray渲染的概念验证

 

在完成最初的设计后,开始构建大量在游戏中使用的元素和 Unity资源。


使用pflow为蜂巢创建了一些群集

 

在Unity中组成的早期蜂巢原型

癫狂之人

对于癫狂之人群体,我对躯体变体进行了一些探索。我使用了Chaosgroup的PhoenixFD,运行了流体烟雾模拟。然后切开癫狂之人形状,并基于流体温度创建了一个等值面。

 

PhoenixFD制作的一些形状探索

 

这个方法可以快速预览不同的形状,它会用作常规参考。

液滴效果

为了实现癫狂之人面部的液滴效果,我使用了PhoenixFD。我制作了概念艺术的小验证用来展示,说明我们能通过粘稠液体所能实现的效果。

 

验证PhoenixFD的翻转处理器适用于制作液滴效果

 

我对总体结果和流体动画比较满意,所以继续设置真实模型。我的目标是防止模拟效果形成太多的分离部分和液滴。我得到生成模型序列的其中一个,然后对它进行重拓扑,制作UV并使用WRAP3来将其投射到序列中剩下的形状。最后我得到了一系列使用相同拓扑的混合形状。

 

Unity中的混合形状

 

我也尝试在一些树干上运行液滴模拟效果。

 

 


最后的项目中我们没有使用这些效果。然而这是个不错的方法,可以用来为扫描模型添加一些细节。


小结

《死者之书》中摄影制图资源、树木以及VFX的创作过程就分享到这里,后续我们将深入了解《死者之书》中的环境艺术创作过程,尽请关注! 更多Unity项目创作经验分享尽在Unity官方中文论坛(UnityChina.cn)!


推荐阅读


官方活动

Unity与腾讯云,与你一道玩转世界杯

Unity与腾讯云在Unity Connect社区正式上线#码上猜,“云”气来#的世界杯竞猜活动,欢迎广大开发者参与世界杯的相关讨论,竞猜每日比赛结果,赢取丰厚好礼!

活动地址:

https://connect.unity.com/g/5b1f71a7090915001cea53cc


技术直播 | 使用ML-Agents快速掌握模仿学习

6月27日星期三晚8点 Unity技术经理鲍健运将为广大开发者进一步介绍ML-Agents,并带回Unite Berlin 2018关于机器学习最新的资讯,结合模仿学习(Imitation Learning)实例教程引领各位开发者。

直播地址:

https://connect.unity.com/events/unitychina-imitationlearning


点击“阅读原文”访问Unity官方中文论坛

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存