《Unity3D高级编程之进阶主程》第五章,3D模型与动画(一) - 美术资源的规范

3D模型大小,面数,贴图大小,骨骼数量在游戏中的规范。

为什么说资源的规范在项目中是极其重要的?

看到过有很多项目都没有重视资源规范,他们奢求高的运行效率,却不懂资源的规范是运行效率的前提。

有的游戏项目,一个人物模型就有几万个面,一个建筑就有几十万个面,不堪入目。

贴图也有很糟糕的,到处都是1024和2048大小的贴图。骨骼数量有的甚至到了几百。在这样恶劣的资源环境情况下,项目的运行效率怎么可能高。

资源的好坏直接导致了项目的好坏,模型太大,面数太多,贴图太大,会导致包体过大,骨骼数量太多,导致CPU在动画上消耗过多。

资源过大过重,还会导致CPU消耗在资源加载上面的时间过多过长,导致画面帧率下降,卡顿严重等问题。

===

我们来简单设想下就能明白这个道理,CPU加载一个文件要花去多少时间呢,打个比方,加载1MB要0.01秒,卸载要0.005秒,那么100MB的加载卸载就要1.5秒,一个项目在10秒内要加载卸载300MB资源会发生什么,你的卡顿时间会达到4.5秒,将近一半的时间在画面卡住状态。

假如这个项目是手机游戏项目,在这么恶劣的情况下发布出去,将会带来大量差评。花钱打广告去购买流量也是浪费钱,因为可玩性实在太差,没有玩家愿意耐下心来玩你的卡顿感这么糟糕的游戏。

这里只是打个比方,并没有去验证确切的数据,但为了让大家能够引起足够的重视,我觉得夸大点也无妨。

对于美术资源来说,模型面数不是越多越好,越细越好,而是在一定数量的限制下,能做到最大限度的美化。同样贴图也不是越大越好,精度越高越好,而是在一定大小的限制下,做到最大限度的不失真。在骨骼动画中也是同样的道理,优化骨骼数量且任然流畅。

资源规范能有效的限制美术人员在制作美术资源时无度的扩张。

如何规范3D美术资源?

关于模型的大小,一般都会按正常的尺寸进行制作,比如规定1个单位空间就是1米。也有例外的时候,不过也是按这个放大缩小的,比如1个单位空间为1厘米,或10米等。

如何确定美术资源规范的大小。

1, 根据运用的场景而不同。

像汤姆猫这种强调单一主角的场景,主要资源全部投入到主角一个人的,对主角进行精细化的雕琢是很有必要的。

这种场景的人物模型做到1万面也不为过,主角的骨骼也可以做得很精细,骨骼数量可以达到50-100个,贴图大小也可以在512 x 512左右,如果需要 1024 x 1024 的贴图我觉得问题也不是很大,只是如果需求中有换装时,需要考虑下包体大小。

如果是第三人称视角的RPG游戏,由于视角与角色的距离有限,同时看到的场景范围有限,可以使用动态场景地图加载的方式控制内存使用量,主要是同屏单位数量会决定模型面数。

比如人模模型面数控制在3000-4000面,骨骼数量控制在20-30个,至于建筑模型面数因为大小差异太多无法统一,不过我们可以用整体面数统计法来规范资源。

贴图完全可以控制在 256 x 256 以下,比如主贴图为 256 x 256,副贴图为 128 x 128。

如果做的是《我的世界》,《魔兽世界》这种超大型的游戏场景,可以从高空俯瞰整个场景的这种,规范的太小会失真,规范的太大就会消耗太多内存和CPU的,这已经不是规范资源能解决的问题了,而是用其他方法手段,比如LOD,只要处理好LOD就能把渲染压力和渲染质量平衡好。后面章节中会具体介绍LOD在优化中的运用。

2, 使用反推计算来得出规范。

对于一些模型物体大小差异很多大的,无法统一模型与贴图面数的,我们可以用全场景总面数来控制。

比如地形场景控制在6万面左右,然后开始部署,地形模型总共3万面左右,数量多的小件模型在100面以下平均50面,中型建筑在500-1500面平均下1000面好了,大型建筑在2000-5000面以下平均3000面。

这样除了地形模型,剩下的还有3万面,小件模型可以放100件也就是5千面,中型建筑可以放10件1万面,大型建筑5件,1万面,总共3万面差不多满足了6万面左右的需求。

贴图大小同样按照这种方法进行规范,比如说总体贴图的大小不得超过100MB,推到出去平均有多少种小件模型在场景内,平均有多少种中型模型在场景内,平均有多少种大型建筑在场景内。

比如小件平均有30种,中型模型有20种,大型模型有10种,那么小件每个贴图不得超过0.3MB,中型模型每个贴图不得超过1MB,大型模型每个贴图不得超过2MB。

贴图的规范也可以用大小来进行规范,比如场景的总体贴图大小设置为不得超过 20张 1024 x 1024,那么在小件平均30种,中型模型平均20种,大型模型平均10种的情况下,我们可以规定为小件贴图大小在128 x 128以下,中型模型贴图大小在256 x 256以下,大型模型贴图大小在 512 x 512 以下。

从上面阐述的反推计算方法来做,一整个地形场景的模型规范就很容易得出来了。

3, 实际测试。

无论什么方法,都敌不过实际测试。如果可以在项目前加入实际的压力测试环节,或者在项目进行中加入渲染压力测试的环境,会更有利于对美术资源的规范。

专门有人做渲染压力的实际测试是很奢侈的,因为需要专门派遣一个人来完成这件事情,对于现在情况下,人才缺乏而且成本高的问题,一般很少会有项目能有这实力专门派人去做各种渲染测试。

所以我们只能边做边测,遇到具体问题寻找自己的答案,比如寻找是否有情况特别恶劣的模型,整体面数是否大大超出预想等,然后再提出自己的方案来个个击破。

我们可以通过参考其他同类游戏的资源制作规范,比如解包他们的游戏包体,对资源进行解密解压等。也可以从他们具体游戏中观察如何应对面数和贴图问题。毕竟网络信息的开放的,我们可以充分利用起来。

感谢您的耐心阅读

Thanks for your reading

  • 版权申明

    本文为博主原创文章,未经允许不得转载:

    《Unity3D高级编程之进阶主程》第五章,3D模型与动画(一) - 美术资源的规范

    Copyright attention

    Please don't reprint without authorize.

  • 微信公众号