前言
本文主要记录unity中导入下载的3D模型及贴图纹理设置及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图使用,这个功能其实挺常用的,但是发现没什么人具体说过,所以我特地查看各个资料整理了一下,希望可以帮到大家。
模型
模型我用的是之前FPS游戏的枪模型:
【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏
顺便推荐一些3D模型下载地址,你也可以选择去下载自己喜欢的模型:
https://www.cgtrader.com/free-3d-models
https://sketchfab.com/3d-models?features=downloadable&sort_by=-likeCount
一、模型配置
Unity使用的模型有FBX和OBJ,但是我们实际在引擎里面导入引擎的一些模型是FBX的,这两个后缀到底有什么区别呢?FBX它基本上是一个二进制的,计算机的读取速度会比较快,而且它可以保存更多的信息,比如说你的一个物体上有多个材质球,那么它会根据你材质球的一个ID号,存储在这个FBX里面,然后还有一些比如说绑定骨骼、蒙皮的一些信息,他也可以存储在FBX里面。
1. 比例
导入模型时,可能会出现很大或者很小的情况,有两种办法
第一种:修改缩放比例系数
第二种:去掉转换单位勾选
2. 坐标轴不匹配问题
我们有一些三维软件,它的坐标轴和Unityl的坐标轴可能不是同一个方向的,我们unity坐标轴就是Y轴朝上的,勾选烘焙轴转化,unity就会自动帮你把轴转换过来
3. 导入信息
然后我们再看一下下面的这一块,看到好多导入,就是要导入的一些信息
是否可见或者是一些摄像机、灯光,这些东西一般都是去掉勾选的
4. 保留层
一些三维软件里面它会做一些层的一些效果
如果需要保留就勾选保持层次结构
,底下的按名称对层级视图排序
是跟着上面那个相关的
根据命名来排序这些层
5. 网格压缩
6. 是否支持网格读写
是否支持网格的读写,一般是在那种比如你要做网格生长什么之类的会用到
7. 优化网格
我们一般都选择everything,就把所有的网格都优化掉
8. 碰撞体
如果勾选生成碰撞体的话
会发现模型多了一个碰撞体
9. 保持四边面
比如我们的模型本来是四边面
在unity会发现自动转成了三角面
如果你不需要的话可以把他勾选
10. 光照贴图UVs
网上大佬们已经写了很多介绍了,我就直接放出链接了,感兴趣可以看看:
https://blog.csdn.net/m0_46385244/article/details/120345342
https://zhuanlan.zhihu.com/p/157992819
主要解决导致了烘焙的光影图是模糊和布满脏斑等缺陷的。
如果你要对一个模型进行光照映射,就勾选它
二、材质贴图纹理设置
1. 提取材质
直接导进来的模型一般都是白膜,点击提取材质
2. 贴图设置
albedo/baseColor和normal贴图大家应该都知道,分别是纹理贴图和法线贴图。
AO/Occlus、metallic贴图也比较简单,在standard的shader的Occlusion和Metallic处添加即可。
3. roughness贴图
roughness贴图的使用就有些复杂了,需要用ps和其它贴图进行融合使用,而不是单独添加的。这个贴图会影响粗糙度。
这里使用 metallic与roughness融合。
先使用ps打开 roughness图片:
对这张图片进行反相:
之后再打开 metallic图片,如果没有metallic图片可以用和roughness图片同等大小的纯黑图片代替。单击下图这个标志为metallic的这个图层添加蒙版。当然添加蒙版的方式不止一个。之后按住alt+单击蒙版进入这个蒙版。
回到打开的roughness那里,ctrl+a全选,再ctrl+c即可复制,之后回到蒙版这里ctrl+v把之前得到的反相图片复制到这个蒙版上。(点击图片外区域即可退出蒙版)之后把这个metallic图片保存为png格式,便是融合了roughness的metallic贴图了。
记得standard shader的smoothness下面的source那选择metallic alpha而不是albedo alpha。之后将新metallic图片代替原来的metallic图片即可。
在smoothness(平滑度)为默认的1的情况下,是否融合了粗糙度差别很明显。但如果没有roughness贴图,直接降低smoothness(平滑度)到合适值应该也能有不错的效果。
smoothness和roughness贴图有什么区别(补充)
smoothness是光滑度
roughness是粗糙度
smoothness翻转通道过来就是roughness
也就是说如果你的模型是smoothness贴图而不是roughness贴图,就执行和前面一样的第三步,只是不需要再进行反向操作了,因为smoothness其实就是roughness的反向