unity打开文件选择框很多错误

后使用快捷导航没有帐号?
只需一步,快速开始
&加载中...
查看: 4098|回复: 66
游戏动作师使用Unity3D遇到过的所有问题
TA的其他好贴
马上注册,加入CGJOY,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
文/拉撒路 游客,如果您要查看本帖隐藏内容请 升级到三星以上高级会员可
  到现在我大概用了四年多u3d,期间掉过无数坑,遇到过各种问题,2015年底的时候想着应该将其整理出来,方便大家查阅,于是有了这篇东西。但是实际整理完发现,有些问题我已经想不起了,遇到过的问题肯定不止这么多。希望各位同行能把遇到的问题发给我,解决了的、没解决的都可以,大家互相交流一起进步。我会把所有问题全部整理好在共享给大家,自己能提高的同时也算给行业做点小贡献。我的微信号:othniel-aslan。
  导出相关
0.jpg (169.14 KB, 下载次数: 17)
12:57 上传
图为max导出fbx界面,各版本界面略有不同功能相近,版面所限请放大查看
  在游戏美术工作流中,模型和动画的导出都是由动画师负责,一份可用的动画文件,必须同时包含模型和动画文件各一个。
  模型导出时应注意勾选蒙皮和几何变形,不要勾选贴图文件,导出模型后单独将贴图文件手动放在模型文件夹下。避免重复导出替换时出错。动画的导出则比较常规,需要注意的是很多人喜欢使用烘焙动画,其实并不好用,容易出现万向轴的问题且不说,还给一些中间帧动画的修改带来难度。具体内容见模型篇。
  挂点相关
1.jpg (271.29 KB, 下载次数: 16)
12:57 上传
图为常规挂点所需点位,实际根据项目需求增减。
  所挂dummy点需作为子级链接到对应骨骼,三轴对齐,各个模型间同一个点位置要统一。
  武器换手相关
  换手的三种方式 1.缩放隐藏换手&&2.link链接约束换手&&3.prop骨骼换手
  1.缩放隐藏换手 即 在需要有武器的位置都放置一把武器(如左手、右手、后背、空中),将当前不需要显示的武器缩放至极小不可见,需要显示时再放大显示。优点为无需特别支持,引擎通用,非常简单。缺点为略麻烦,做动画之前就要想好武器需复制几份分别在哪,动画缩放容易出现中间帧过度不顺畅。
2.jpg (42.36 KB, 下载次数: 16)
12:57 上传
3.jpg (30.94 KB, 下载次数: 16)
12:57 上传
4.jpg (29.9 KB, 下载次数: 16)
12:57 上传
  2.link链接约束换手 即 使用link约束动画实现武器换手 其最大优点就是大部分动画师非常熟悉,运用起来得心应手。缺点也很明显,引擎不能识别link动画,需要塌陷或导出时烘焙动画才可被引擎识别,而一旦出现万向轴问题,改起来会比较麻烦。
5.jpg (33.76 KB, 下载次数: 16)
12:57 上传
6.jpg (4.34 KB, 下载次数: 16)
12:57 上传
7.jpg (13.48 KB, 下载次数: 16)
12:57 上传
  3. prop骨骼换手 即max自带的武器道具骨骼 优点是设定即为武器道具骨骼,能解决武器所需一切需求,并且被 5.0以后的版本支持,直接导出即可。缺点是unity3D 5.0之前的版本不支持,需要烘焙动画。
8.jpg (15.59 KB, 下载次数: 16)
12:57 上传
9.jpg (9.9 KB, 下载次数: 16)
12:57 上传
  表情动画相关
  Unity支持的MAX表情动画已经确认可行的有两种 一种就是 面部骨骼绑定表情动画 另一种是morpher控制器表情动画。表情动画常见于舞蹈类、大型MMO类及单机类等游戏中,前两种重视社交和展示所以对表情有需求,后一种常见于精品游戏中,各方面品质相对都比较高所以对表情也有要求。
  面部骨骼绑定动画 最常见的面部骨骼就是张嘴动画,只需一根下颚骨骼即可解决,在很多有坐骑或怪兽的项目中使用,是广义上的表情动画。较为复杂的表情动画用骨骼绑定来做并不划算,一来架设骨骼比较麻烦,具体K动画的时候也相对繁琐(有人用线性IK来制作表情,其实道理与骨骼绑定并无二致,只是调动画的时候有联动关系相对简单些);二是骨骼过多带来的运算量也比较大,会比较占用资源。
10.jpg (89.66 KB, 下载次数: 16)
12:57 上传
11.jpg (89.84 KB, 下载次数: 16)
12:57 上传
  morpher控制器表情动画 优点是占用资源相对较小,动画可以做到比较精细,制作流程也相对简单。缺点是动画师不一定会调模型表情,前期过程相对麻烦(被拾取的表情头不能镜像、不能在统一个被拾取脸上左右同时调表情),并且有比较多的动作师从来没接触过morpher学习成本也相对较高。
  这里解释下morpher的原理 将一个角色的面部模型复制出多份,每份分别承担表情的一个局部动作,如微笑至少需要左嘴角上翘、右嘴角上翘、左眼微闭、右眼微闭四份。然后通过morpher控制器拾取这些表情,即可通过控制morpher的数值来调节表情动画。
12.jpg (87.76 KB, 下载次数: 16)
12:57 上传
13.jpg (13.61 KB, 下载次数: 16)
12:57 上传
(以上表情为鄙人随手乱调作为配图使用,略丑勿怪)
  文件压缩相关
  由于Fbx导出采样原则(即我们通常所说的满帧导出)所致,通常一段动画导出后的容量都会比较大,常见的压缩方式只有一种,即使用unity自带的动画压缩。这里再额外介绍两种非常规的压缩方法以应不时之需。
  Unity自带的动画压缩 选项有三种分别是关闭压缩 减少关键帧 减少关键帧并压缩文件。&&1.关闭即为不进行压缩保持导出时的状态。2.减少关键帧 即unity会检查相邻两帧之间移动旋转缩放的阈值,当这个值小于规定数值时就删掉其中一帧。3.减少关键帧并压缩文件 除了2中所描述的内容还会降动画文件进行打包压缩,使其减少占用硬盘容量,但对内存容量并无影响。
  Rotation error、Position error、Scale error三个值是上文“减少关键帧”内容中所提到的阈值,这个值越大被删除的帧就越多,动画文件相对就越小,同时动画质量相对也就越差。
  当动画压缩过于严重时,一些动作幅度较小的动画将会严重失真,如待机动画在压缩严重时腿部将无法站立于地面,而是随着质心摇摆。产生此类问题,只需将该动画的压缩阈值略作调整即可,如果遇特殊情况调整阈值无效可尝试后面的方法。
14.jpg (16.45 KB, 下载次数: 16)
12:57 上传
15.jpg (11.32 KB, 下载次数: 16)
12:57 上传
  Max中导出时进行压缩 在max的导出面板也有减少关键帧的选项,其工作原理也与unity相同,只是max作为专业的动画制作软件,他的阈值允许的精度更高可以到小数点后面很多位。而且作为美术软件相信他对动画关键帧的删减也更专业。但缺点也很明显,他不能实时预览。当我们设定一个阈值之后,没有办法实时查看压缩后的效果,难保压缩后的文件没有错误,不适用于处理大量的文件。当unity无法处理某个动画时可以用max尝试。
16.jpg (22.29 KB, 下载次数: 16)
12:57 上传
  编辑fbx动画 这种是非常规的办法了,我也是听人说没试过。方法是 在max中导出fbx之后,使用可以编辑fbx的软件(如mortion builder),对动画进行删帧。这个办法的好处显而易见,由于是动画师手工删除,既能保证动画的质量又能保证压缩到最小。缺点也很明显,工作量大浪费时间,如果不是非常重要的角色出现解决不了的问题,不建议使用这种方式。
  新旧骨骼系统相关
  Unity在4.0系统增加了新的动画系统,目前unity动画类型下拉菜单中共有四个选项,分别是None、Legacy、Generic以及Humanoid。其中G和H为4.0版本新增的内容,L是老版本的动画系统,none则是不使用动画。
17.jpg (6.56 KB, 下载次数: 16)
12:57 上传
  Legacy 是我目前使用最多的动画系统,在我看来他已经满足一个项目的绝大部分需求,而且因为最基础所以也最易扩展,需要一些额外功能时也方便修改追加。
  Generic 与legacy相比,generic可以使用新系统自带的状态机,并且自带可编辑的动画融合系统,然而在我看来这都没什么用。如果generic不与humanoid配合使用,其功能与legacy并无二致,反而因为系统并不成熟更容易出现未知错误。当然,也可能是有其他功能我并未得知,如有遗漏还望指正。
18.jpg (18.56 KB, 下载次数: 16)
12:57 上传
19.jpg (16.18 KB, 下载次数: 16)
12:57 上传
  Humanoid 字面上理解即为人型骨骼系统,其最显著的特点是可以将max的骨骼转化为unity的骨骼,并且会生成一份avatar,将avatar指定给不同的角色模型。即可无视高矮胖瘦的体型差异将同一个动画分配给每个角色,简单来说就是可以实现动画的通用。
20.jpg (10.32 KB, 下载次数: 16)
12:57 上传
21.jpg (7.37 KB, 下载次数: 16)
12:57 上传
  这里并没有讲每个动画系统的优劣,因为动画系统优劣的评判并不是单一独立的,理论上每个动画系统都能解决问题。具体要选择哪个系统,要看游戏的类型、打包方式,举例来说,如果是像三国无双系列这种,同一个角色换了武器就会换一套动作,每件武器都有对应的动画,那显然是要用humanoid这种可以无视体型的通用骨骼;又比如角色间不需要共用动画,并且每个角色程序都是单独打包,那最好还是用legacy系统,简单省事。甚至在同一款游戏里也可以主角单独打包使用legacy骨骼,其他怪物使用humanoid骨骼共用动画,以实现资源的最优化。
  常见问题与小技巧
  1.单帧动画无效 在unity中至少要两个关键帧才能被认定为是一段动画,如果某根骨骼只有一个关键帧能不能读取这个关键帧则比较看缘分,有时候读得出有时候读不出。
  注:另外要注意的是,同一个骨骼的两个动画,如果A动画中该骨骼存在两个以上的关键帧,而B动画只有一个关键帧,当播完A继续播B的时候,该骨骼则会保持A动画的最厚一帧状态。同理如果B动画该骨骼没有帧,也会保持A动画最后一帧。
  2.超远位置出现关键帧 一般常见于导bip动作文件时bone骨骼或dummy点上,在负几百万帧的位置出现一个孤立的帧,具体是什么原因目前仍不清楚。该问题在max中比较不容易被发现,导入到unity时动画无法读取,曲线面板不显示任何关键帧。Max导出动画时虽有删除孤立帧的选项,但经测试无法解决该问题,一般只能打开曲线面板找到该帧删除之。这里要特别强调一下,因为其位置非常远,最好逐一选择骨骼删除,框选所有骨骼一起删的话,极容易导致max崩溃。
  3.层动画问题 常见的有两种,导出时如果动画层没有塌陷,则unity只能识别当前层所记录的动画,基本是百分之百出错的,回到max塌陷即可。另外一个是max自身的问题,当某个骨骼使用了select IK object的时候,加层是无效的,必须点击空白处清空掉拾取的IK object。
22.jpg (13.13 KB, 下载次数: 16)
12:57 上传
23.jpg (11.04 KB, 下载次数: 16)
12:57 上传
  4.摄像机动画 理论上来说,max里的摄像机动画unity是不识别的,但实际上导出的摄像机在unity中会默认作为一个gameobject来使用。这样只要在这个gameobject下面挂载一个unity的摄像机,并把坐标归零即可。这里说个小技巧,由于单位的原因,max的摄像机动画进入到unity中可能会遇到比例的问题,我们可以在max中创建一个dummy点,坐标归零,把摄像机作为子级链接给dummy,然后再调摄像机动画。这样进入unity的时候,我们只要吧dummy归零,缩放它的尺寸就可以调整比例。
  5.Unity动画曲线&&unity曲线面板提供了一些基础功能,但是却连复制帧这种常用的功能都没有,我的解决办法是将需要复制的帧拖动至动画的末尾,然后再尾帧之外打个关键帧,这样即可复制出一样的帧,之后再把帧拖到适当的位置即可(下图我复制了第二帧)
24.jpg (8.66 KB, 下载次数: 15)
12:57 上传
25.jpg (8.29 KB, 下载次数: 17)
12:57 上传
膜拜无止境
如何勾引别人关注你?
膜拜路大神,收下我膝盖。。。
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
感谢分享{:8_317:}
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
感谢楼主分享
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
太感谢楼主了,说的太详细了。
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
啥也不说了,楼主就是给力!
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
资源甚好,且阅且珍惜!
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
看阿奎那看看看卡卡
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
回复了看一下
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
上海总部地址:联航路
Powered by努力加载中,稍等...
暂无新消息
努力加载中,稍等...
已无更多消息...
这些人最近关注了你
努力加载中,稍等...
已无更多消息
努力加载中,稍等...
已无更多消息
& 错误的导入设置正在杀死你的Unity游戏 (一)
Wrong Import Settings are Killing Your Unity Game (part 1)
征集热心朋友翻译文章,奖励规则:每100汉字奖励10QB,30天内互动奖励0 - 50QB.
翻译请求:申请翻译 交稿
该文章来自用户转载
Wrong Import Settings are Killing Your Unity Game (part 1), There are many things that may go wrong with your game development. Your models may have too much triangles than your target platform can handle, your algorithms may be too expensive for your CPU, and also you may be using too many materials so. These are difficult issues, and you as a game developer should always remember to keep a good balance between visuals and performance. Yet, there are some things so simple that we often forget about their existence, but these can have a serious impact on your game performance.Texture Import SettingsWhen you’re adding a texture into your project, the Unity works magic with it – the texture is converted to a suitable format based on current texture import settings. For most cases default settings will be good enough, but the Unity cannot tell if something looks good enough for the player so it cannot change it without your knowledge. It’s where you step in.To access Texture Import Settings just select one or more textures that you want to change. Your inspector will look more or less like this:There are 3 main things that you should keep an eye out.Texture TypeTexture Type is a way to tell Unity what this texture will be used for. All this options besides Advanced will adjust your texture internal settings to be optimal as possible for the selected purpose. Note that texture of type Texture is a simple diffuse texture used in 3D space and for 3D game should be used the most. Types descriptions can be found in the .The risk: Setting the wrong texture type may be not noticeable at first and you will get a performance loss. Some types are required for shaders to work correctly (like Normal map type must be set for a texture that will be used for bump mapping).SizeThis is where you can decide how big your texture should be and how it should be stored in the device memory. Noticed that there’s a Max Size instead of Size? This is simply because you can reduce all the textures resolution for your game in Also setting the 2048 as Max Size won’t guarantee that this texture will be of that size even if Quality Settings are set to the highest. The texture resolution will be lower if your original texture file is not big enough. Knowing that, it is a good practice to prepare textures bigger than you need them to be, because you can always scale them down.The Risk: Some models may be small on screen and those models’ textures can have large resolutions. You can identify these objects by setting your Scene shading to Mipmaps:FormatThe texture Format is another thing that may be something confusing.When your Texture Type is set to anything else than Advanced you will have 4 options.Compressed – It trades a little of GPU power for a much lower texture size. Compressed option will use the most suitable compressing algorithm for your target platforms.16 bits – Saves the texture without a compression but it is using 16 bit color palette. Good for textures with small amount of colors.Truecolor – Saves the texture using uncompressed 32 bit color palette. Looks great, but large
texture will require almost 17 megs of memory.Crunched – Compressed using compression format suitable for the GPU and then compressed again using compression format that can be handled only by the CPU.
Good for downloadable asset bundles.As you can see, you’re trading here texture size for texture quality. My advice is to always set the format as Compressed until you will see that something is not right with the textures in your game.There’s one more Texture Type option that we haven’t described. If you set your Texture Type to advanced, you will gain access to many more texture formats including more compression methods. Be aware of that not all compression formats may be supported by your target platform (e.g. many Android devices have different texture compression formats support, but all should support ETC).The Risk: Compressed textures may look ugly for some kind of textures, but textures set to 16 bits or Truecolor may take up too much space. You can find textures that are taking up to much space looking at
after building your game.You can learn more about texture compression formats .VerifyingThe last thing you want to do is to verify your texture import information. Here at the bottom of your texture preview you will learn about:Used texture sizeUsed compression formatResult texture sizeKeep in mind that sometimes you will need to build your game before you will see it’s target size.Side note: You may be wondering why textures sizes are power-of-two numbers. If you’re curious why, please read .
错误的导入设置正在杀死你的Unity游戏 (一)
版权所有,禁止匿名转载;禁止商业使用;禁止个人使用。
译者:张大伟(卡卡是我)
审校:崔国军(飞扬971)在你的游戏开发过程中,有很多东西都有可能会出错。比如你的模型可能有太多的三角形而超出了你的目标平台可以处理的能力、你选择的算法可能对于你的CPU来说计算量太大了或者你可能使用了太多材质以至于批次合并渲染没有办法有效地工作。这些都是棘手的问题,而你作为一个游戏开发者应该永远记住,要保持视觉效果和性能之间的良好平衡。然而,有一些事情是如此的简单,我们会经常忘记它们的存在,但是这些简单的事情可以对你的游戏性能产生严重的影响。纹理的导入设置当你添加一个纹理到你的项目的时候,Unity在背后做了很多魔术般的工作-它会把纹理基于当前的纹理导入设置转换为一个合适的格式。在大多数情况下默认设置足够好,但Unity没有办法知道这对于用户来说是否已经足够好了,除非你明确告诉Unity这一信息。这正是需要你介入的步骤。 要访问纹理的导入设置的话,只需要选择你希望更改的一个或者多个纹理。你的检视窗口看起来或多或少是这样的: 在这个窗口,还有3个主要的事情你应该留意下。纹理的类型纹理类型是一种告诉Unity这个纹理将被用于什么地方的方式。除了高级以外的所有这些选项都将按照选定的目的调整你的纹理内部设置来尽可能的按照你的要求来调整到最佳设置。需要注意的是,标记为“Texture ”类型的纹理就是三维空间使用的简单漫反射纹理,这在三维游戏中应该是最常见的纹理类型。关于纹理类型的描述可以在官方手册中找到。 提示下风险:如果把纹理类型设置错了可能在起初并不明显,但是你会得到一些性能损失。有些时候,一些着色器代码需要某些类型的纹理才能够正常工作(举个简单的例子来说,在使用凹凸映射纹理的时候就必须有一张纹理的类型被设置为法线贴图)。凹凸纹理映射是一种纹理混合方法,它可以创建三维物体复杂的纹理外观表面。普通的纹理映射只能模拟比较平滑的三维物体表面,难以显示表面高低起伏、凹凸不平的效果。凹凸纹理映射能够通过一张表示物体表面凹凸程度的高度图(称为凹凸纹理),对另一张表示物体表面环境映射的纹理图的纹理坐标进行相应的干扰,经过干扰的纹理坐标将应用于环境映射,从而产生凹凸不平的显示效果。凹凸纹理映射通常由三张纹理映射图组成,第一张纹理图表示物体表面原始纹理颜色,第二张凹凸纹理图表示物体表面凹凸的高度起伏值,用来对下一张环境纹理图坐标进行干扰,第三张纹理图表示周围镜面反射或漫反射光照的环境光照映射图。尺寸大小在这里,你可以决定你的纹理的尺寸大小应该为多大,以及这个纹理应该如何存储在设备内存中。要注意的是,这里面的设置有一个最大尺寸,而不是尺寸?这主要是因为你可以在质量设置里面来给你的游戏中的所有纹理降低纹理的分辨率。在这里将最大尺寸设置为2048并不能保证这个纹理的大小就是这个尺寸,即使在质量设置里面将纹理质量设置为最高也不行。如果你的原始纹理文件不够大的话,这个纹理的分辨率将会比较低。了解到这一点以后,让纹理的尺寸比你需要的尺寸大一些是一个非常好的实践,因为这样做的话,你就可以比较自在的放缩这些纹理了。提示下风险:某些模型可能在屏幕上表现的非常小而这些模型的纹理可能有一个非常高的分辨率。你可以通过设置你的场景渲染为Mipmap来识别出这些物体:纹理采样的格式纹理采样也被称为纹理过滤,我们的纹理是要贴到三维图形表面的,而三维图形上的像素中心和纹理上的像素中心并不一致(三维图形上的像素中心不一定对应纹理上的采样中心点),大小也不一定一致。当纹理大于三维图形表面时,会导致一个像素被映射到许多纹理像素上;当纹理的大小小于三维图形表面时,许多个象素都映射到同一纹理。当这些情况发生时,贴图就会变得模糊或发生错位以及马赛克。要解决此类问题,必须通过技术平滑两者之间的对应。这种技术就是纹理采样。不同的过滤模式,计算复杂度不一样,会得到不同的效果。过滤模式由简单到复杂包括:Nearest Point Sampling(最近点采样),Bilinear(双线性过滤)、Trilinear(三线性过滤)、Anisotropic Filtering(各向异性过滤)。l最近点采样是这个最简单的纹理采样方式,每个像素的纹理坐标,并不是刚好对应纹理上的一个采样点纹理,怎么办呢?最近点采样取最接近的纹理像素进行采样。当纹理的大小与贴图的三维图形的大小差不多时,这种方法非常有效和快捷。如果大小不同,纹理就需要进行放大或缩小,这样,结果就会变得矮胖、变形或模糊。l双线性过滤以像素对应的纹理坐标为中心,采该纹理坐标周围4个像素,再取平均,以平均值作为采样值。双线性过滤会使得像素之间的过渡更加平滑,但是它只作用于一个MipMap的等级上,它会选取纹理像素和图像像素之间大小最接近的那一层MipMap进行采样。当和图像像素大小匹配的纹理像素大小在两层Mipmap 的等级之间时,双线性过滤在有些情况效果就不太好。于是就有了三线性过滤。l三线性过滤以双线性过滤为基础。会对图像像素的大小与纹理像素的大小最接近的两层Mipmap等级分别进行双线性过滤,然后再对两层得到的结果进行线性插值。三线性过滤在一般情况下效果非常理想了。但是到目前为止,我们均是假设是纹理投射到屏幕空间是各向同性的。但是当各向异性的情况时,效果仍然不理想,于是产生了各向异性过滤。l各向异性过滤是用来过滤、处理当视角变化导致3D物体表面倾斜时造成的纹理错误。传统的双线性和三线性过滤技术都是指“Isotropy”(各向同性)的,其各方向上矢量值是一致的,就像正方形和正方体。三线性过滤原理同双线性过滤一样,都是将相邻像素及彼此之间的相对关系都记忆下来,然后在视角改变的时候绘制出来。只不过三线性过滤的采集范围更大,计算更精确,画面更细腻,当然占用资源也更多。各向异性过滤技术的过滤单元并不是“四四方方”的,其典型单元是矩形,还可以变形为梯形和平行四边形。画面上的一个象素,在一个方向上可以包含不同纹理单元的信息。这就需要一个“非正多边形”的过滤单元,来保证准确的透视关系和透明度。不然,如果在某个轴上的纹理部分有大量信息,或是某个方向上的图象和纹理有个倾角,那么得到的最终纹理就会变得很滑稽,比例也会失调。当视角为90度,或是处理物体边缘纹理时,情况会更糟。各向异性过滤是最新型的过滤方法(相对各向同性2/3线性过滤),它需要对映射点周围方形8个或更多的像素进行取样,获得平均值后映射到像素点上。对于许多3D加速卡来说,采用8个以上像素取样的各向异性过滤几乎是不可能的,因为它比三线性过滤需要更多的像素填充率。但是对于3D游戏来说,各向异性过滤则是很重要的一个功能,因为它可以使画面更加逼真,自然处理起来也比三线性过滤会更慢。 MipmapMipmap是目前应用最为广泛的纹理映射技术之一。它是将低一级图像的每边的分辨率取为高一级图像的每边的分辨率的二分之一,而同一级分辨率的纹理组则由红、绿、蓝三个分量的纹理数组组成。由于这一个查找表包含了同一纹理区域在不同分辨率下的纹理颜色值,因此被称为Mipmap。 MIP map技术与材质贴图技术结合,根据距观看者远近距离的不同,以不同的分辨率将单一的材质帖图以多重图像的形式表现出来并代表平面纹理:尺寸最大的图像放在前面显著的位置,而相对较小的图像则后退到背景区域。每一个不同的尺寸等级定义成一个MIP map水平。MIP map技术帮助避免了不想要的锯齿边缘(称为锯齿状图形)在图像中出现,这种锯齿状图形可能是由于在不同分辨率下使用bit map图像产生的。Mipmap可以用一个来描述。,如图所示。该四棱锥的总层数为4 ,S为初始纹理图像每边的分辨率。若最底层图像为给定的原始图像,则第二层图像可以由最底层图像与边长为2个象素的正方形滤波器做运算得到。一般的,第n 层图像可以由第(n-1) 层图像与边长为2 个象素的正方形滤波器做卷积运算得到。例如,某一纹理图像的Mipmap的层数为10层,第10层图像为一个象素,它由原始图像经与边长为512个象素的正方形滤波器做卷积运算压缩得到,其分辨率为1×1。Mipmap纹理映射在确定屏幕上每一象素内可见的平均纹理颜色时需要计算三个参数,即屏幕象素中心在纹理平面上映射点的坐标和屏幕象素内可见表面在纹理平面上所映射的边长d。其中 取屏幕象素内可见表面在纹理平面上近似正方形映射区域的中心,d取该近似正方形的边长。显然,d决定了应该在哪一级分辨率的纹理图像平面上查找Mipmap表。虽然我们很容易通过纹理映射变换和取景变换的逆变换求得屏幕象素中心在纹理平面上映射点的参数坐标,但是d的值却不容易确定。一般而言,d的取值应使得在纹理平面上以为中心,d为边长的正方形尽可能地覆盖屏幕象素地实际映射区域,从而可取该正方形内平均纹理颜色值作为屏幕象素实际映射区域的平均纹理颜色的近似值。在实际处理时,可取d为屏幕象素在纹理屏幕上映射区域的最大边长。
批次合并渲染批次合并渲染器是大部分引擎提高渲染效率的方法,基本原理就是通过将一些渲染状态一致的物体合成一个大物体,一次提交给显卡的gpu进行绘制,如果不合并批次的话,就要提交给很多次,这可以显著的节省渲染调用,实际上这主要节省了cpu的时间,cpu从提交多次到提交一次,对显卡的gpu来说也不用多次切换渲染状态。当然能合并批次的前提一定是渲染状态一致的一组物体。Unity的批渲染分为两种,动态批次合并和静态批次合并。 静态批次合并静态批次合并的要求是要合并的物体必须使用同一张材质,然后在编辑器里设置为需要静态批次合并。这样就带来一个静态合并批次的特点,静态批次合并是无法运动的。所以一般制作流程上,对于场景这些静态的物体都采用静态批次合并,美术会根据场景的规模,将相邻的一片物件的贴图合并到一张或几张1024或512的大图上,这样这些物件可以使用同一个材质,就可以静态批次合并在一起,大幅节省渲染调用。静态合并批次的时候Unity会在运行时生成一个合并的大模型,并且为这个模型指定一张共同的贴图,所以能够合并在一起的批次的数量是有限的,如果合并在一起的批次的顶点数过多,它就会自动分成两个合并批次,一个静态合并批次的上限大约在60000多个顶点单元左右。 动态批次合并动态批次合并是对那些没有标记成静态批次合并的物体在运行的时候由 unity自动将他们合并在一起,这种做法是可以支持运动物体的,但是限制较为严格,主要是以下限制:1.一个批次的总顶点单元少于9002.合并在一起的所有的模型应用同样的缩放值3.使用相同的材质4.相同的一张光照贴图5.不能使用多pass的着色器6.不能接收阴影所以一般是小的运动的模型才比较容易动态合并批次在一起,当然unity有可能在后续版本放宽这个限制。
格式纹理格式是另外一件很容易引起一些混乱的事情。 除了高级这个选项以外,纹理类型一共还有其他四种选择:·压缩格式–这种类型是牺牲一点显卡的性能来得到一个尺寸小得多的纹理。压缩选项将会针对你的目标平台来选择最合适的压缩算法·16比特位 –这是一种低质量的真彩显示方式。它会以一种不压缩的方式来保存纹理但是它会使用16比特大小的调色板。对于颜色数量比较少的纹理非常合适。·真彩色- 这是最高质量的保存纹理的方式,它不会对纹理进行压缩,使用的是32位的调色板。这种类型看上去效果非常棒,但是一张大纹理比如将需要17M 的内存。·Crunched – 这种类型将会根据显卡的GPU来选择合适的压缩格式进行压缩然后会选用一种CPU上就能处理的压缩格式再压缩一遍。如果在制作供人下载的资源包的时候这种类型非常的合适。这个类型的压缩需要很长时间,但在运行时解压是非常快的。正如你所看到的那样,你在这里所做的事情(设置纹理的类型)就是牺牲纹理的尺寸大小来换取纹理的质量,或者反过来牺牲纹理的质量来换取纹理的尺寸大小。我的建议是始终把纹理的类型设置成压缩类型,直到你看到你游戏中的一些纹理的表现是有问题的话,再对这些有问题的纹理进行处理(选择合适的纹理类型和采样类型,或者放大纹理的尺寸等等)。 稍等一下,还有一个纹理类型的选项我们还没有说明。如果你把纹理的类型设置成高级,你将获得更多的纹理格式的控制权,包括可以选择更多的纹理压缩方法等等。需要注意的是,你的目标平台可能不会支持这里列出来的所有压缩格式(举个简单的例子来说,不同的安卓设备会支持不同的纹理压缩格式,但都应该支持ETC格式。) ETC 是由 Khronos 支持的开放标准,在移动平台中广泛采用。 它是一种为感知质量设计的有损算法,其依据是人眼对亮度改变的反应要高于色度改变。ETC v1 具有一个小缺陷,以这种格式压缩的纹理会丢失任何 Alpha 通道信息,而且也没有透明区域。由于在纹理中使用 Alpha 通道可以实现许多更聪明、更有趣的做法,许多开发人员因此采用其他纹理压缩算法,其中很多为硬件支持有限的专有格式。提示下风险:某些类型的纹理可能在压缩以后会看起来让人很不舒服,但纹理的类型如果设置为16位或者是真彩色的话就可能占用太多的空间。可以在构建你的游戏之后从里面查看纹理到底占据了多大的空间。如果想要了解更多有关纹理压缩格式的知识,请看这里《通过代码来比较安卓的纹理压缩》。验证你想要做的最后一件事情是验证你的纹理导入信息。在纹理预览的底部位置你可以了解到下面这些信息:·使用的纹理大小·使用的压缩格式·最终的纹理大小请记住,有时你会需要先建立你的游戏然后才能看到纹理的目标大小。 旁注:你可能会奇怪,为什么纹理的尺寸要是2的幂次方。如果你好奇这到底是为什么,请阅读这个讨论《》。【版权声明】原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权。
分类:程序新手圈
请勿发表无意义的内容请勿发表重复内容请勿发表交易类内容禁止发表广告宣传贴请使用文明用语其它
淫秽色情政治倾向人身攻击抄袭剽窃广告刷屏恶意挖坟冒充他人其它
登录后参与讨论。点击}

我要回帖

更多关于 unity 打开网页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信