前几天喜妹问极坐标怎么移动UV
本来以为是个简单的问题, 结果才发现UE5这边没有移动UV的节点.
找了找也确实没有这种节点.感觉不应该啊,都UE5了.
没辙. 那自己搓把!
// Apply scaling to A
float2 scaledA = UV * Float4.xy; // Scale using B.xy
// Apply translation to scaledA
float2 transformedA = scaledA + Float4.zw; // Translate using B.zw
// Output the transformed UV coordinates
return transformedA;
手搓完毕. 然后打开UE5的shader, 搜一下custom节点,拉一个出来
默认的代码删除,把自己的代码粘贴上去
改一下输出输入命名.
因为代码里用的输入是 UV 和 Float4 所以左侧那俩地方改成这俩名字
这个可以输出可以自定义 你要是改成 A 和 B 的命名 那么输入和变量里要改成一致内容:
然后这里讲解一下. 这个是输入一个UV坐标. 和一个4维向量 , 然后根据这个4维向量. 去移动这个坐标. 最后输出的是移动后的UV坐标.
为啥是4维向量 .这样正好可以包括 U缩放.V缩放 U移动 V移动. 方便后面控制.
然后给这个节点起个名字,就OK了 ,这里起的是 UV缩放位移.
回到最开始没改名的代码.那个输入是UV和Float的代码. 这个输入和输出都是UV.所以可以串一切有UV字眼的口
下面的Float4,只传入4维向量. 就是颜色节点 RGBA.
或者你append 两个成4维也可以.这里建议用AppendMany,省事. 注意UV缩放默认都是1, 位移都默认都是0
另外提一下, 如果你要给这个颜色节点改名字.需要单独append一个节点出来. 因为改名字就相当于把输入的变量名字改变了. 代码获取不到原来的RGBA变量. 就会出错. 所以改名的话,需要把四个通道另外append成一个rgba节点,代码才可以正常识别:
图上方为改参数名字的连法.下面是正常最简单连法:
然后这个节点就可以来回串串了,可把这个节点串到各种需要调整UV的地方
然后可以愉快的调节uv了