转自:http://www.unrealchina.net/portal.php?mod=view&aid=233

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

对输入进行抗锯齿运算。

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

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

UE4材质初探的更多相关文章

  1. 如何突破Ue4材质编辑器没有Pass的概念

    Content-Driven Multipass Rendering in UE4 GDC 2017 Blueprint Drawing to Render Targets Overview Live ...

  2. UE4 材质切换(带动画效果)

    先看效果图:小木块掉到地板上(小木块本身会消失掉),地板就开始了动效材质切换.引擎版本用的是4.11.2 方法步骤: 首先在UE4内容浏览器中新建一个材质. 第一步要实现一个扫光的效果,如下图. 实现 ...

  3. ue4 材质表达式分类

    绿色节点 颜色 Color Desaturation 数学 Math GO 字体 Font FontSample,FontSampleParameter 实用程序 Utility 常用: Desatu ...

  4. UE4材质特别属生记录

    tangent space normal 切线空间法线 材质默认使用的切线空间法线,可切换为对象空间法线(彩色贴图) Separate Translucency 单独半透明 允许半透明被渲染到一个单独 ...

  5. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-4 基于重要性采样的材质初探

     Preface 我们今天来把第三本书从开局到现在讲的一大堆理论运用到我们的框架中,那么今天我们首先将原始的材质改为基于重要性采样原理的材质 这一篇是代码工程中进行MC理论应用的初步尝试篇  Read ...

  6. 【UE4 材质】一些小功能

    利用材质实现物体自转 物体外轮廓高亮 使用postprocess+custom depth(防遮挡) https://www.tomlooman.com/soft-outlines-in-ue4/ h ...

  7. UE4 材质编辑

    1.颜色反转(纹理颜色白变黑,黑变白)

  8. UE4 材质Lerp节点解疑

    转自:http://www.manew.com/thread-46268-1-1.html 1.A是一个灰色,B是一个红色,Alpha是一个颜色图 A到B是0到1,也就是黑到白,所以,alpha图,黑 ...

  9. 【UE4 C++ 基础知识】<8> Delegate 委托

    概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到 ...

随机推荐

  1. vector对象

    vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector<int> 定义和初始化vector对象: vector<T> v1    ...

  2. lockingModel in log4net 日志文件不能被其他进程写入

    http://logging.apache.org/log4net/release/faq.html#single-file How do I get multiple process to log ...

  3. 【转载】树链剖分.By.Xminh

    轻重链剖分 其实就是俗称的树链剖分. PS:树链剖分不止有轻重链剖分.但是大多数时候的树链剖分指的就是轻重链剖分. dfs序 给树的节点重新编号,使得任意一个节点满足子树的dfs序都比它要大,而且它子 ...

  4. HDU 2430 Beans (单调队列+公式化简)

    题意:给你n袋豆子,每袋都有w[i]个豆子,接着任选连续任意个袋子的豆子合在一起放入容量为p的多个袋子里(每个袋子必须放满),问剩余的豆子数<=k时,能放满最多的袋子的个数 题解:个数与p都比较 ...

  5. vue 列表渲染 v-for循环

    v-for循环指令类似与html中C标签的循环,同样可以遍历数组,集合. 1.这里演示一下遍历数组的基本用法,代码如下 <!DOCTYPE html> <html> <h ...

  6. js外观模式

    外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式类图: 然而对于外观模式而言,是没有一个一般化的类图描述,下面演示一个外观模式的 ...

  7. IOS开发--解析复杂json数据

    json的自我介绍:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅 ...

  8. SQL授权语句(MySQL基本语句)

    看他们网上的,写得都是千篇一律,同时,好多也写得不是很好,下面是我自己总结的有关mysql的使用细节,也是我在学习过程中的一些记录吧,希望对你有点帮助,后面有关存储过程等相关操作还没有总结好,下次总结 ...

  9. 选择排序—简单选择排序(Simple Selection Sort)原理以及Java实现

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  10. python 换行

    python3 end = “”:输入参数不换行. 就是打印之后不换行. python字符串换行: (1)三个单引号,例如print '''我是程序员 刚学习python''' (2)三个双引号,例如 ...