UE4定制表达式材质节点Custom的使用

      Custom节点的Code属性可由用户自己编写代码,代码与HLSL语法一致
      节点的输出是Code中return返回的值,返回值类型可在[Output Type]属性修改,比如选择[CMOT Float3],Code写入return float3(0,0,0);(这样简单的表达式也可以不使用return,直接写成float3(0,0,0)),将该节点连接到材质的BaseColor输入,则材质颜色固定为黑色。
Custom节点还有可以添加任意数量的输入,实现更复杂的功能。
1、纹理贴图在模型表面按圆形运动
      添加Custom节点,添加两个输入UV和Degree,输出类型选Float2,Code输入如下代码

float x = cos(Degree)*0.2;
float y = sin(Degree)*0.2;
return float2(x+UV.x,y+UV.y);

       按如下所示连接材质

UE4定制表达式材质节点Custom的使用_第1张图片
       该材质中纹理UV随时间偏移,偏移值在半径为0.2(UV空间长度)的圆上,因此看起来就像纹理沿着这个圆在运动。保存才之后可以看到转动效果

UE4定制表达式材质节点Custom的使用_第2张图片

2、整个模型的圆形运动
       添加Custom节点,添加一个输入Degree,输出类型选Float3,Code输入如下代码

float y = cos(Degree)*50;
float z = sin(Degree)*50;
return float3(0,y,z+50);

       按如下所示连接材质

UE4定制表达式材质节点Custom的使用_第3张图片
       这里将Custon输出连接到WorldPositionOffset输入,顶点会根据输入值进行偏移,偏移值在半径为50的圆上,因此模型会沿着这个圆运动。保存才之后可以看到转动效果

UE4定制表达式材质节点Custom的使用_第4张图片
      Engine目录下有两个材质函数LongLatToUV和UVToLongLat使用到了Custom节点,功能是实现三维立方体纹理坐标与二维UV坐标之间的转换。

UE4定制表达式材质节点Custom的使用_第5张图片
      UE4定制表达式材质节点Custom的使用_第6张图片

      官方文档也有一个对贴图进行模糊平滑处理的实例

float3 blur = Texture2DSample(Tex, TexSampler, UV);
for (int i = 0; i < r; i++)
{
  blur += Texture2DSample(Tex, TexSampler, UV + float2(i * dist, 0));
  blur += Texture2DSample(Tex, TexSampler, UV - float2(i * dist, 0));
}
for (int j = 0; j < r; j++)
{ 
  blur += Texture2DSample(Tex, TexSampler, UV + float2(0, j * dist));
  blur += Texture2DSample(Tex, TexSampler, UV - float2(0, j * dist));
}
blur /= 2*(2*r)+1;
return blur;

      一般情况下能用已有功能节点实现的就用已有功能节点实现,不要使用Custom,见官方提示

UE4定制表达式材质节点Custom的使用_第7张图片

 

你可能感兴趣的:(Unreal,Engine,UE4,定制表达式节点)