一、材质节点介绍:
特别注意:距离场需要独立显卡支持。
1、什么是距离场?
想象一下空间中只有两个实体, 一个球,一个圆柱.
空间由无数个点组成, 取其中任何一个点, 比如,它跟球面的最近距离 是3, 跟圆柱面的最近距离是2, 那么这个点的值就是2. 空间中所有的点都按照这个方法取值, 就形成了一个标量场, 称为距离场.
距离场计算出来以后, 能够得到场中任何一个点跟所有参考物体 (比如上例中的球和圆柱)之间的最近距离.
如果距离场的值表现为图像的明度, 它的视觉印象是一个个由参考物体分割出来的渐变区域.
2、距离场的开启
点击 主(Main) 菜单上的 编辑(Edit) 并选择 项目设置(Project Settings) 将其打开。
点击 渲染(Rendering)> 软件光线追踪(Software Ray Tracing) ,可找到用于调整网格体距离场的设置。
3、距离场的查看
4、DistanceToNearestSurface( 与最近表面的距离**)蓝图节点**
节点尝试理解:
根据理解与最近表面的距离获取的应该是个标量,我们除以一个值,使渐变区域变大以观察效果。
把这个材质赋予场景中的平面,这样平面上的自发光颜色根据这个距离除以100进行发光。
这样我们就理解了这个节点了,获取到的是物体上每个像素点到最近物体表面的距离。为了验证我们在添加一个物体看看效果:
在此示例中,DistanceToNearestSurface输送到材质上的"不透明"(Opacity)输入,而该材质应用于放在关卡地板正上方的"静态网格"平面。 DistanceToNearestSurface的作用是告诉材质,"静态网格"平面仅从红色区域开始与场景中的其他"静态网格"相交。
5、DistanceFieldGradient(距离场梯度)蓝图节点
距离场梯度(DistanceFieldGradient) 材质表达式节点进行规范化(normalize)后,将输出对象在距离场中的X,Y,Z移动方向。方向是从物体到材质物体的方向。 这使DistanceFieldGradient材质表达式节点非常适合于需要模拟液体流的材质。
材质节点尝试:
半透明材质渲染距离场是有问题的:
换成不透明材质效果如下:
为了看清楚效果,自发光乘以一个数值。
看另一个效果:
再看另一个效果:
看完你会发现还是规范化省事,并且这个节点是既带有方向又带有距离的。
这里是在材质中使用 DistanceFieldGradient 材质表达式的示例。 在此示例中,请务必注意,DistanceFieldGradient首先进行规范化,然后输入到"Mask Channel节点。 这样做的原因是,如果不首先对DistanceFieldGradient进行规范化,您将无法获得方向性数据。 为了方便在材质实例中进行RGB通道切换,添加了"遮罩通道"(Mask Channel)参数。
以下是作用中的DistanceFieldGradient示例。 下图显示启用各种RGB后DistanceFieldGradient将会使用的数据。
6、材质上的参数:世界场景位置偏移
允许通过材质在世界空间中操纵网格体顶点。
尝试1:
发现使用这个材质的物体在Z轴上移动了100单位。
尝试2:
尝试三:
尝试四:
变成一个点了。
尝试5:
变成一个圆了。