ZB里苦苦雕好的细节,放到Renderer里又打回原形光溜溜?本文详细介绍ZB置换在Vray中还原的正确流程。但终究需要记住的是——Displacement is expensive.
Explanation
Content
1 从置换贴图的格式说起
置换贴图的置换值 (也就是被置换后的顶点离开原位置的程度) 直接对应于烘焙模型的尺寸,因此置换贴图的精度直接影响置换结果的精度,普通 .JPEG .PNG 等格式肯定是不推荐使用的,推荐使用的是 .TIFF .EXR 等最大色深为32bit,可采用LZW等无损压缩方案的存储格式。
但是如果生产环境中硬盘空间有限,也可以使用16位浮点(Half-float),并且仍然可以得到几乎相同的结果。但是,重要的是要确保使用16位浮点(float)格式存储图像,而不是16位整数(integer)。在这个工作流中,整数格式不能正确工作,这是因为整数格式不支持负像素值,浮点置换贴图使用这些值来表示凹陷区域。但如果条件允许,尽量使用32-bit Full-float。
2 写在导出之前
2-1 检查低模
在较高细分级别雕刻时,较低细分级别网格顶点的位置通常也会受到影响。因此,导入雕刻程序的低分辨率网格可能不再与用于生成置换贴图的低分辨率网格完全相同。
2-2 注意UV布局的正确性
置换贴图通常需要良好的UV布局,重叠的UV将在生成的贴图中导致错误。此外,ZBrush特别不喜欢将UV直接放置在UV表的边缘上(就像某些自动展UV软件所做的那样),因此请确保UV始终稍微放置在UV表的边缘以内。
3 对接流程
3-1 ZBrush导出流程
- 准备好雕刻好的高模和用于导出的低模;
- 如果高模是从另一个DCC软件导入的,请转到 Tool 卷展栏,展开 Geometry,然后点击“重建细分曲面”(Reconstruct Subdiv),直到达到所需的最低级别,重新生成较低细分的模型;
- 在 ZPlugin 卷展栏中找到 Multi Map Exporter,选中 Displacement 按钮;
- 设置导出贴图的尺寸 (推荐2K以上);
- 打开'Flip V' ;
- 将 'SubDiv Level' 调低 ;
- 关掉 'Adaptive' ;
- 将 'DPSubPix' 设置为4 ;
- 关掉 'SmoothUV' ;
- 将 'Mid' 设置为 0 ;
- 关闭 '3 Channels' ;
- 将 'Scale' 设为1 ;
- 开启EXR选项,点击 'Create All Maps' 生成贴图。
3-2 3ds Max渲染设置
4 经验之谈
4-1 提高细分
在理想的情况下,浮点置换映射总是能产生精确的结果,与原始的高分辨率网格完全没有区别。不幸的是,由于低模面数的限制,通常在不做细分的情况下无法还原置换贴图中成吨的细节。每个软件都有自己的方法来完成类似的任务,比如Turbo Smooth,OpenSubdiv等等。所以,不要指望一个方盒子能够依赖仅仅一张置换贴图变成一颗苹果,置换需要极大的代价。
4-2 置换补偿
置换贴图的置换值直接对应于烘焙模型的尺寸,因此当你已经将一张置换贴图应用于低模后,再去对低模执行缩放操作,就会使得置换的强度 (intensity) 过高或不足,此时可以通过设置VRay中的 'Displacement Amount' 进行置换强度的补偿。
4-3 关于导出时的烘焙级别
通常来说,烘焙法线贴图时,低模级别为4;烘焙置换贴图时,低模级别为2(高模细分6以上),但Vray比较吃细节,建议低模级别更低一些。
5 总结
Displacement Map 如今被越来越广泛地应用到CG制作流程中,不仅仅是CG,甚至是Real-time pipeline。
Quixel家的扫描材质质感十足,但往往自己拿来用就变成了'买家秀',究其原因很多CGer认为置换是万灵药,殊不知还原'卖家秀'里成吨的细节需要付出的代价。
归根结底,置换需慎重,用置换要考虑到整个场景的资源分配,符合实际应用需求。