原创作品

UE-自定义UV节点

飞雪之嘟 发表于   2024-09-03 20:45:39
3475
8
12

前几天喜妹问极坐标怎么移动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节点,拉一个出来


image.png


默认的代码删除,把自己的代码粘贴上去

image.png

改一下输出输入命名.

因为代码里用的输入是 UV 和 Float4 所以左侧那俩地方改成这俩名字


image.png


这个可以输出可以自定义 你要是改成 A 和 B 的命名 那么输入和变量里要改成一致内容:


image.png


然后这里讲解一下. 这个是输入一个UV坐标. 和一个4维向量  ,  然后根据这个4维向量. 去移动这个坐标. 最后输出的是移动后的UV坐标. 

为啥是4维向量 .这样正好可以包括 U缩放.V缩放 U移动 V移动. 方便后面控制.


然后给这个节点起个名字,就OK了 ,这里起的是 UV缩放位移.


image.png



回到最开始没改名的代码.那个输入是UV和Float的代码. 这个输入和输出都是UV.所以可以串一切有UV字眼的口

下面的Float4,只传入4维向量. 就是颜色节点 RGBA.  


image.png


或者你append 两个成4维也可以.这里建议用AppendMany,省事. 注意UV缩放默认都是1, 位移都默认都是0

image.png


另外提一下, 如果你要给这个颜色节点改名字.需要单独append一个节点出来. 因为改名字就相当于把输入的变量名字改变了. 代码获取不到原来的RGBA变量. 就会出错. 所以改名的话,需要把四个通道另外append成一个rgba节点,代码才可以正常识别:

图上方为改参数名字的连法.下面是正常最简单连法:

image.png


然后这个节点就可以来回串串了,可把这个节点串到各种需要调整UV的地方

image.png


然后可以愉快的调节uv了


GIF2.gif

标签:
确定
评论(8)
233322
如果是中心点的移动按理来说自带的节点加一个二维的向量不就可以直接移动吗?手搓太懒了
回复
348天前
飞雪之嘟
回复
233322
哦对! 确实是这么回事!我都两年多没碰UE了,当时两眼一抹黑啥也没想起来.你这么一说确实没毛病.
回复
348天前
不说
我的哥,你怎么偷偷摸摸就玩出来新东西了
回复
349天前
飞雪之嘟
回复
不说
正好上个月搞了搞shader的写法. 发现不是想象中那么困难.除了算法可以百度到外. 代码里很多api还是咱们那些连的节点的名字. 一看就懂...
回复
349天前
Vegetable
试试panner做UV流动
回复
349天前
飞雪之嘟
回复
Vegetable
panner不是本来就有节点嘛. 一般情况下不用自己写了.
回复
349天前
Vegetable
回复
飞雪之嘟
以前也研究过怎么通过节点实现UV偏移与UV流动 分享个节点思路 UV偏移与UV流动其实跟平面坐标的思路差不多 如果要改变极坐标中心点的位置 需要前置一部分节点 在极坐标Vector or UVs输入平面坐标先-0.5再*2 加一个二维向量做中心点的偏移值
回复
349天前
飞雪之嘟
回复
Vegetable
你还能脑子记住这个算数啊!强啊!要是不他们官方本来就有这个算法..我自己掰手指头都不一定能算出来...
回复
348天前
卖萌煽情狗丶
楠哥牛逼!
回复
349天前
飞雪之嘟
回复
卖萌煽情狗丶
:)
回复
349天前
墨泪
牛的!!
回复
349天前
肯德基
飞雪之嘟配享太庙
回复
349天前
深南大道的桶
飞雪之嘟配享太庙
回复
349天前
不猛哥
飞雪之嘟配享太庙
回复
349天前
没有更多啦~