Unreal 确实是自带了一些 Texture2DArray 的代码,但是貌似功能是不全的。
首先是你无法创建出Texture2DArray对象,引擎,作如下修改后可以创建对象。
操作如下:
创建的对象也可以添加多张贴图来生成效果:
但是至此没有找到怎么使用这个东西的任何文档说明。
第三方修改,主要有两个
第一个是Unreal请求的合并的
https://github.com/EpicGames/UnrealEngine/pull/5767
第二个是独立的第三方插件
https://github.com/fracturedbyte/UE4-T2DA
第二个有完整的使用教程
但是其实其4.24版本官方已经包含了相关的代码,只是设置了默认关闭的代码,而且有BUG,才导致无法使用。
这边参考了Epic的BUG修复提交,删掉了 r.AllowTexture2DArrayCreation 所有控制的内容,默认全部启用。
Texture Array 使用范例
-
在Unreal Content Browser里面可以直接创建Texture2DArray对象
-
双击打开新建的对象,设置纹理数组包含哪些纹理
这边我们还是以一个建筑举例,根据他用到的三张贴图我们来制作一个纹理数组,那么其设置如下:
-
材质球使用纹理数组
纹理数组可以直接拖进材质球,就会生成一个和纹理一样的Texture Sample节点。
但是要注意的是我们没法只指定UV就使用这个节点,需要指定纹理数组中纹理所在的数组位置。下面是一个例子,在设定UV的时候,需要用Append Vector来加上数组位置,数组位置的标识从0开始。
这样我们就可以通过控制Param的值来获取数组中的不同的纹理对象。在这个例子里面,模型没有分UV而是不同的Static Mesh组成的,因此我们派生了两个材质采用不同的参数来获取纹理数组中不同的材质,最终使用到这个房子上。
房子的表现效果如下:
地形使用测试
目前存在严重的BUG,不支持mipmap的使用
在参数里面如果不使用Mipmap,可以显示但是贴图效果在远处噪点明显:
如果使用了Mipmap,近处的效果就没有了,远处的倒是对的。