Daniel Thiger在GDC2018 Substance Day分享了他用SD制作材质的一些经验,youtube上有分享。

大佬现在在Bungie担任Lead Environment Artist,之前在EA Dice担任Senior Environment Artist/Senior Technical Artist.

制作的时候呢,还是要以现实世界为参考的,比如用3D扫描的材质做练习就是一种很好的方法。分析它的高度和法线,从中提取component单元的形状规律。

比如想要做一个热带雨林的材质,就要分析一下组成了,里面应该有树根,泥土,石头,落叶和草

制作过程中的一些要点

  • 分析参考图
  • 甄别出形状的组件,比如下面说的大树根/小树根/石头/泥土/叶子等等
  • 一层层添加形状,从大到小
  • 关注高度图,别分心
  • 创造组件-草,叶子,鹅卵石
  • 把组件和主体形状融合
  • 生成其他图,颜色,粗糙度,AO

分析形状,大树根和小树根

大树根时用一个voronoi生成的,scatter一些线然后用distance产生voronoi

取边缘,bevel出来基本型

warp一下,然后取highpass出来slope blur作为表面肌理,加到原有的形状上

warp主要为了出扭动的形状,highpass出的是线状纹理,跟这个表面肌理比较像

小树根是用procedural的组件scatter出来的,加到大树根上

泥土的形状是两张躁波叠加起来的,然后scan出低的区域做blur

用cell噪波模拟开裂,加进树根里

一些组件,3d扫描的树叶,scatter一下加进去

泥土有一套颜色,gradient出来的

树根有一套颜色,gradient出来

树根上的青苔,scatter了一个grunge来gradient出颜色,叠加回去,然后加了点尘土颜色

制作的流程,一般有几步。第一步,初始设置并通过渲染迭代效果,第二步是整理并暴露参数,第三步是优化。

学到的:

  • 关注高度
  • 不要过度waro
  • 程序式解决问题
  • 增量保存
  • 发现重复性工作,整理成节点
  • 保持图整洁

 

整个思路非常清晰,从现实世界找参考,包括procedural制作材质也是跟物理世界一致,一层一层生成,physical inspired。避免无头苍蝇一样的从形式入手分析,先考虑物理属性再分析形式能够有好的操控程度

节点用到最多的是slope blur, non-uniform blur, histogram scan做蒙版, 各种pattern做素材之后tile generator来scatter出图案,blend。另外提到一点关注高度。高度可以生成法线,gradient生成颜色,高度才是最本源的问题,从一开始就不能被颜色图诱惑,应该先用高度做出prototype再说。

最后讲到的工作流程很重要,经常prototype的时候第二三步都不会涉及,调调参数SD里看下好了,但比如模仿3d扫描的材质,真的在Marmost里渲出来才能感受到和扫描出来的纹理的差距。为了production,第二三步必不可少,甚至可能花更多的时间,毕竟最后这个procedural材质是给artist用的

另外本文里生成procedural形式的方法有两种:从顶向下和自底向上。自顶向下就是从一个整体的图案/噪声来生成,比如本例中的大树根来自voronoi,mud的图案也来自噪声,worldmachine大多数时候也是这种方式。另一种自低向上,需要先做component,这又有两种方式。一种是procedural生成的component,比如本文的小树枝,比如做石头的component,用shape/warp/噪声等生成的,另一种是3d扫描的component,比如本例的树叶和草。有了component以后做一些tile(scatter),叠加在材质上。

生成场景何尝不是这样,大的用噪声生成,比如地形,路网;小的用组件拼装,树石头,建筑组件。

以下,下图为texture.com上photogrammetry的材质,上图是用SD来procedural生成的,思路就是procedural生成一些石头的高度图,然后在不同尺度上tile,之后blend到一起。