unity 手游资源优化

2024-09-07 15:48
文章标签 优化 资源 unity 手游

本文主要是介绍unity 手游资源优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 单位,比例统一

   在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例。统一单位为米。

2. 模型规范

 ⒈ 所有角色模型最好站立在原点。没有特定要求下,必须以物体对象中心为轴心。

 ⒉ 面数的控制。移动设备每个网格模型控制在300-1500个多边形将会达到比较好的效果。   而对于桌面平台,理论范围1500-4000。如果游戏中任意时刻内屏幕上出现了大量的角色,那么就应该降低每个角色的面数。比如,半条命2对于每个角色使用2500-5000个三角面。

正常单个物体控制在1000个面以下,整个屏幕应控制在7500个面以下。所有物体不超过20000个三角面。

 ⒊ 整理模型文件,仔细检查模型文件,尽量做到最大优化,看不到的地方不需要的面要删除,合并断开的顶点,移除孤立的顶点,注意模型的命名规范。模型给绑定之前必须做一次重置变换。

 ⒋ 可以复制的物体尽量复制。如果一个1000面的物体,烘焙好之后复制出去100个,那么他所消耗的资源基本和一个物体消耗的资源一样多。

3. 材质贴图规范

 ⒈ 我们目前使用的Unity3D软件作为仿真开发平台,该软件对模型的材质有一些特殊的要求,在我们使用的3dsMax中不是所有材质都被Unity3D软件所支持,只有standard(标准材质)和Multi/Sub-Objiect(多维/子物体材质)被Unity3D软件所支持。注:Multi/Sub-Objiect(多维/子物体材质)要注意里面的子材质必须为standard(标准材质)才能被支持。

⒉  Unity3D目前只支持Bitmap贴图类型,其它所有贴图类型均不支持。只支持DiffuseColor(漫反射)同self-Illumination(自发光,用来导出lightmap)贴图通道。 Self-Illumination(不透明)贴图通道在烘焙lightmap后,需要将此贴图通道channel设置为烘焙后的新channel,同时将生成的lightmap指向到self-Illumination。

3. 贴图文件格式和尺寸

  原始贴图不带通道的jpg,带通道的为32位tga或者 png,尺寸最大别超过2048,贴图文件尺寸须为2的N次方 (8、16、32、64、128、256、512、1024)最大贴图尺寸不能超过1024x1024,特殊情况下尺寸可在这些范围内做调整。

4. 贴图材质应用规则

⒈贴图不能为中文命名,不能有重名;

⒉材质球命名与物体名称一致,材质球的父子层级的命名必须一致;

⒊同种贴图必须使用一个材质球;

⒋除需要用双面材质表现的物体之外,其他物体不能使用双面材质;

⒌材质的ID和物体的ID号必须一致;

⒍若使用completemap烘焙,烘焙完毕后会自动产生一个shell材质,必须将shell材质变为standard标准材质,并且通道要一致,否则不能正确导出贴图;

⒎带Alpha通道的贴图存储为tga或者png格式,在命名是必须加_al以区分。

⒏模型需要通过通道处理时需要制作带有通道的纹理,在制作树的通道纹理是,最好将透明部分改为树的主色,这样在渲染是可以使有效边缘部分的颜色正确,通道纹理在程序渲染时占用的资源币同尺寸的普通纹理要多.通道纹理命名时应以_al结尾。

5. 模型烘焙及导出

   ⒈ 模型的烘焙方式有两种:一种是LightMap烘焙贴方式,这种烘焙贴图渲染出来的贴图只带有阴影信息,不包含基本纹理。具体应用于制作纹理较清晰的模型文件(如地形),原理是将模型的基本纹理贴图和LightMap阴影贴图两者进行叠加。优点是最终模型纹理比较楚,而且可以使用重复纹理贴图,节约纹理资源;烘焙后的模型可以直接导出FBX文件,不用修改贴图通道。缺点是LightingMap贴图不带有高光信息;

   ⒉ 另一种是CompleteMap烘焙方式,这种烘焙贴图方式的优点是渲染出来的贴图本身就带有基本纹理和光影信息,但缺点是没有细节纹理,且在近处时纹理比较模糊。

  ⒊烘焙贴图设置。

     在进行completemap烘焙方式设置时应注意:贴图通道和物体uv坐标通道必须为1通道,烘焙贴图文件存储为tga格式,背景要改为与贴图近似的颜色;

     lightingmap烘焙设置时,和completemap设置有些不同,贴图通道和物体uv坐标通道必须为3通道,烘焙时灯光的阴影方式为adv.raytraced 高级光线跟踪阴影,背景色要改为白色,可以避免黑边的情况。

    主要物件的贴图uv必须手动展开。

6. 模型绑定及动画

  1. 骨骼必须为IK、CAT、BIP三类,unity不认虚拟体动画,单个物体骨骼数量不超过60个。

  2. 动画帧率、帧数的控制,一般情况下为每秒10帧,一个动画尽量控制在1秒内完成。

  3. 角色蒙皮、动作调节规范详见---(动画规范流程表)。

  4. 导出动画,分开2个文件,导出没有动作的模型、骨骼,模型需要带有蒙皮信息。之后调节好做动画后导出的就是只有骨骼的fbx文件。

7. 模型导出

  ⒈ 将烘焙材质改为标准材质球,通道为1,自发光100%;

  ⒉ 所以物体名、材质球名、贴图名保持一致;

  ⒊ 合并顶点,清除场景,删除没有用的一切物件;

  ⒋ 清材质球,删除多余的材质球(不重要的贴图要缩小);

  ⒌ 按要求导出fbx(检查看是否要打组导出),导出fbx后,再重新导入max中查看一遍fbx的动画是否正确;

  ⒍ 根据验收表格对照文件是否正确;

8. 文件备份提交标准

  ⒈ 最终确认后的max文件分 角色模型、场景模型、道具模型带贴图存放到服务器相应的" 项目名/model/char" "项目名/model/scene"  "项目名/model/prop"文件夹里面。动画文件对应的存放至anim 文件夹中。

  ⒉ 导出给程序obj、fbx等格式文件统一存放至export文件夹下的子文件夹anim、model、prop

 9.  项目命名要求

  ⒈ 项目进入策划时,各部门统一为项目命好名称,服务器建立项目名称文件夹,制作人员本机制作时建立对应名称的项目文件夹。

  ⒉ 角色模型命名:项目名_角色名字,max文件中模型对象如果需要分开各部位时,应在此命名的基础上_部位,如角色头部命名为:项目名_角色名_head ,以此类推。对应的材质球、贴图都将命名一致。

  ⒊ 场景、道具命名:项目名_场景名称,max文件中对应的物体为项目名_场景名物体名,同类的比较多的情况下,命名为:项目名_场景名_物体名_01-----02……同类型的物体以数字类推方式命名。材质球、贴图对应物体名字。同类物体只需要给同一个材质球,同一贴图即可。

  ⒋ 带通道的贴图:要加_al后缀

  ⒌ 特效贴图以特效名称命名,贴图加入_vfx后缀。

 

---------------------------------------------------------------------------------------------------------------------

 

数字模型制作规范

本文提到的所有数字模型制作,全部是用3D MAX建立模型,即使是不同的驱动引擎,对模型的要求基本是相同的。当一个VR模型制作完成时,它所包含的基本内容包括场景尺寸、单位,模型归类塌陷、命名、节点编辑,纹理、坐标、纹理尺寸、纹理格式、材质球等必须是符合制作规范的。一个归类清晰、面数节省、制作规范的模型文件对于程序控制管理是十分必要的。

首先对制作流程作简单介绍:

素材采集-模型制作-贴图制作-场景塌陷、命名、展UV坐标-灯光渲染测试-场景烘培-场景调整导出

 

第一章  模型制作规范

1   在模型分工之前,必须确定模型定位标准。一般这个标准会是一个CAD底图。制作人员必须依照这个带有CAD底图的文件确定自己分工区域的模型位置,并且不得对这个标准文件进行任何修改。

导入到MAX里的CAD底图最好在(0,0,0)位置,以便制作人员的初始模型在零点附近。
   2   在没有特殊要求的情况下,单位为米(Meters),如所示。

3    删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。如Box底面、贴着墙壁物体的背面等。

4    保持模型面与面之间的距离推荐最小间距为当前场景最大尺度的二千分之一。例如:在制作室内场景时,物体的面与面之间距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm。如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。在建模初期一定要注意检查共面、漏面和反面的情况;

5   可以复制的物体尽量复制。如果一个1000个面的物体,烘焙好之后复制出去100个,那么他所消耗的资源,基本上和一个物体所消耗的资源一样多。

6    建模时最好采用Editable Poly面片建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用EditableMesh 在最终烘焙时可能会出现三角面的情况。如图所示。

 

 

 

7  模型的塌陷

当一栋建筑模型经过建模、贴纹理之后,然后就是将模型塌陷,这一步工作也是为了下一步烘焙做准备。所以在塌陷的时候要注意一些问题:

    (1)    按照“一建筑一物体”的原则塌陷,体量特别大或连体建筑可分塌为2-3个物体,但导出前要按建筑再塌成一个物体,城中村要按照院落塌陷。

   (2)    用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱;

   (3)    塌陷物体,按楼或者地块来塌陷,不要跨区域塌陷;

    (4)    按项目对名称的要求进行严格的标准的命名;

    (5)    所有物体的质心要归于中心,检查物体位置无误后锁定物体;

备注:所有物体不准出现超过20000三角面的情况,否则导出时出错。

8  模型命名  不能使用中文命名,必须使用英文命名,不然在英文系统里会出问题。地块建筑模型不允许出现重名,必须按规范命名。

 

9  树的种植方法

用十字交叉树或简模树。在种植树木的时候,要考虑到与周围建筑的关系,不能乱种树,要根据现状放置不同的树种、位置;重点建筑地块需种简模树,并在原地与之对应的种上十字片树(替换用);导出时模型树和与之对应的十字片树为单棵的,其它十字片树可塌一起,但面数不能超过1万。

10  模型的级别

也就是模型的精细程度,有时我们在建模的时候要根据建筑所处的具体位置,重要程度对该建筑进行判断是建成何种精度的仿真模型。可以将建筑分为五个等级。

其中,一级为最高等级,五级为最低等级。

单个物体的面数不要太大,毕竟是做虚拟现实,而不是制作单张效果图。单个物体面数要控制到8000个面以下。

11   镜像的物体需要修正

   用镜像复制的方法来创建新模型,需要加修改编辑器修正一下。

   第一步:需要选中镜像后的物体,然后进入Utilities面板中单击Reset XForm,然后单击Reset Selected;

   第二步:进入modfiy面板选取Normal命令,反转一下法线即可。

12   烘焙的物体黑缝解决对办法

   在烘焙的时候,如果图片不够大的时候,往往会在边缘产生黑缝。

处理小技巧 :  

   1)如果做鸟瞰楼体比较复杂可以把楼体合并成一个物体变成多重材质,然后对楼体进行整体完全烘焙;这样可以节省很多资源。2)对于建筑及地形,须检查模型的贴图材料平铺的比例,对于较远的地表(或者草地),可以考虑用一张有真实感的图来平铺,平铺次数少一些。对于远端的地面材料,如果平铺次数大了,真实感比较差。

 

 

第二章       材质贴图规范

1  材质和贴图类型

我们目前使用的是Unity3D软件作为仿真开发平台,该软件对模型的材质有一些特殊的要求,在我们使用的3dsMax中不是所有材质都被Unity3D软件所支持,只有下面几种材质是被Unity3D软件所支持。

 

Standard(标准材质)

默认的通用材质球。基本上目前所有的仿真系统都支持这种材质类型。

Multi/Sub-Object(多维/子物体材质)

将多个材质组合为一种复合式材质,分别指定给一个物体的不同次物体选择级别。要注意的是,在VR场景制作中,Multi/Sub-Object材质中的子材质一定要是Standard标准材质。否则不被unity3d支持。我们在制作完模型进行烘焙贴图前都必须将所有物体塌陷在一起,塌陷后的新物体就会自动产生一个新的Multi/Sub-Object多维/子物体材质。因此,这种材质类型在我们的仿真制作中经常使用。

2  贴图通道及贴图类型

Unity3D目前只支持Bitmap贴图类型,其它所有贴图类型均不支持。只支持Diffuse Color(漫反射)同self-Illumination(自发光,用来导出lightmap)贴图通道。

Self-Illumination(不透明)贴图通道在烘焙lightmap后,需要将此贴图通道额channel设置为烘焙后的新channel,同时将生成的lightmap指向到self-Illumination。

 

 3贴图的文件格式和尺寸

建筑的原始贴图不带通道的为JPG,带通道的为32位TGA,但最大别超过2048;贴图文件尺寸必须是2的N次方(8、16、32、64、128、256、512),最大贴图尺寸不能超过(1024×1024)。

在烘培时将纹理贴图存为TGA 格式。

 

4贴图和材质应用规则

   (1)    贴图不能以中文命名,不能有重名;

   (2)    材质球命名与物体名称一致;

   (3)    材质球的父子层级的命名必须一致;

   (4)    同种贴图必须使一个材质球;

   (5)    除需要用双面材质表现的物体之外,其他物体不能使用双面材质;

   (6)    材质球的ID号和物体的ID号必须一致。

   (7)    若使用CompleteMap烘焙,烘焙完毕后会自动产生一个Shell材质,必须将Shell材质变为Standard标准材质,并且通道要一致,否则不能正确导出贴图。

   (8)    带Alpha通道的贴图,在命名时必须加_al以区分。

5通道纹理应用规则

模型需要通过通道处理时需要制作带有通道的纹理。在制作树的通道纹理时,最好将透明部分改成树的主色,这样在渲染时可以使有效边缘部分的颜色正确。通道纹理在程序渲染时占用的资源比同尺寸普通纹理要多。通道纹理命名时应以-AL结尾。 

 

 

第三章       模型烘焙及导出

模型烘焙

1场景灯光

   (1)    渲染方式:采用Max自带的LightTracer光线追踪进行渲染。

   (2)    灯光效果控制:

该项目在烘焙前会给出固定的烘焙灯光,灯光的高度、角度、参数均不可调整,可以在顶视图中将灯光组平移到自己的区块,必须要用灯光合并场景然后烘焙。

 

2  烘焙贴图方式

建筑模型的烘焙方式有两种:一种是LightMap烘焙贴方式,这种烘焙贴图渲染出来的贴图只带有阴影信息,不包含基本纹理。具体应用于制作纹理较清晰的模型文件(如地形),原理是将模型的基本纹理贴图和LightMap阴影贴图两者进行叠加。优点是最终模型纹理比较楚,而且可以使用重复纹理贴图,节约纹理资源;烘焙后的模型可以直接导出FBX文件,不用修改贴图通道。缺点是LightingMap贴图不带有高光信息;

另一种是CompleteMap烘焙方式,这种烘焙贴图方式的优点是渲染出来的贴图本身就带有基本纹理和光影信息,但缺点是没有细节纹理,且在近处时纹理比较模糊。

3   烘焙贴图设置

①     CompleteMap烘焙方式

在进行CompleteMap烘焙设置时,应注意以下几点:

a)      贴图通道和物体UV坐标通道必须为1通道,见图所示;

 

b)     烘焙贴图文件存储格式为TGA格式;

c)      烘焙设置见图所示。

 

②     LightingMap烘焙方式

在进行LightingMap烘焙设置时,和CompleteMap设置有些地方不同:

a)      贴图通道和物体UV坐标通道必须为3通道,见图所示

b)     烘焙时灯光的阴方式为Adv.RayTraced阴影,见图所示;

 

c)      烘焙设置见图所示;

 

d)     用LightingMap烘焙时,背景色要改为白色,可避免有黑边的情况;而用CompleteMap烘培时,背景色要改为与贴图近似的颜色。

e)     在使用lightmap烘焙后,需要将材质改回Standard,然后将新生成的map拷贝到Standard的self-Illumination内,并设置正确的贴图通道。

4  贴图UV编辑

必须手动进行UV编辑。

模型导出

1、将烘培材质球改为标准材质球,通道为1,自发光100;

2、将所有物体名、材质球名、贴图名保持一致

3、合并顶点(大小要合适);

4、清除场景,除了主要的有用的物体外,删除一切物件;

5、清材质球,删除多余的材质球(不重要的贴图要缩小);

6、按要求导出fbx(检查看是否要打组导出);

 

--------------------------------------------------------------------------------------------------

模型面数要求

  • 武器面数:武器模型控制在150个三角面,187个顶点以内。贴图控制在1张,最大256*256,最好128*128。
  • 场景面数 场景(地形、建筑、其他装饰物)面数控制在10000面左右,贴图控制在最多2张512*512。
  • 主角面数 主角模型控制在900-1300个三角面(以最终导入unity3d中的三角面数量为准)。贴图控制在1张,最好256×256,最多512×512。
  • 小怪面数 小怪模型控制在600-900个三角面(以最终导入unity3d中的三角面数量为准)。贴图控制在1张,最大256×256。 
    注意:所有单个模型不准出现超过20000三角面的情况,否则导出时可能会出错。 

贴图材质应用规则

  • 1.贴图不能为中文命名,不能有重名;
  • 2.材质球命名与物体名称一致,材质球的父子层级的命名必须一致;
  • 3.同种贴图必须使用一个材质球;
  • 4.除需要用双面材质表现的物体之外,其他物体不能使用双面材质;
  • 5.材质的ID和物体的ID号必须一致;
  • 6.若使用completemap烘焙,烘焙完毕后会自动产生一个shell材质,必须将shell材质变为standard标准材质,并且通道要一致,否则不能正确导出贴图;
  • 7.带Alpha通道的贴图存储为tga或者png格式,在命名是必须加_al以区分
  • 8.模型需要通过通道处理时需要制作带有通道的纹理,在制作树的通道纹理是,最好将透明部分改为树的主色,这样在渲染是可以使有效边缘部分的颜色正确,通道纹理在程序渲染时占用的资源币同尺寸的普通纹理要多.通道纹理命名时应以_al结尾。
  • 9.制作的贴图大小的长宽是2的幂次方,及时有空白部分,同事适用在Android和ios的制作要求
  • 10.场景使用lightMap,而不是实时光照
  • 11.UI图片不需要使用MipMap;
  • 12.和美术人员约定非常大的图片尽可能采用九宫格

这篇关于unity 手游资源优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145487

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

49个权威的网上学习资源网站

艺术与音乐 Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。 Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。 Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。 数学,数据科学与工程 Codecad

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

MySQL 数据优化

MySQL 数据优化的指南 MySQL 数据库优化是一个复杂且重要的过程,它直接影响到系统的性能、可靠性和可扩展性。在处理大量数据或高并发请求时,数据库的优化尤为关键。通过合理的数据库设计、索引使用、查询优化和硬件调优,可以大幅提高 MySQL 的运行效率。本文将从几个主要方面详细介绍 MySQL 的优化技巧,帮助你在实际应用中提升数据库性能。 一、数据库设计优化 1. 数据库的规范化与反规