筒状模型UV材质 更新日期2021-11-25 digest

转播

2021-11-19 18:17 发布

特效教程技术讨论 /[技巧分享]
本帖最后由 坏熊猫 于 2022-2-17 20:06 编辑

在制作角色身上能量缭绕效果时 因为模型UV比较混乱的原因 UV动画总是以一种奇怪的方式在流动 不连续 流动方向大多也比较混乱 于是笔者就在思考有没有什么办法能基于模型表面平滑连续的流动。

方法1:使用双uv,但是作为特效 我们还要去修改模型部分的东西 总会引起美术资产制作流水线的混乱 而且修改繁琐,不过这是一种常规风险低实现难度低的办法,可以考虑。这种办法笔者这里就不多做介绍了

方法2:基于shader,我们根据算法给模型在材质里加一套UV,比如一个垂直地面的圆筒UV,这样就能比较贴合的包裹模型来流动,这里我们就基于此种办法来进行探索

首先我们先拿到模型,挂好相应的材质,我们进行一个思考,uv流动从脚底到头顶,这个过程在世界空间就是从y轴低到高的流动,有了这个思路我们先根据世界坐标进行尝试,用世界坐标减去本身坐标,得到相对位置矩阵。再以xy为UV大概我们得到一个拍平的UV如下图百片所示
619753423e1d0.png

材质如下图 这是一个最简单也最容易让人想到的办法

61975499f1b9b.png

下面我们进行测试

hz2.gif

我们发现因为是基于世界坐标,坐标朝向不会旋转,所以我们在转动模型时,呈现出了非常奇怪的视觉效果,而且因为我们是用xy做的UV,并没有计算z方向,所以我们侧面看模型的话,模型侧面UV是拉伸的,这样的效果显示是不能放进游戏的。到了这里会回到了原点。基于世界空间,uv无法旋转,那么我们肯定得基于local space,侧面看UV拉伸,那么我们的uv肯定与z轴有关联,我们突然想到如果uv是按照一个垂直于地面的圆筒覆盖到模型上的就能满足我们的需求。


先解决第一个问题,让这个坐标轴是基于local space的,我们思考下,脚底到头顶位置的变化,笔者也是灵光乍现,想到了一个节点vertex positon。这不是能完美的契合我们想要的东西吗,速度连上做测试。



619757633da74.png
hz3.gif

Nice!我们完美解决了旋转问题!!!前进一大步!那么现在的UV就是最上面那个平片模样的 只有一个角度能看,侧面看还是拉伸的,因为坐标基于xy轴,跟z轴无关,这样的uv肯定不会正确的,我们想要的是一个筒状的uv,而不是片,冷静思考下,我们画出示意图,构建数学模型。
619758e339a6a.png
既然是圆筒状的UV,那么垂直方向比较简单就是顶点位置的y方向,u方式是一个难点,我们现在剔除v方向,只考虑u方向,画出平面图

61975a1b8293c.png

我们可以想象一下,拿一个白纸往这个圆柱上贴,那张白纸就是我们的贴图,我们选一个点(x,z),v采样坐标就是y轴,那么x方向的采样坐标应该是途中L这段弧长,迅速翻出初中数学课本,翻到弧长公式,离我们的数学模型更近一步了!

61975b3683f32.png

公式里的n就是圆心角,R为半径,我们再看上面的图,先办法算出n的表达式,这样L就能算出来了。

61975c0332276.png

L=((arctan(x/z)180/π)πR)/180  简化下就是
L=arctan(x/z)R

ps:需要强调下的是这里我们n的取值范围是-90到90,我们的uv会被打成两段。
我们得到了弧长,下一步我们希望弧长是0-1之间的,方便贴图连续起来,我们知道圆的周长是2πR,那半圆的周长就是πR,那么综上我们实际u的采样范围是(-π/2)R到(π/2)R。我们直接映射下把这个区间映射到0-1。
我们已经找到u方向采样的数学模型了!速度照着公式连起来!ps:这里为了减少参数我直接将R默认为1了,然后重铺就靠后面的tile值来调整
619864fbb8663.png
这样水平接缝问题也解决了
6198657e176e8.png

hz4.gif

Cool!!!我们成功了,可以旋转,xz方向无拉伸!后面我们连上panner,加上noise,做个小测试。

hz1.gif



特别感谢WenWen大佬指正的BUG 感谢夜火大佬提供的材质优化方向





投币

参与人数 2AG币 +30 收起 理由
Various + 10
沉迷虚幻的歌 + 20 yyds

查看全部投币

32

你可能喜欢

熊猫超级shader 更新日期3-15

特效教程技术讨论

20833 50 88

坏熊猫 2021-08-01

熊猫超级后期材质 更新日期2022-2-8

特效教程技术讨论

9295 13 35

坏熊猫 2022-02-06

Dynamic Bone 动态骨骼插件

Unity3D资源下载

6377 4 3

坏熊猫 2021-07-03

VAT顶点动画教程

特效教程技术讨论

10343 22 39

救救孩子 2021-08-09

全部评论12

    席澳语
    这让我想起了大冲锋
    回复
    2023-4-10 10:13
    确定
    请你嚯饮料
    回复
    2021-12-22 11:22
    确定
    沐七柒
    这很可以
    回复
    2021-12-7 11:40
    确定
    saiyouyun
    太牛了
    回复
    2021-11-25 17:42
    确定
    VFX-Lee
    犀牛逼
    回复
    2021-11-24 16:54
    确定
    Z.S
    牛逼
    回复
    2021-11-24 09:16
    确定
    annapuppet
    牛逼牛逼
    回复
    2021-11-23 15:46
    确定
    绯雨
    熊猫yyd
    回复
    2021-11-23 11:36
    确定
    Nicklaus丶
    熊猫大佬牛B,又学到了
    回复
    2021-11-22 18:02
    确定
    AirYang
    还是虚幻简单  一个节点搞定   算法官方做好在节点里了
    回复
    2021-11-22 15:25
    确定
    坏熊猫
    回复
    AirYang
    求个节点名啊
    回复
    2021-11-22 15:33
    确定
    慎独
    回复
    AirYang
    同求!
    回复
    2021-11-22 17:07
    确定
    请你嚯饮料
    回复
    慎独
    也许他说的是ZWorldSpaceFlow
    回复
    2021-12-22 14:57
    确定
    请你嚯饮料
    回复
    请你嚯饮料
    CylindricalUVs
    回复
    2021-12-22 16:36
    确定
    AirYang
    回复
    坏熊猫
    BoundingBoxBased_0-1_UVW
    回复
    2022-7-28 15:28
    确定
    AirYang
    回复
    慎独
    BoundingBoxBased_0-1_UVW
    回复
    2022-7-28 15:28
    确定
    慎独
    这个牛逼了,我一直是加二套UV的
    回复
    2021-11-22 14:55
    确定
    新手上车吧
    伟神牛逼
    回复
    2021-11-19 20:13
    确定
客服中心 官方QQ群
快速回复 返回顶部 返回列表