EDIT

{{article.title}}

modified {{article.lastModStr}}
{{videoUrlObj.title || videoUrlObj.oEmbed.title}}
{{videoUrlObj.description || videoUrlObj.oEmbed.description}}
{{ article.videoUrls | totalDuration }}

牛奶与饼干

创作人: Harsh Agrawal | @harsh2art


概述

本项目源于我对食物摄影的兴趣。我一直计划做一个逼真的计算机图形(CG)食物项目。我会去 Pinterest 浏览大量令人惊叹的食物摄影作品。下定决心是一个艰难的过程,对我来说,这拖延了整整10个月,直到一个深夜,我意识到,我在工作时吃了太多的饼干。于是就有了这个饼干和牛奶的创作。
食谱很简单,它涉及建模、灯光、着色和渲染。我们在制作饼干碎末和牛奶泡沫时会有一些非常有趣的内容。

所用软件

RenderMan 21、Maya 2016、ZBrush、MARI、 Houdini、Photoshop

完成时间

25 小时

可下载内容

具有已完成场景档案的Maya项目;准备要渲染的模型;RenderMan 21已完成的着色网络和相关纹理处理档案; HDRI和柔光箱的灯光技术

食谱

制备

我们从创作一个有各种饼干和牛奶摄影的 Pinterest 板入手,考虑到我们喜欢和不喜欢的各种构图和元素。
让我们用现有的饼干,制定了一个便宜的摄影方案(是的,可以把一个饼干放在牙签和Toblerone三角巧克力上),或三脚架上。我们在饼干周围拍摄了一些照片,这样我们就可以将它们作为以后进行雕刻和纹理处理的参考。要控制住不吃饼干真的很难。

建模

我们首先使用基本形状勾画出 Maya 场景。使用Subdivs建模应该非常直截了当。在建模时,重要的是倍率、比例和构图要恰当。一旦我们对构图有了概念,我们就可以摆好摄像机,并相应地装饰素材。
接下来,我们把饼干导出到 ZBrush 中,以便我们可以雕刻一些漂亮的有机细节。对于这个构图,我们只需制作一个饼干,然后复制和旋转饼干几次,加以装饰,这样我们的效率会更高,并专注于让这块饼干看起来更逼真。使用基本雕刻刷,主要是 move 笔刷、clay 笔刷和 Damian Standard 笔刷,我们就得到了一个像样的外观。这时,我们专注于基本的形状和一些较小的裂缝、巧克力片等细节。当我们着色时,可以通过置换/凹凸贴图添加微细节。然后,我们可以将中分辨率版本的饼干模型导出到Maya中,这时仍包含大多数的主要轮廓。

到了这里,我们还可以在牛奶中雕刻一些气泡。用几何图形制作一些小孔可能比较棘手,但 ZBrush 可以在这方面帮到我们。我们只需绘制一个在网格上有孔的遮罩,然后根据选择的遮罩创建出多个多边形组。有了不同的多边形组,我们可以创建小组循环使其更为光滑,并获得所需的形状,然后使用 Curve Bridge 工具,就可以在牛奶中创造出令人信服的泡沫。

碎末/饼干颗粒

用 Houdini 技术可轻易地创造一些在托盘上的饼干碎末。我们先创建一个球体,然后使用山峰节点创建多个版本的变形球体。接着我们可以将几何图形导入 Houdini 中,并在表面创建一些随机点。使用复制压模,我们就可以很容易地在饼干上撒上碎末。
要在托盘中撒上碎末,我们需要更多的控制,可以通过绘制托盘上想要的碎末密集度,然后在盘上复制这些饼干碎末。

创建好所有几何图形后,我们可以将其作为 Alembic 档案导出到 Maya 中。

灯光

现在我们在 Maya 中设置了场景,有了从 Houdini 和 ZBrush 导出的几何图形,就可以开始设置灯光。在设置灯光前,重要的是参考用于食物打光的一些摄影资料,并且还要阅读有关真实世界照明的技术。许多食物摄影使用强烈的主光源,利用卡片阻挡光线的柔光盒,制造所需的效果,并将光线聚焦在食物上。好的灯光对于叙述故事非常重要,它能引导观众的眼睛去看重要的地方。
在我们的作品中,我们先用强烈的主光源,添加一些来自 HDRI 的反弹光,然后用边缘光塑造轮廓。为了控制发光能量,我们将探索几种 RenderMan 控制灯光的功能,包括几何图形的遮光。
让我们创建一个PxrRectLight,这是模拟柔光盒的最佳选择。我们可以将其放置在场景的左边,并启动一个交互式预览渲染器, Interactive Preview Render(IPR)来实时显示我们的灯光。重要的是要正确放置灯光,观察构图和光线如何落在饼干上,以及光线产生的阴影。注重光的位置和强度是很好的开始。
可以通过调整曝光(F-Stops)、强度或缩放光本身(确保光线未被归一化)来更改强度。

一旦光的位置和强度看起来不错,我们就可以设置发射焦点。此功能有助于集中光能,在这种情况下,将有助于我们达到不错的光线渐变和衰减效果。使用锥角 (Cone Angle) 和锥度柔化(Cone Softness) 也可以帮助加细灯光梯度的外观。现在我们插入柔光盒HDR作为我们光线内的颜色贴图(Color Map),这样我们在反射和光区落点就得到了微妙精细的着色。我们希望主光线是清冷的,然后补光和反光是温和的。这将有助于饼干和牛奶从背景元素中凸显出来。
我们现在可以创建 PxrDomeLight,这将用作我们的补光。和我们的主光线类似,我们可以调节该灯光的强度并在颜色贴图通道中插入HDRI。
我们使用的是由以下Maxime Roz网站提供的免费 HDRI:

http://www.maximeroz.com/hdri-free-pack/

(柔光盒和环境HDRI可用于.asset档案中)

最后,我们来创建边缘光,这将有助于确定形式,并能让轮廓显示得更加清楚。我们现在可以通过调节温度控制或颜色样本来微调每个光线的颜色。使用 IPR 提供合乎实际灯光的交互控制,让我们专注于艺术角度和效果变化,以快速调节到所需的外观,而无需担心所有的技术细节或等待渲染完成。
一旦主光、补光和边缘光都大致合适,我们便可以单独对每个灯光进行微调。很多灯光调整也可以在着色时进行,可反复调节以达到正确的外观。

着色

现在我们的灯光已设置完毕,是时候对场景进行着色和纹理处理了。RenderMan 21附带了各种集成器,我们将使用 PxrPathTracer 来渲染这个场景。由于这是正向光线追踪算法,它会与我们的HDRI光线设置和主光线很好地配合。我们从为场景设置着色器Bxdfs开始。
我们可以首先为设置着色,其中涉及背景墙、托盘和木桌。我们将使用 PxrSurface 为所有这些物体着色。PxrSurface是一个通用着色器,提供了很多自由和多功能。因为这些物体没有任何层次,我们可以使用 PxrSurface 来获得我们想要的外观(对于分层着色,我们要选择PxrLayerSurface)。材料设置很简单,主要涉及漫射、法线/凹凸、高光反射、置换和高光粗糙度。

最好考虑在波瓣中创建材料,如漫射波瓣、高光反射波瓣、次表面波瓣。这样,我们可以一次只专注于一个材料参数,建立于我们的着色器。
漫射波瓣:通常,我们通过给材料漫射贴图来定义材料的反射率。我们可以在UV上绘制或给予ptex贴图,这样可以调整倍增(增加)来调整外观。
诀窍:确保纹理遵循线性工作流程。大部分已在RenderMan 21里顾及到了。当通过 PxrTexture 节点导入颜色贴图时,我们可以检查线性化按钮,以确保看到我们绘制的预期颜色。
诀窍:RenderMan 有一个特殊的格式,用于在 .tex 档案中存储纹理数据。此格式对于高效的 LOD 非常有用。将所有纹理转换为对于 PxrTexture 节点的.tex 档案格式是一个好主意,可以通过 txmake 命令手动逐个执行,或者使用纹理管理器以递归方式转换档案。注意,当使用 .tif、.exr 或其他格式时,RenderMan for Maya 将自动运行 txmake 并在 RenderMan 档案夹中转换这些图像。预转换档案只是让我们跳过了这一步。
高光波瓣:这是我们可以插入贴图来控制高光增益和粗糙度的地方。高光增益决定了我们希望材料达到的反射率,粗糙度决定了材料的光泽度(有光泽与哑光)。通常将高光贴图添加到面部颜色参数中,而将粗糙度/光泽度贴图添加到高光粗糙度参数中。
面部和边缘颜色控制“菲涅耳效果"(Fresnel)衰减。通常,所有材料具有高边缘颜色,从而增加远离摄影机视角的反射。RenderMan 21也提供诸如高光模型、各向异性和着色切线的高级控制。为了我们的目的,我们对这些均采用默认设置,只插入我们的高光和粗糙度贴图以获得所要的效果。
诀窍:将高光贴图(面部颜色)绘制为黑白(0-1),然后使用 PxrRemap 节点控制贴图的输出值。以这种方式设置着色器将为美术设计提供很多自由度,而无需在 Photoshop 或 Mari 中进行外部编辑图像。
凹凸/法线:这些可以基于每个波瓣或全局来创建。RenderMan 21允许向单个漫射和/或高光通道添加凹凸贴图或者全局添加影响每个波瓣的凹凸贴图。我们可以为大多数材料只使用全局凹凸法线参数以获得这些额外细节。对于法线贴图我们可以使用 PxrNormalMap节点而不是 PxrTexture 节点。这样,我们可以将其指向法线贴图档案,并且还可以调整同一节点中的凹凸比例。PxrSurface 还允许分层的凹凸/法线贴图,这可能有助于获得额外的细节层次。

次表面波瓣:这有助于在有产生复杂散光的表面范围内创建一些半透明效果,例如在皮肤、番茄酱或我们的饼干上。RenderMan 提供各种次表面着色模型,可以选择各种效果,如 Jensen偶极光源、d'Eon 更好的偶极光源、Burley归一化和多个平均自由程(Jensen Dipole, d'Eon Better Dipole, Burley Normalized, and Multiple Mean Free Paths).
对于我们的饼干,我们使用 Jenson 偶极光源模型,因为我们力图产生一种真实效果,并使用我们用于漫反射的相同颜色贴图,它会在饼干的被遮挡区域提供更半透明的效果,使它看起来更自然。
还有 2 个附加选项:平均自由程( MFP Distance 和 MFP Color)。
MFP Distance 定义光线在表面内行进的距离。另一方面,MFP Color 定义行进距离最远的光的颜色/波长。
RenderMan还为我们提供了追踪控制,连续射线模式在我们没有得到足够散射的情况下会很有用。默认情况下,它是关闭的,这意味着光线只从物体中追踪出来。
通过调整次表面增益、MFP Distance 和MFP Color,我们可以得到饼干的正确外观效果。
单一散射或次表面散射:单一散射是一种廉价的散射方法,可用于大多数情况,但缺乏精细控制。我们将使用 Burley 归一化次表面散射,它将为我们的牛奶提供额外的对比度和饱和度。
在RenderMan 21中,各种 Jensen次表面模型采用局部扁平的半无限介质。PxrSurface 给我们提供了将单次散射与次表面组合的更多灵活性,用于在稀薄区域添加次表面控制。例如,如果我们的拍摄目标是脱脂牛奶,这种方法对于添加半透明的效果非常有益。
对于我们的牛奶,我们将 Continuation Rays 设置为 All Hits,然后将我们的最大 Continuation Hits设置为10。这些设置将产生大量的散射。我们还使用RenderMan文档中的散射值表下建议的牛奶设置,要考虑到场景缩放以调整我们的深度设置。散射越深,牛奶看起来越透明。太多的散射会让我们的牛奶看起来太清淡,太少散射会让牛奶会看起来如蜡一般。接近真实的次表面平衡是很困难的,所以要一直参考图片资料。
另一个次表面散射方法,是使用非常微弱的橙色辐照度色调颜色值,这将在计算开始之前调节次表面,让我们的牛奶有很漂亮的金色光,这样做是为了抵消在场景清冷的灯光下,我们的牛奶颜色会看起来太蓝。
我们的大部分场景都已着色,这样我们可以继续创建我们的玻璃着色器。奶瓶需要一个分层着色器,所以我们将为此使用 PxrLayerSurface,并创建几个层次,如基层玻璃、牛奶滴和灰尘。要将图层添加到 PxrLayerSurface,我们需要插入 PxrLayerMixer。
我们可以在 PxrLayerMixer 中定义基本材料,然后用 PxrLayer 加上其他 bxdf 层。
我们将制作一个PxrLayer(玻璃)作为我们的基本层。然后我们将在 PxrLayerMixer 中将另一个 PxrLayer(牛奶)作为第 1 层,放在玻璃上。我们将为第 1 层提供遮罩,让玻璃上的牛奶不透明。
玻璃波瓣:要创建瓶子,我们将启用玻璃波瓣。这里我们可以定义玻璃的折射增益、反射增益和折射粗糙度。我们还可以在高级参数中更改 IOR,但是我们将使用默认值1.5,因为这是玻璃的 IOR。为了创建玻璃效果,我们需要非常低的漫射和高折射。
诀窍:在渲染设置中,基于玻璃表面增加最大漫射和最大高光深度,这将确保通过追踪玻璃几何体内部和后部的物体来查看正确的折射结果。

合成

现在我们已经将场景中的所有物体着色了,这样我们可以创建不同的渲染元素,用于合成图像并做一些颜色校正。
这在 RenderMan 中非常简单,我们可以启用各种光线路径表达式(LPE)来输出我们的漫反射、高光反射、间接灯光等作为第二性光照。
LPEs可以通过渲染设置 - >光照- >输出来创建。

要创建物体的 Matte ID,RenderMan 提供了 PxrMatteID 节点。在我们的每个bxdfs上,我们可以为Matte ID 添加一个额外的 RenderMan 属性,然后将其连接到 PxrMatteID 节点。这将创建平面颜色输出,可用于特定区域的合成和颜色校正。每个 MatteID 节点可以持多达 6 个颜色 ID。

一旦我们将所有的光照结果渲染为 32 位 exr,我们就可以将其导入 Photoshop 并将这些元素叠加在一起。这允许我们控制单个渲染元素,并做任何颜色校正和小调整以获得最终的外观。这时,我们还可以加一点色差和额外后效,让它增添摄影质量。

总结

我们可以看到,这是一个创作逼真图像的简单食谱。使用 RenderMan 21,我们就可以趁手得到真实正确的灯光和着色。使用简单的工作流程,我们能够在一周时间内创建逼真的图像。RenderMan 21让这个饼干图像的制作过程变得无比轻松。
我希望您在家里也可以享受这些饼干和牛奶,并分享您自己的食谱版本。

关于艺术家


Harsh Agrawal 是计算机绘图(CG)通才,精于着色、纹理处理和外观创作。在空闲时间喜欢画水彩画。

LinkedIn : https://in.linkedin.com/in/harsh2art

感谢Meina Young提供中文翻译.


更新记录:

2016年11 月15 日

  • 使用 Burley 归一化而不是单一散射更改次表面,以利用 21.2 的 SSS noise optimizations干扰(噪声)优化的优越性。
  • 减少多达80%的多边形数。
  • 去除了Maya 中不能动的 Turtle、Mental Ray 和Vray 节点。
  • 优化了渲染设置
  • 所有贴图缩小到 2k
  • 添加了RenderMan subD 属性
  • 将结果场景重新导入到一个新的RenderMan 21场景中




Project Assets
Tags
  • {{tag.name}}

Log in to post a comment

{{ commentBody.length || "0"}} / 10 characters

No Comments, Yet

Comments