# 虚幻4渲染编程(程序化纹理篇)【第三卷:Dynamic Texture Mask】 简介: 常常会用到一些Dynamic Texture Mask来配合程序制作各种效果,比如我要动态遮蔽贴图的某个部分,这些算法都将成为日后做各种复杂效果的基础。下面就这个问题来做专门的研究。 ------ ## **【1】**横向换行遮蔽贴图的某个部位 ![img](DynamicTextureMask.assets/v2-58c8cc6dd5d4088f080a6767b7a74cf5_b.jpg) 代码如下 ![img](DynamicTextureMask.assets/v2-0070b435a21b2f226a721deeedcb0083_hd.jpg) CustomNode种的代码: ![img](DynamicTextureMask.assets/v2-da8604325638eebc5b0fc9b9755599a6_hd.jpg) 这个东西很常用,可以动态遮蔽贴图的某个部分对于程序控制Tile贴图的某块显示。 首先把UV空间分为若干格,上面的示例种我分了8X8格,然后用n*y+x函数填充每个格子中的值,这样就能得到从左往右递增换行的数值分布 ![img](DynamicTextureMask.assets/v2-aa7fc5f2f7c9c39ba076437a26bb3f8a_hd.jpg) 最后用Step算出Mask即可。 如果是想做单纯的这种UI动画只需要把格子分细一点就可以感觉连续了。 ------ ## **【2】**横向来回乒乓换行遮蔽贴图的某个部位 ![img](DynamicTextureMask.assets/v2-5cf4bec59e070bb831db6ee848ba675a_b.jpg) 节点如下: ![img](DynamicTextureMask.assets/v2-0a29908d61da0a340182939f08266534_hd.jpg) 需要注意的是材质编辑器的sin和cos的周期不是2PI,所以这里我直接用CustomNode写了个sin(x) 这里主要是要算出UV的乒乓交错即可 ![img](DynamicTextureMask.assets/v2-7e0b567eed285501d7a1585fd7c9c188_hd.jpg) ![img](DynamicTextureMask.assets/v2-170f5390258adf47f4090901cb3a3fa5_hd.jpg) ------ ## **【3】特殊朝向的区块遮蔽** 有时候想要一些特殊朝向的区块遮蔽,这时候如果还用纯公式算的话计算量就太大了,所以可以考虑预生成贴图的方式 ![img](DynamicTextureMask.assets/v2-f0ac0c9348ab9b8fca0d6acfc8ad75de_hd.jpg) 比如螺旋方式的话可以做一张螺旋型的IndexTexture然后直接查询即可按照我们设定的方式进行遮蔽了。 ------ Enjoy it