找回密码
注册

QQ登录

只需一步,快速开始

Some links >
Some links >
Some links >

虚幻5:或许将会颠覆可视化行业

引言:即将问世的游戏引擎 2020年5月13日,绝对是一个值得铭记 ...

Epic商店的进击之路,论羊毛王如何初长成

关于EPIC公司,上周发生了两件很有意思的事情。 一是虚幻5引擎 ...

R星:我的成功,源自我的摇滚内核

如果你是一个开放世界的主机游戏爱好者,那么在你的游戏库中,一 ...

从一到五的蜕变 虚幻引擎何以走入业界之巅?

虚幻的过去和未来并不“虚幻” Epic Games官方在2020年5月13日 ...

如何用Unity实现超多面渲染?其实只需这三招

本文来自Unity Connect博主放牛的星星。 UE5宣传片发布之后,沸 ...

不只是雨夜霓虹:从音乐角度“解毒”赛博朋克

不管《赛博朋克2077》(Cyberpunk 2077)这部游戏的实际质量与思 ...

深入虚幻5引擎:Epic次世代视觉奇观探秘

原文:https://www.eurogamer.net/articl ... -tech-demo-analysi ...

地图系统:都市的夹、格、网、带的视角

地图在RPG游戏中具有特定的意义,这可以从三个层面来分寸: 1. ...

Supercell成立10周年的10条经验和教训

5月14日,来自芬兰的手游巨头公司Supercell写下了他们在公司成 ...

初探虚幻引擎5,预计于2021年推出

5月13日晚间,Epic Game揭开了虚幻引擎5的神秘面纱。他们们对于 ...

作者: 九艺网
查看: 137|回复: 1
搜索

more +最新主题Download

more +社区更新Forums

more +随机图赏Gallery

虚幻5:或许将会颠覆可视化行业
Epic商店的进击之路,论羊毛王如何初长成
R星:我的成功,源自我的摇滚内核
从一到五的蜕变 虚幻引擎何以走入业界之巅

more +文章更新News

[综合技术] Unity导入模型出现多层UV问题解决

[复制链接]
九艺网 发表于 2019-3-19 11:44:37 | 显示全部楼层 |阅读模式
查看: 137|回复: 1

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在做项目优化的时候发现,游戏中的模型占用了很高的内存,然后就怀疑是美术在做模型的时候没有把uv2,uv3,color等无用的通道去掉,然后就去问了美术,美术说她并没有开启这些通道,我也去max中检查了一下也没发现什么异常的情况,在max中看确实只有一层uv但是在unity里面就可以看见模型上面有很多层uv了,带着这个问题去查了下资料,摸索着使用了下max,然后就有了下面给大家分享的Unity导入模型出现多层UV问题解决方法。

方法一:


在max中进行设置把没有必要的通道全部clear掉,具体的操作请看下面的截图:
5c6f5ecf7e3cb.jpg


在这个界面中美术可以把相应的不需要的通道关掉,这样在导出的时候就不会附带这些通道了,如果想去掉color通道的话直接去掉alpha通道就行。

方法二:

程序这边进行处理,做一个工具,对每个导入到unity中的模型代码中清除相应的通道,具体的代码如下:
  1. public class ClearModelUV:AssetPostprocessor  {
  2.     //AssetPostprocessor这个类是unity自带的,会在导入资源的时候自动调用,
  3.     //可以在这个类中实现对资源的处理。
  4.     //OnPostprocessModel这个函数在资源导入到unity被存成prefabs最后阶段被调用
  5.     //传入的gameobject就是被导入的资源的Gameobject
  6.     //这个类还有一个OnPreprocessModel的方法会比这个方法提前点调用。具体用法
  7.     //和前者差不多
  8.     void OnPostprocessModel(GameObject rImaportModel)
  9.     {
  10.         this.ClearMeshUVAndColorChannel(rImaportModel);
  11.     }
  12.     private void ClearMeshUVAndColorChannel(GameObject rImportModel)
  13.     {
  14.         List<Vector2> rNewUV = null;
  15.         List<Color32> rNewColor = null;
  16.         var rFilters= rImportModel.GetComponentsInChildren<MeshFilter>();
  17.         for (int filter_index = 0; filter_index < rFilters.Length; filter_index++)
  18.         {
  19.             rFilters[filter_index].sharedMesh.SetColors(rNewColor);
  20.             rFilters[filter_index].sharedMesh.SetUVs(1, rNewUV);
  21.             rFilters[filter_index].sharedMesh.SetUVs(2, rNewUV);
  22.             rFilters[filter_index].sharedMesh.SetUVs(3, rNewUV);
  23.          }
  24.     }
复制代码
以上就是解决导入的模型存在多层UV问题的方法。

注:由于unity的光照贴图会自动占用uv2通道,而且你的项目中又使用的是动态加载光照贴图的方式的话,最好不要在导入模型的时候把UV2设置为null,如果你这样做了有可能会导致光照贴图显示不出来的问题。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表