第一部分
版权声明:本文为CSDN博主「蓬 蒿 人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
以下材质都是我学习过程中制作的材质,或者使用中用到的,基本上都可以在官方文档找到制作教程
1、半透明材质(Transparency)
参考:docs.unrealengine.com/zh-CN/Engin…
将材质属性的 Blend Mode 设置为 Translucent 就可以制作半透明材质,但是这种半透明材质无法添加某些光照属性,如 金属性 和 粗糙度 ,效果如下
如果要添加 光照 信息,可以设置 Translucency 属性下的 Lighting Mode ,然后保存上述材质,可以得到一个半透明的金属球
2、自发光材质(Emissive)
参考:docs.unrealengine.com/zh-CN/Engin…
自发光材质只要将需要发光的颜色连接到 Emissive Color 输入节点,使用贴图接入可以使物体不同部分发出不同的光
3、镂空材质(OpacityMask)
参考:docs.unrealengine.com/zh-CN/Engin…
要实现下面的额镂空材质,只要使用一张 OpacityMask 贴图就可以了。
先将材质属性的 Blend Mode 设置为 Masked,为了能看到里面需要使用双面材质,勾选Two Sided 即可,另外 Opacity Mask Clip Value 可以调节阈值,决定镂空部分和实体部分的分界值,低于阈值的部分镂空。
材质连接也很简单,将单一通道的贴图或者多通道贴图的某一通道连接到材质的 OpacityMask 输入节点就可以了,如下图
4、光泽度材质(Shiny)
参考:docs.unrealengine.com/zh-CN/Engin…
光泽度材质可以通过调节 Specular 和 Roughness 来实现,使用贴图某一通道作为 Roughness 输入,使物体表面不同部分的粗糙度不一样
通过调节不同的高光值后的效果
5、细节纹理材质(DetailTexturing)
参考:docs.unrealengine.com/zh-CN/Engin…
使用细节纹理材质可以 让相机接近物体时展示纹理的细节部分,相机远离时渐渐隐藏细节部分 ,主要用到 DetailTexturing 材质函数,函数会有一个 主纹理贴图采样 和 主法线贴图采样 输入,一个 细节纹理贴图对象 和 细节法线贴图对象(注意是 TextureObject 而不是 TextuerSample),以及其它一些参数,输出最终的纹理和法线。按下图连接
以下是 靠近相机 和 远离相机 的 效果
6、菲涅尔材质(Fresnel)
参考:docs.unrealengine.com/zh-CN/Engin…
菲涅尔效果 在摄像机方向与法线方向垂直时反射的光线最强,平行时最弱 ,就像用眼睛看着水面时的效果。使用 Fresnel 材质节点就可以模拟这种效果,主要用到 ExponentIn 和 Normal,分别输入 菲涅尔效果的衰减 和 观察点的法线 ,这里要将法线贴图 从切线空间转到世界空间 中,不然就得不到想要的效果,比如一个规则的球体的法线在切线空间中都是(0,0,1)
Fresnel 也可以用下面的材质函数自己实现,该函数已经将法线 由切线空间转到世界空间 , FresnelExponent 控制衰减,FresnelIntensity 控制菲涅尔效果的强度
7、透明涂层材质(ClearCoat)
参考:docs.unrealengine.com/zh-CN/Engin…
透明涂层材质能使物体看起就像表面有一层 半透明的涂层 (如车漆),效果如下图
制作透明涂层材质要将 Shading Model 设置为 ClearCoat ,这样材质上就会多出 ClearCoat 和 ClearCoatRoughness 两个输入,ClearCoat 决定透明涂层的强度,ClearCoatRoughness 决定透明涂层的粗糙度。
8、双法线透明涂层材质(ClearCoatDualNormal)
参考:docs.unrealengine.com/zh-CN/Engin…
双法线透明涂层会 多出一个法线输入,作为透明涂层的法线 。首先要在工程设置中启用 双法线透明涂层
材质按下图连接,ClearCoatBottomNormal 就是透明涂层的法线输入,是一个单独的节点,并不在材质主节点上,FlattenNormal 在法线贴图和 (0,0,1) 之间按 Flatness 值进行线性插值,Flatness 为 1 时完全使用 (0,0,1) 作为法线,为 0 时完全使用法线贴图。保存材质后看效果,可以看到表面的涂层也有了凹凸感。
9、次表面散射材质(Subsurface Scattering)
参考:docs.unrealengine.com/zh-CN/Engin…
次表面材质可以用来模拟皮肤等效果,光线透过次表面材质的物体时会在内部散射,在背面也能看到散射的光
次表面材质要将 Shading Model 设置为 SubSurface,然后材质的 SurfaceColor 输入变为可用,接入次表面的颜色即可,不透明度 Opacity 能决定散射的光线量,0 允许所有光线散射,1 不允许任何光线散射。
10、延迟贴花材质(MeshDecals, Deferred Decal)
参考:docs.unrealengine.com/zh-CN/Engin…
延迟贴花材质可以在物体表面添加一些特殊的效果,比如 污渍 效果。材质属性按如下设置
材质如下图连接,保存看效果
使用 DecalActor 可以在任意物体表面应用延迟贴花材质,将上述材质应用于地面,如下图
第二部分
版权声明:本文为CSDN博主「蓬 蒿 人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1、关闭深度测试
关闭深度测试的材质无论前面是否有遮挡物都会显示,如下面的一个纯红色材质
勾选材质属性 Translucency 栏下的 Disable Depth Test
这种材质可以用于坐标轴,如下图所示的 坐标轴 使用的这种材质,虽然在地板下面也能看到
2、后期处理材质(Post Process)
一般用于后期处理体积,影响场景(后期处理体积内)最终整体渲染效果,更多关于后期处理材质内容参考:
docs.unrealengine.com/en-US/Engin…
后期处理材质需要将 MaterialDomain 选择为 PostProcess 项
下面材质将 SceneTexture(还可以修改为其他类型实现不同的效果)作为 PostProcessInput 输入,如下连接节点,将场景输出颜色乘以 (0,0.8,1)
最终效果如下,整个场景的输出像素值都乘以某一个颜色,从而呈现各种色调的效果
该材质的用法是放到后期处理体积的 Post Process Material 属性中
3、世界绝对位置作为贴图 UV(Absolute World Position)
将 世界绝对位置 作为贴图的 UV 可以使贴图 不会 因为模型的大小、缩放或 UV 值而变形,比如石子路,路可以无限延长,而贴图 不会 拉伸,而且无缝衔接,材质连接如下
上面的材质只能保证在 XY 平面正常贴图,也可以改成 XZ 或者 YZ 平面,但是要在三维平面中保持贴图正常就 需要 其他一些计算了(我也不知道要怎么计算,所以就只举例二维平面的),世界绝对位置一般要乘以某个值再作为贴图 UV 比较合适,这里是 0.01 ,根据具体情况设置不同的值,贴到地面后效果
4、线框材质(Wireframe)
线框材质只要将材质属性的 Wireframe 选项勾选即可
材质连接图
效果如下
5、灯光材质(Light Function)
灯光材质将 Material Domain 设置为 Light Function
材质连接图如下,其中贴图是用不同颜色绘制的不同形状
在场景中放置一个聚光灯照向地面,灯光的颜色改成了蓝色,Light Function Material 设置为上面的材质
效果如下图
可以看出贴图的灰度值 影响 灯光的亮度,而贴图的颜色值 不影响 灯光的颜色,灯光的颜色就是聚光灯本身设置的颜色
6、分层材质(Layered)
分层材质可以用于积雪覆盖等效果,更多内容参考:
docs.unrealengine.com/en-US/Engin…
先创建两个材质函数 LayerBase 和 LayerTop 作为底层和顶层
LayerBase
LayerTop
将 Input In(Vector3) 节点的属性 Use Preview Value as Default 勾选,就可以使用材质函数中默认的输入
创建材质 LayerMaterial ,勾选 Use Material Attributes
按下图连接材质 MatLayerBlend_Simple 用于混合材质,WorldAlignedBlend 输出 混合Alpha
效果图如下
7、子 UV 材质(SubUV)
子 UV 材质在粒子系统中使用的比较多,用于播放动画,比如爆炸的效果使用的下面一张贴图
创建材质 SubUV ,如下设置属性
材质节点连接图
创建一个 粒子系统,应用上面材质
设置 Required 模块的 SubUV,水平和垂直个数都是 6
添加 SubImage Index 模块
设置 SubImage Index 模块的 SubUV 属性栏,在粒子的生命周期中从第 0 帧到第 35 帧变化
跟 SubUV 相关的主要就是这些属性,再设置其他属性比如 粒子生成速率 ,*生命周期 *以及 速度方向 等就可以实现一个爆炸的粒子效果。
此外 FlipBook 也可以播放动画,如下图所示连接材质
直接就可以播放爆炸动画了
8、变换贴图(Transform UV)
该材质留出几个材质参数节点,可以用于 缩放 旋转 和 平移 材质贴图,通过控制贴图的 UV 实现,材质连接图如下
ScaleU 和 ScaleV 用于缩放 UV,并不是我们理解的缩放贴图,如果要改成缩放贴图 应该 使用倒数,效果如下图
材质主节点还有一个 Customized UV0 输入,可以将上面的材质按下图连接,实现同样的效果
Customized UV0 默认不显示,我们可以通过修改材质属性的 Num Customized UVs 项将它显示出来,也可以填写更大的值显示 Customized UV0、Customized UV1 直到 Customized UVn 。
9、修改顶点位置(Panner)
材质主节点的 World Position Offset 输入可以修改顶点的位置偏移,比如下面的材质,位置偏移从法线贴图的 B 分量获取,再加上 Panner 节点让纹理贴图随时间移动就实现了水面流动的效果
Panner 节点参数
最终效果
10、立方体贴图材质(TextureCube)
立方体贴图需要输入 三维 的 UV 坐标,UVToLongLat 材质函数可以将 二维 UV 坐标转为 三维 UV 坐标,如下图 TextureSample 节点的纹理贴图是一个立方体贴图 TextureCube ,
效果
上面材质的 TextureSample 节点纹理贴图可以换成 CubeRenderTarget ,并将 CubeRenderTarget 作为 SceneCaptureCube 的 渲染目标 从而获取当前场景的全景图。
与 UVToLongLat 相对应的有一个 LongLatToUV 材质函数,将 三维 UV坐标转换为 二维 的,与 UVToLongLat 相反,大致用法如下,但并不准确,也得不到立方体贴图的其中一面
TextureSample 是一个全景图样子的二维贴图 Texture2D,如下图
只得到了很小的一角