探求超写实建筑可视化的实时演示思路

文/Lasse Rode / Studio XOIO  译/韩世麟

本帖译自Ronen Bekerman博客的免费教程Striving for Real-Time Photorealism in Architectural Visualisation

使用软件:Unreal Engine 4.4


Ronen Bekerman:Lasse Rode在探求使用实时渲染工具表现照片级场景的过程中,利用虚幻引擎做了一些颇为有益的尝试。表现对象则是一间唯美的,几乎是纯白色的柏林公寓,很多人在论坛里已经看过了。在展示作品之后,Lasse还会为我们讲解虚幻4引擎的入门知识,希望大家喜欢!

作者简介


Lasse Rode / Studio XOIO
总部在柏林的xoio工作室成立于2006年,创始人是Peter Stulz和Lasse Rode。这家工作室非常擅长创作打动人心的建筑表现和工业设计表现作品。工作室的成员全部拥有建筑专业背景或工业设计背景。因此这个团队能够在表现过程中体现出对作品深刻的理解力,也为解决设计层面的问题提供了强而有力的保障。

 

开场白

大家好,我是Lasse Rode,xoio工作室的成员。我们是专职为建筑行业和产品营销提供建筑表现和工业产品表现服务的小事务所。通常我们会使用“传统”的三维工具,比如3ds Max之类的来做作品。我们一直在不断地尝试新的渲染器,目前主要使用的是Corona渲染器,V-RayOctane。每个渲染器都有它们的专长,我们一直本着物尽其用,发挥专长的原则来使用它们。

在我看来可视化行业所追求的主流无非如是:追求照片级的的写实,以及更快的渲染速度(如果不是实时画面的话)。不用每次眼巴巴的等渲染农场把图渲出来,一直是我们的梦想,特别是渲动画的时候!

实时渲染最大的缺点就是画面质量比不上预先渲染的静帧和动画所能达到的极致。所以尽管它很吸引人,在可视化产业中应用实时渲染似乎还是很难想象的——说实在的,那种游戏画面一样的质感,大部分有品位的建筑设计和产品设计甲方是不买账的。

但是这种局面改变得非常快。实时引擎能够达到的极致是非常漂亮而且可信的。

为什么用虚幻引擎呢?

虚幻4引擎的发售引起了业内不小的关注,未来的可能性也似乎是无限的。PBR(Physically Based Rendering)物理材质系统和易用的模型导入接口都是吸引我们进行尝试的原因——更不要说输出结果的质量上限非常之高!如果你看过Koola的作品(在虚幻商城可以找到),几周前几乎是病毒式传播——估计你也会和我们一样,确信虚幻4引擎画面可以达到令人叹服的质量。

在接下来的文章中我会为你们简介一下我制作柏林公寓的工作流程,这个场景文件你们可以在虚幻商城下载到,然后分享一下我在创作过程中总结的经验和技巧。有些是我自己悟出来的,有的是从网络上的资料中借用过来的。虚幻引擎官方论坛官方帮助文档是非常有用且丰富的学习资料,同样有用的还有引擎自带的新手帮助信息以及虚幻商城中可以找到的各种场景和资源。

柏林公寓

从2013年初我就开始为这套公寓创作了一系列的图片,这是柏林的一间老房子,使用的软件是3ds Max和Corona渲染器。这款渲染器在处理颜色曝光映射方面非常地灵活,所以很有助于我表现图面的那种白色气氛。这同样也是我选择这个公寓进行UE4引擎实验的原因。

我注意到UE4在表现阴暗场景和丰富材质的场景方面很出色。所以我就怀疑它不能在场景亮度很高的时候得到很准确的投影和间接光。事实的确如此:非常不容易!


以上是我之前用3ds Max和Corona渲染器制作的场景原图。要查看整个场景请点击这里。下方是用这个场景所制作的UE4视频:

我会从头讲解:

最初场景

整个模型都是使用3ds Max建立的,由于追求快,所以我只把最终镜头中看得见的地方做了细节。但是如果客户能使用实时浏览引擎观察模型的每一个角落的话,这招就不能用了。为了把这个模型重新调整为虚幻引擎能用的场景,我不得不缩小了一点表现范围,因为如果要把每一个家具和细节都雕琢好就太费时间了,有违我做测试的初衷。

我决定只导出两个房间:就是截图中靠下的两间。

为虚幻引擎导出场景模型

如果你牢记几件事的话,这一步其实非常简单!

导出会让模型有点分裂。因为lightmass静态全局光照是每个物体分成几块计算的,遇到大面积平面比如天花地板的时候最好小心地控制参数。也因为这一点,我只导出了我们看得到的内墙面。

另外我还给墙面上下延伸了一些,将来会和天花板交叉。我发现这是防止“漏光”的好办法——“漏光”一般是因为实体不闭合或者模型面不交叉。这些瑕疵在昏暗场景或者材质丰富的场景也许不起眼,但是因为我们的场景非常明亮,因此要尽一切可能保证灰阶着色的精确,特别是角落。

第二件重要的事情就是为存储GI的通道创建UV展开坐标系,这个通道是用来存储虚幻引擎算出的lightmass静态全局光照的。在3ds Max中的话,就是UV通道2。

通道1是用来放其他纹理的,比如固有色(diffuse)啦,粗糙度(roughness)啦,法线(normal)啦等等。虚幻引擎的通道数从0开始计数,所以一开始可能有点懵,但是一旦熟悉了,就没什么了。

注意:UV展开仅仅是对于光照贴图(Light-map)通道很重要!普通贴图通道什么投影方式都无所谓,立方体,圆柱体投影都行。大部分情况下,3ds Max展开命令里最基本的“展平(flatten mapping)”就可以很有效地建立UV坐标系!

如果你想在虚幻引擎里把场景按照3ds Max场景原样组装起来,那么最好整个空间原样导出,这样最后的坐标是更容易对齐。单独的物件比如椅子和家具,最方便的做法是只导出一次,然后把它在虚幻引擎中设为关联组件。为了这个目的,你最好把这些小组件移动到3ds Max的原点处,因为最后这个物体在虚幻引擎里的控制点就在那。

你肯定能注意到我使用了一个高精度模型,没有进行任何的LOD(Level Of Detail)远中近景别简化。这种情形当然仅仅是在这种小型场景才推荐使用的,而且由于我追求非常平滑的场景表现,不希望有一丁点锯齿在镜头中出现,所以这个操作对我自己来说是适用的。但是我丝毫不会怀疑这个模型有很大的优化空间。

确保你的每一个家具都拼合成了一个个的独立物件,并且赋予了不同的材质材质ID,将来就可以在虚幻引擎中调材质了。

好,接下来就把模型保存成*.fbx格式,然后就可以进入到虚幻引擎编辑器了!

导入虚幻4引擎

FBX文件导入虚幻4引擎的过程是非常顺利的,导入过程我分成了若干次。

为了拼合场景,我分别做了几个文件:

  • 房间模型单独是一个fbx文件。
  • 不同的家具分成不同的文件,每个文件里有几件家具。

一定要确保取消“拼合网格(Combine Meshes)”的勾选,这样能让物件彼此分开,否则就都塌陷成一个网格模型了!

材质编辑

我是个非常干脆利落的人,非常热衷于简单明了的步骤!这多少有点人生哲学的意思,但是用最简化的步骤得到最好的结果,绝对不等于使用那些只有你才能懂的野路子,或者是半年再看到这个文件却再也想不起来的昏招儿。

这个材质的例子非常简单,一张固有色贴图,降了饱和度,和黑色混合在一块,同一张贴图调色以后反相,放在了材质的粗糙度(roughness)通道里。完成。

这个材质的凹凸用法线贴图的话就有点过火了,但是你自己在探索的时候可以随便试试。

上图中你可以看到木材材质被赋予了桌椅——深黑的染色木质,带着清爽的哑光反射,反映出了木质的天然纹理。

在这张图中你还可以看到两个比较有用的材质,窗帘是被阳光从背面照亮的——这是一个双面材质。

为了获得半透明效果,你必须把材质类型设置成“次表面(Subsurface)”材质,然后把一个小于1的常数节点输入到材质的不透明度参数一栏。

前景的玻璃罐材质非常简单:

玻璃材质的固有色层明度很暗,完全没有粗糙度(roughness)数值,反射度(specular)设置得很高。我还设置了一个1.5的菲涅尔节点来控制不透明度和折射。想要生成逼真的玻璃材质还需要更复杂的设置,方法也很多,但是说实话我有点没搞定,而且现在这个简单版的玻璃也还凑合用。

注意,我在左侧的细节参数面板中勾选了“双面(Two Sided)”,并把透明度光照模式设成了“TLM Surface”。

还有一个我想要介绍的材质是地板,因为这是唯一一个用到了法线贴图的材质。

你可以看到材质由固有色,凹凸贴图和法线贴图组成。固有色就是一个浅灰,由四个参数控制。

凹凸贴图稍微有点复杂:左边你可以看到同一张图,通过贴图坐标(TexCoord)节点被调成三种不同的尺度。然后每张图的红通道都拿出来正片叠底到一起,作为一个alpha通道输入到线性解析(Lerp)节点中把数值混合到一起。这个例子中的0.3和0.2是为了在地板上得到微妙的反光。最后这个图层被输入到了乘方(Power)节点中,来调整最终需要的凹凸大小。

法线贴图也是通过贴图坐标(TexCoord)节点调整大小,然后通过“法线拍平(FlattenNormal)”节点中的数值控制最终的效果。

制作家具

在把家具丢到场景里之前,最好是先在物件编辑器里先把材质附好。这几乎是个一劳永逸的工作,而且以后你想在主场景里修改也是可以的。这是个很高效的过程:你会发现当时事先把材质ID区分开是多么的方便。

拼合场景

很简单一句话:该怎么拼就怎么拼。首先你需要把房间模型丢进来。最好的方法就是一次选中所有需要的模型,然后拖动到空白场景中。然后就是把家具配景都一一摆布进来。

这里你看到墙面消失了,是因为单片墙的法线背面朝着你,我之前解释过了:这样对进行静态全局光计算有好处。

为了同样的目的,你也最好把大面积物件的光照贴图分辨率设置高一些,比如我的墙面就设置的是2048。

上文也提到过,漏光可能会很讨厌。为了防止漏光,我用黑盒子把屋子包起来了。虽然从外面看乱七八糟,里面可是干净多了。

布光和静态全局光照

布光同样也是很简单的步骤:我用了Koola的方法——结合太阳和放在窗前的面状光源来模拟天光,很有效而且很好控制。

到目前这一步,计算全局光照时,只有个别几个参数是重要的:

我大量提高了光线反弹次数和间接光质量。而且我还把间接光平滑度下降到了0.6.这样一来细节就表达好多了,而且阴影也不会很含糊。

我还把直接光照设置成了动态阴影,这样阴影质量会更好。而且这是后期动画中可移动光源的重要条件。

最后,在点击“建立”之前,要把光照质量设置为“产品级(Production)”。

这样设定的话,每个地方的光影就会很柔和了。

说实在话,第一次做到这一步的时候,我激动得都抖了!这就是这个引擎最精髓的地方,真的能让你激动起来。能够实时地在自己的“渲染”里浏览实在是太让人兴奋了!

“后期处理”

一项非常棒的功能就是,引擎允许你直接在编辑器中后期添加颜色校正和镜头特效。添加一个后期处理范围模块(PostProcessVolume)就可以控制全局的后期参数。我微调了饱和度,镜头暗角,光晕,然后把曝光的最大最小值都设置成了1来禁用自动曝光,然后把曝光偏移设成了1.42左右来大幅增加室内亮度。我还添加了一个镜头光晕特效,因为我发现这个效果在实时情况下非常出彩。

设计动画

能够在场景中自由移动使得动画制作过程变得简单有趣,因为所有的结果都是实时反馈的。我已经是视频软件的老手了,所以很快就上手了引擎内置的Matinee动画编辑器。

首先要添加一个Matinee Actor。

打开Matinee以后,你会看到一个多轨编辑界面以及一个路径曲线编辑器。

相机创建和动画设定都是非常直觉化的。动画由关键帧控制,路径曲线也和其他动画软件大同小异。剪辑工作也是一同在Matinee编辑器里完成。

我在空间里创建了若干个相机缓缓地平移拍摄:在你能实时看到镜头的效果的时候,再去调整镜头的运动速度和轨迹就方便太多了。

你可以在编辑器里看到摄像机的轨迹,还可以随意临时修改!在Matinee中完成了初步剪辑以后,我把全部动画导出成*.AVI文件,最终在Premiere里细致剪辑了一下,把它和背景音乐对齐。

结语

从3ds Max导出模型,再倒入虚幻引擎4,调整材质和布光,输出动画,一直到发布动画在Youtube上,全部的时间只花了我一天左右。这种速度是在建筑表现行业闻所未闻的,也揭示了在建筑表现业应用虚幻4引擎的巨大潜力。

消灭了“渲图”的时间,一下子就让创作过程变得灵活起来。实时的反馈机制是革命性的。

我们一直在尝试和思考在实际工作和生活中使用这个工作流程的可能性。

还有很多类似的软件,我们非常乐意去尝试。

希望我在本文中把创作思路和步骤讲解得足够清晰,希望读者朋友们喜欢我的案例。

Lasse,

xoio

本教程所有大尺寸插图及视频已经打包,请点击这里下载(14.2M)。密码:zd8m

韩世麟 2015.07.06 译

版权声明

本文转载并翻译自Ronen Bekerman博客的公开教程,其中插图部分版权归原作者及Ronen Bekerman网站所有,中文译本版权归属译者本人。转载之前请务必联系译者:联系站长

网站推广阶段,欢迎您关注网站的微信公共平台:
扫描关注“韩的日志”微信订阅号

  • 请注意,为了保证我能看到所有留言的提示,留言将通过审核后才会显示,请不必重复留言。
韩世麟

韩世麟

站长,天津大学研究生,天津人
存为书签: 本文的固定链接.

4 条评论

  1. 太赞了 感觉这种方式输出的“渲染模型”克服了一般渲染器实时渲染粗糙的瓶颈,能够将原本用于游戏场景开发的软件带到建筑表现上,真是非常震撼的工作流程与作品创造!

  2. 韩神 我感觉ue4偏重于制作漫游 它相对传统渲染器的单帧效果如何 容易上手吗 感觉游戏引擎是一个新的操作模式区别于传统的建模加渲染

  3. 老师会开这方面的课程吗?

发表评论