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.和美术人员约定非常大的图片尽可能采用九宫格
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款功能强大的游戏制作引擎,它可以用来制作各种类型的游戏,包括手游。在Unity中,联机功能是非常重要的一部分,因为联机可以将多个玩家连接到同一个游戏世界中,让游戏变得更加有趣和有挑战性。 首先,在Unity中实现联机功能需要使用网络编程的知识,因此,你需要理解TCP/IP协议、网络数据传输等相关内容。然后,你需要用Unity中的UNET(Unity Networking)组件来构建联机功能。UNET是Unity自带的一个网络组件,它可以让你轻松地将游戏中的玩家连接到同一个服务器上。使用UNET,你可以创建主机和客户端,主机会将游戏状态同步到它所有的客户端上。 接下来,你需要设置玩家角色的同步方式。玩家角色有多种同步方式,例如平滑插值、插值、预测、快照等。你需要根据你的游戏特点来选择适合的同步方式。 最后,你需要处理数据同步的问题。在联机游戏中,多个玩家需要同时看到同一状态。所以需要对游戏的状态进行同步,以保证所有玩家看到的游戏状态都是一致的。例如,当一个玩家移动时,需要将其位置同步到其他玩家的客户端上。 总的来说,在Unity中实现联机功能需要先理解网络编程的知识,然后利用UNET组件构建联机实现。最后,需要通过适当的同步方式和数据同步来保证游戏的玩法和状态一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值