找回密码
 立即注册
查看: 293|回复: 0

UE4官方材质课_基础篇(下)

[复制链接]
发表于 2022-9-19 22:00 | 显示全部楼层 |阅读模式

  • 本文为虚幻官方材质课的学习笔记,并不完全,在此按我的个人需求记录了如下笔记。这一篇是基础篇第二部分。我会将上篇和中篇的链接放在结尾!有需要的朋友可以自行跳转!
  • 我将此教程拆成三部分写了笔记,一共分为上,中,下三篇,这一篇是基础篇(下篇)
  • 这里是基础篇在B站的链接
  • 加油 ! 加油 !


<hr/>
三:实例创建不同的材质演示:

clear coat制作类似车漆质感:


  • 将shading mode设置为clear coat后,Material会又clear coat和clear coat Roughness这两个选项
  • 它的显示方式与普通的材质较为相似,如果希望有光滑的表面,并且希望透明图层下的表面有凹凸效果,就可以选择clear coat来模拟
  • 如果要启用clear coat的第二层normal,则需要去setting中开启(默认是关闭的)



clearcoat_enableSecNormal



btNormal


  • 我们可以lerp两个scaler控制roughness,并用类似的方式控制设置表面的normal以及clear coat光滑表面下的bottom normal
  • 示例:



clearcoatmat



clearcoatmat_view

Two-Sided Foliage 双面植被:


  • masked这种模式需要与shading mode下双面材质(two sided foliage)设置配合使用。(如果是default lit的模式下,则没有subsurface通道)
  • 这种着色方式实际上并不是半透明的,但他能很好的与蒙版混合模式搭配使用,并且借助subsurface color以更低的开销模拟半透明效果。
  • 其他的材质通道设置与普通材质没有很大区别,要注意的是使用opacity mask并且需要双面显示的话,一定要勾上two sided这个选项。
  • 借助wo Sided Texturing这个function可以分开控制双面材质正反两面的参数以及效果,最终的结果就是调节了subsurface以模拟光透过叶片的效果



twoSidedFunction


  • 示例:



twoSidedFoliage

布料着色:

小tip:如果有时候近处被裁切影响放大观察,则可以去Output Log的cmd中输入:r.SetNearClipPlane 1,将相机近景裁切更改为1


  • 通常我们可以使用subsurface或者fresnel来实现布料的模拟。但是UE提供的 shading mode下就有 cloth这个选项,该着色模式使模拟布料的时候可以用于不同角度查看它的毛绒质感
  • 我们创建布料材质的时候,shading mode需要选择cloth,blend mode保持opaque;此时Material中就会有Fuzz color 和cloth这两个通道。cloth通道可以借助mask指定该材质哪些部分是布料。如果是窗帘这样需要双面的材质,则也需要勾选two sided。
  • 可以通过两个texture sample将布料纹理和布料图案分开设置,同理也可以将roughness和normal用一样的方式分开设置。



m_cloth_basecol


  • blend angle corrected normal,这个内置函数可以混合两张法线贴图
  • FuzzyShading,此函数可以使用于fuzz color,它支持我们控制菲涅尔



m_cloth_basecol


  • 我们通过调节这些参数的组合得到不同的效果



m_cloth_display

染色玻璃:

方案步骤:

  • 使用顶点色,来打造有色玻璃的效果,并且玻璃的着色颜色仅显示在最厚的部分
  • 使用UE中的内置函数,给玻璃表面添加磨砂或者模糊效果
第一部分:创建基础玻璃


  • 创建material,使用blendMode为 Translucent,shading mode保持Default Lit。
  • 随后去到Translucency的选项下,lighting Mode选择使用Surface ForwardShading或者Surface TranslucencyVolume,开启质量较高的着色选项。开启后可以发现material可以使用metallic,roughness等通道了。
  • 设置一个简单的折射控制,使用fresnel作为Lerp,alpha来设置边缘到中心的折射参数。玻璃的IOR差不多设置在1.2-1.52之间。



m_glass_refraction

第二部分:加上玻璃边缘的磨砂绿色质感


  • 这一部分使用Modes中的paint来绘制顶点色实现



m_glass_vertexCol


  • 我们仅仅需要影响桌子的边缘,再将绘制好的顶点信息导入材质,以确定哪些区域被采用并进行上色。绘制完成后记得保存此vertex color到内容浏览器中。



m_glass_vertexColBlend


  • 添加使用vertex color



m_glass_vertexColBlend2

第三部分:使用菲涅尔改进色调真实度


  • 使用Fresnel_Function,使玻璃内部和外部可以分开调节
  • 使用Pixel NormalWS(像素法线世界空间)作为normal vector



m_glass_Fresnel_Function2


  • 使用substract,设置玻璃的边缘透明度



m_glass_edgeOpacity


  • 在视图窗口也可以使用Visual effect中的Planar Reflection来提升反射效果,得到更准确的反射(适用于平面,但不太适合其他有机形状)



m_glass_table

第四部分:设置一些磨砂效果


  • spiralBlur-SceneTexture,我们需要用这个自带函数来控制材质的自发光颜色,并需要与Opacity的边缘控制也关联



m_glass_spirlblur


  • 现在我们需要反转之前绘制的vertex color再与spiralBlur相乘,来连接自发光颜色



m_glass_spirlblur_emmisive



m_glass_frosted


  • 切记多调整参数来得到满意的效果
置换贴图,模拟毛毯地毯一类:

发布支持DX11显卡时,引入了一项全新的硬件功能:real-time Dynamic Tessellation Geometry。使我们能够使用置换纹理贴图在显卡上增加对象的多边形面数,由此显著提升了对象的物理细节而无需真正对此细节进行建模。


  • 创建materail的时候,需要先开启细分。去Tessellation的选项下,D3D11Tesselation中选择Flat Tesselation。还要勾选Crack Free Displacement,保留Adaptive Tessellation。
  • 此时Material中有新增了两个通道:

    • World Displacement(用于连接displacement Map)
    • Tessellation Multiplier(控制有多少polygon总数添加到对象,数量越大,置换效果越详细,但一般不建议开的很高)



  • 一般情况下,displacement map使用普通灰度图即可。
  • 如果在displacement的数值很高的情况下,导致边缘会产生与主体分离的效果,可以使用绘制vertex color来绘制边缘的部分,让边缘的部分不受tessellation的影响来解决这一问题。



paintEdges



m_displacement


  • 使用置换贴图必须先确保基础模型的网格数不会太低。
  • 置换贴图也会对性能产生影响,所以要谨慎使用。
顶点动画,创建窗帘随风吹动的效果:


  • 了解“世界场景位置偏移”(World Position offset)
  • 使用基本的material的设置创建布料材质作为基础,并使用World Position offset来创建窗帘的顶点动画
  • 使用panner来加入动画,使用vertex color绘制需要动画的部分,并加入材质控制



m_vertexAni_graph1



m_vertexAni_graph2


  • 需要将这个模型对象设置为movable来获得正确的光照和阴影显示



m_vertexAni

<hr/>
终于刷完了!受益匪浅!
<hr/>更多内容我会持续更新!
更多内容我会持续更新!
更多内容我会持续更新!

<hr/>
这里是我写的材质大师课笔记上篇的链接:UE4官方材质课_基础篇(上) - 知乎 (zhihu.com)
这里是我写的材质大师课笔记中篇的链接:UE4官方材质课_基础篇(中) - 知乎 (zhihu.com)

本文使用 Zhihu On VSCode 创作并发布

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-2-22 18:59 , Processed in 0.089723 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表