欢迎光临散文网 会员登陆 & 注册

UE4项目美术架构

2023-02-20 14:52 作者:这就很离谱丶  | 我要投稿

目录

一、目录层级和命名规则
二、贴图规范
三、材质、材质实例及材质函数
四、模型和动画

一、目录层级和命名规则

对于UE4项目来说,模型和贴图的来源一般有两种方式:外包资源(无版权纠纷的网站上的资源或者UE4商城的资源也暂时划分成此类)或者内部制作。一般来说仅当全部资源为内部制作且材质数量较少时,采用根目录下的单独文件保存材质和贴图

如果数量比较少,甚至可以不建立文件夹

否则尽量将材质和贴图保存在对应资源模型的文件夹下。

其次是命名规范,项目开发之初,应该确定好本项目的命名规范,包括美术资源(也可以参考官方示例或其他开发者,比如wiki.unrealengine.com/A)。
当需要搜索某种资源时,只要输入相应的前缀和后缀关键字,就可以轻松找到(推荐使用Ctrl+P组合键快速搜索)。

二、贴图规范

1.贴图的大小必须是二的整数幂

这是很重要的一点,也十分简单,但仍有很多美术不在意这一点。举个简单的例子,比如我截取了两张图,一张127*256,一张128*256,分别导入引擎。

注意观察两张图的导入设置(尤其是红圈部分)

UE是一个很智能的引擎,它几乎能清楚地了解你这张贴图是想要做什么的,并自动把对应的设置替你勾选好(所以图里的不同部分,是UE自己识别的结果)。我们都知道世界场景里的物体在渲染时,会依据离摄像机的距离不同而从不同mip等级的贴图上采样。所以当贴图的大小是2的整数次幂时,UE就会自动帮你生成一组mip贴图(数量取决于贴图的边能被2整除到何种程度)。但如果你的贴图由于边长原因不能被自动处理,它将始终使用原贴图的大小,这在一些时候将会给性能带来致命影响。

不仅如此,如果边长不能被2整除,LOD Bias也无法方便地使用,不能方便地针对多平台进行贴图优化等环节。

2.独立Alpha还是RGBA?

有两种导入Alpha通道(下文称A)的方式,一种是把A和RGB放进一张贴图中,一种是分开导入。第一种更方便,也好写shader,第二种一定程度来说更规范,也可以避免一些显示问题(比如一些比较细的草或者钢丝网,如果使用第一种方式,当摄像头拉远之后会消失,需要适当修改一下A通道)。两种方式都可以,但一定要在项目之初就确定好导入方式,不然可能会导致shader的重用性大大降低。

3.贴图的明度

为了更真实的渲染效果,避免贴图过度饱和,避免贴图过暗(经验值明度50以上)。

4.合理设置贴图属性

虽然UE会自动识别绝大多数贴图并自动设置,但仍要在导入时仔细检查,然后根据实际用途设置好贴图的各个属性。比如用于UI的图就设置组别UI、永不流送等(不然可能进入游戏时看到模糊的UI或者看不到UI)。具体应该如何设置可以参照官方文档,这里不作展开。

三、材质、材质实例及材质函数

1.规范建立母材质和材质函数

有些常用的母材质和材质函数可以放置于一个特殊文件夹,供所有shader编写者共用,避免重复造轮子并增强shader可读性。比如常见的UV坐标变换函数

这个函数就可以作为一个公用材质函数

2.合理使用材质实例

材质实例不仅可以增强可维护性,还可以优化性能。几乎在任何情况下,都使用材质实例直接赋予模型。

3.材质内参数的命名

材质内参数的命名也需遵循规则,比如底色贴图都叫BaseColor,法线贴图都叫Normal.....这样当进行代码操作时,可以方便地使用copy parameter函数。

四、模型和动画

1.LOD

绝大多数项目,模型应做好LOD。使用UE自带的工具去制作也很方便。

2.尽量减少动画的数据

可以用蒙太奇实现的动作,尽量不要通过源文件来完成(可以减少文件数量,方便管理,小项目可以忽略此条建议)。

除了上述几条之外,还应根据发布平台和目标效果提前确定好贴图精度和场景面数等,减少后期优化压力。


UE4项目美术架构的评论 (共 条)

分享到微博请遵守国家法律