UE4材质初探

UE4的材质表面上看起来很简单,可是到了用的时候却总是没有办法实现好的效果。所以特意对文档进行阅读,初步了解了一下主要知识点。

当前使用的UE4版本:4.8.0。

UE4中的材质有很多用途,可以用于光照、延迟渲染、粒子系统等等。由于暂时不会用到,目前只做了最基础的材质使用的研究,也就是说是Materia Type为Surface的情况。材质的最终输出节点上的可用项会随着功能选择的不同而有所不同。即便使用Materia Function使所有的引脚都是可用的也会在实际使用时根据选择而被禁用。

材质输入引脚

材质中最为关键的是作为最终输出结果的引脚,根据情况的不同有的会使用,有的并不会被使用。

基础颜色(Base Color)

定义材质的颜色,接受参数为Vector3(RGB)。颜色采用float形式,任何超出范围的输入数值都将被clamp到0~1的范围内。

相当于在摄影中使用偏光镜滤除由反射引起的杂光之后的物体的颜色。偏光镜的效果可参照以下对比图。

右边为加了偏光镜后的效果。

金属(Metallic)

定义材质接近金属的程度。0~1的范围由低到高的接近金属材质。从个人感官上,金属性决定的是类似于高光反射强度的参数。

高光(Specular)

在大多数情况下保留默认的0.5即可的参数。调整的是非金属材质的高光反射强度,对金属材质无效。

经实际测试,在金属性为0.5时,这个参数几乎没有可视觉识别的影响。在金属性为0时可以为增加一定程度的高光反射。

粗糙度(Roughness)

定义材质的粗糙程度。基本和现实生活中一样,数值越低的材质镜面反射的程度就越高,数值越高就倾向于漫反射。

自发光颜色(Emissive Color)

定义材质自主发出光线的参数。超过1的数值将会被视为HDR参数,产生泛光的效果。

高动态范围成像(简称HDRI或HDR)是用来实现比普通图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。

不透明度(Opacity)

定义材质的不透明度。

不透明蒙板(Opacity Mask)

只在Masked Blend模式可用的参数,与半透明度不同的是。不透明蒙板的输出结果只有可见和完全不可见两种。通常用于实现镂空之类的效果。

普通(Normal)

其实是法线参数,通常用于连接法线贴图。UE4中文一直使用『普通』这个翻译,不知是否有什么深意……

世界位置偏移(World Position Offset)

世界位置偏移参数使得材质可以控制网格在世界空间中的顶点位置。

使用时如果遇到剔除投影之类的错误,则需要放大网格的Scale Bounds,虽然这样做会导致效率下降。

世界位移(World Displacement)

与上面的属性相似,不过世界位移只能在Tessellation属性有设置时才起作用的。

多边形细分乘数(Tessellation Multiplier)

同样只有在设置了Tessellation属性时才可以使用,决定的是瓷砖贴片的个数。

次表面颜色(Subsurface Color)

只有Shading Model为Subsurface时才有效的引脚,用于模拟类似于人类皮肤这样在光线透过表面之后会有第二种表面颜色反射的情况。

透明涂层(Clear Coat)

透明涂层通常用于模拟在材质的表面有一层薄的透明涂层的情况,如钢琴烤漆之类的效果。

透明涂层粗糙度(Clear Coat Roughness)

决定透明涂层的粗糙度。

环境遮挡(Ambient Occlusion)

用于连接AO贴图的引脚。

折射(Refraction)

用于调整透明材质的折射率的。

像素深度偏移(Pixel Depth Offset)

当前官方文档没有说明。

常用节点

引擎提供了很多非常使用的节点,不过数目有点多,只能在实际使用中熟悉才能渐渐的掌握。下面列出的是可能会经常被用到的节点:

Panner

对UV坐标进行平移,用于UV动画的实现。

Rotater

对UV坐标进行旋转,同样用于UV动画的实现。

BlackBody

这个节点可以对贴图应用一个黑体辐射效果,实际效果就像是过了一遍热成像扫描。

BumpOffset

这个节点用于实现视差贴图,使得贴图更具有真实感。

ConstantBiasScale

这个节点将输入值加上一个值之后再乘上一个值。例如将正弦函数的结果由[-1~1]压制到[0~1]就可以使用1,0.5的参数来操作。

Fresnel

这个节点将摄像机向量与网格法线向量进行点乘并应用到0~1的范围中。

当摄像机方向与网格的法线垂直时返回1,当方向一致时则返回0。Fresnel的计算在设置了法线贴图时则会使用法线贴图进行运算。这个节点可以用于区分边缘,例如玻璃材质就会使用到。

详细的用法可参照官方教程:Material – How To Use Fresnel in your Materials

DepthFade

这个节点的作用是使得两个透明物体在叠加时显得更加自然。

DepthOfFieldFunction

这个节点的作用如其名称,提供景深的运算结果。0~1的范围代表从聚焦到模糊。

Desaturation

这个节点的作用是去色,会生成一个单调柔和的灰度图。

Distance

这个节点的作用是计算两个输入值的距离。输入值可以是两个点、颜色、位置或者向量。

FeatureLevelSwitch

这个节点允许对不同的设备使用不同的材质以保证材质在低运算率的设备上能够有平滑的切换。

QualitySwitch

这个节点可以让材质在不同的视频设置下使用不同的数值。

GIReplace

这个节点为材质提供在全域照明下产生不同间接光效果的方法。

LightmassReplace

这个节点可以使得材质在被到处为光照用时使用一个不同的值。

LinearInterpolate

就是Lerp,线性插值,基本上复杂的材质都会用到。

Noise

这个节点的作用是生成噪波图。

RotateAboutAxis

对给定的向量进行旋转,通常用于获得选择WorldPosition之后传递给WorldPositionOffset。

SphereMask

这个节点在指定的位置生成一个球形并进行距离计算,圆心处为1,外围为0。

AntialiasedTextureMask

对输入进行抗锯齿运算。

————————————————————-

到此初步探索就算是完成了,要一下子实现自己想到的材质效果还是有点难度的,不过至少不会茫然了。想要对材质更加的熟悉,需要的大概是更多的经验的积累。

Materia | UE4 | 材质http://blog.ch-wind.com/ue4-materia-explore/

本文链接地址: UE4材质初探
本博客所有内容遵循CC BY-NC-SA 3.0协议:

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/skiwnchiwns/p/10343028.html

时间: 2024-08-02 00:20:40

UE4材质初探的相关文章

UE4材质系统研究

本文将研究UE4材质系统的各个节点,看看UE4的黑科技 1. 平移(UV坐标动画) UV 坐标动画或 UV 平移的含义是,水平 (U) 和/或垂直 (V) 移动纹理的 UV 坐标,以产生复杂动画的错觉. 在以下示例中,火焰纹理沿着 U(水平)方向平移,使火焰看起来像是在移动一样. 参考文章:http://api.unrealengine.com/CHN/Engine/Rendering/Materials/HowTo/AnimatingUVCoords/ 关键节点: 快捷键:p+左键 上图节点可

UE4材质中的点乘DotProduct

向量点乘的定义 如果a和b是两个向量,那么 a·b = |a|·|b|·cos(θ) 其中θ是两个向量的夹角,cos是余弦.(数学公式输入好麻烦..) 下图说明了关系. 单位向量的点乘 在游戏中,表示方向的向量往往是单位向量. 为了简化起见,假设a和b都是单位向量,也就是长度为1,那么: a·b = cos(θ) 那么这个公式就简单了. 用点乘判断向量朝向关系 考虑到,cos(0)=1,cos(π)=-1,cos(π/2)=0,那么我们就可以用点乘来判断两个向量的朝向关系了. 友情提示,有些同学

UE4材质中的SphereMask

SphereMask的含义 SphereMask是个神奇的东东.看名字就知道大概什么意思,球形遮罩.. SphereMask效果演示 SphereMask 效果演示小视频 从演示中可以看出,当镜头距离越来越近时,材质开始发光.镜头边远时,材质发光变弱,直到完全不发光. SphereMask示例材质 SphereMask的参数 SphereMask有四个输入参数. A:待检查的位置. B:圆心的位置. Radius:半径. Hardness:硬度,0是完整过渡,100是没有过渡. 输出的是一个0~

UE4 材质Lerp节点解疑

转自:http://www.manew.com/thread-46268-1-1.html 1.A是一个灰色,B是一个红色,Alpha是一个颜色图 A到B是0到1,也就是黑到白,所以,alpha图,黑色的部分就会显示A部分,而白色的部分就会显示B部分, 得到最后的图是黑色部分透过A的灰色,白的部分就会透过B的红色,得到最后一张Lerp图. 2.官方解释 A–>B相当于0到1的变化,也就是黑到白的变化. 当Apha接入的UV像素,相当一张0到1的灰度值,根据这张图每个UV像素的0到的1数值,去混合

ue4 material custom node - global function and method

在ue4 material中定义全局函数 1. 背景 原文unreal-engine-4-custom-shaders-tutorial 中,提出了一种在material生成的hlsl文件中定义全局函数的方法,记录到这里以备复习. ue4 材质中的custom节点是用来使用hlsl代码的地方.一般来说都是直接编辑逻辑,最后添加return返回.类似这样: 1 float4 color = {1,0,0,1}; 2 return color; 使用ue4材质 menu window->hlsl s

UE4 分层材质 Layerd Materials

在UE4中最正规的材质制作流程就像: 建立新材质,并将其调整为达至完美. 在内容浏览器中,建立新材质函数,并将所有材质函数节点复制/粘贴到其中. 将网络连接到新的 Make Material Attributes(建立材质属性)节点,并将其连接到"函数"(Function)输出. 保存该函数. 将该函数从内容浏览器拖放到材质编辑器中.现在,它变为材质层. 使用材质层混合函数将多个材质层混合到一起. 该流程的具体步骤: 1,新建材质,将材质调好 2,新建材质函数,复制该材质,将材质函数暴

UE4高级功能--初探超大无缝地图的实现LevelStream

前言 好吧,这次总结的还是UE4,在这里要向CE3的朋友们道一声歉,因为本人水品有限,对于CE3的探索学习陷入了一个非常大的瓶颈,暂时抽不出一块儿大的单独的时间去解决,另外,自己也有一点小小的私念,就是期盼Cryteck官方能够推出新的版本,至少能完善一下现在的文档,所以只能暂时把CE3搁置下来,但是我并不会放弃CE3,CE3对我来说,绝对是个非常大的挑战,我不会轻易放弃他的. 好了回归正题,先来简单说一下写这篇文章的背景吧,这两天我试着看了一下UE4官方提供的实例"2014功能介绍"

UE4笔记:利用Widget设计一个切换材质功能

UE4引擎中的Widget蓝图是一个重要的工具,可用于场景中的页面叠加,镜头绑定,场景切换等多处地方,在这里笔者介绍一种利用控件蓝图和场景中物体进行信息交互的方法,直观的体现就是进行物体的材质切换. 1.创建控件蓝图 控件蓝图不同于一般的逻辑蓝图,主要表现在其需要进行画面的设计和平铺.在内容浏览器中创建一个控件蓝图,命名为SwitchMat_UI 双击打开控件蓝图编辑器,进行页面的设计布局. 拖放一个水平盒子到页面中,位置和大小如下图所示(可根据个人喜好进行布局),命名为SwitchMat,同时

利用第三方材质对物体进行描边【UE4】【C++】

效果图: 第一步,创建C++ Basic Code 第二步,定义键盘和鼠标输入的映射 第三步,修改 Rendering 中的 Custom Depth - Stencil Pass 第四步,找到GlobalPostProcessVolume [如果没有的话自行拖放一个PostProcessVolume组件] 将 unbound 勾选上 再修改 Blendables 为 PPI_OutlineColored 完整代码如下: MyPlayer.h // Fill out your copyright