详解Unity中的导入3D模型
Posted 梦小天幼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解Unity中的导入3D模型相关的知识,希望对你有一定的参考价值。
前言
三维模型可以表示任何现实世界中存在的物体,自然也可以表示任何游戏世界中存在的物体,比如地面,山川河流,花草树木,建筑,人物,都需要使用三维模型来表示。一般我们使用一些建模软件来建出游戏中需要的模型,然后导入到Unity中使用,本篇就来介绍介绍,一整个的3D模型制作导入流程以及需要注意的问题。
目录
前排提醒:本文仅代表个人观点,以供交流学习,若有不同意见请评论留言,笔者一定好好学习,天天向上。
阅读此文章时,若有不理解的地方,推荐观看本文列出的参考资料来对照阅读。
Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载
一、3D模型相关介绍
三维模型不止用于游戏行业,还广泛应用于工业设计、建筑设计、三维动画等领域,并不是附属于游戏行业的存在,而是一个独立的体系。
1.什么是模型
很多人在第一次接触3D模型会遇到很多陌生的名词,如网格,纹理,材质,贴图等。通俗的讲:
网格是模型的形状,贴图是一张贴到物体表面的图片,纹理是物体表面的纹路,材质是模拟物体对光的交互
材质 = 贴图+纹理
模型 = 网格+材质
这样说还是不够严谨,关于贴图、材质、纹理这些概念,想要细讲还是要另开一篇再说吧。挖坑,准备22年5月底发。
2.Unity支持的模型格式
Unity支持很多通用格式以及主流建模软件的导出格式,下面我简要列出一张表格。
本来我写了一大堆,支持的格式,支持的软件,但是后来一想好多杂七杂八的格式,我听都没听过,新手也不会接触,所以你们就记住FBX格式就行了,大多常见的建模软件都支持导入导出,并且支持材质动画骨骼,你在3Dmax做好的动画导入到Unity就能直接使用,这是最常用的格式。
3.常见的建模软件
上面表格列出了四种,下面我简要介绍一下这四种。
-
3D Max:知名但臃肿且启动速度极慢的不得不用的软件。
-
C4D:常用于影视、电商方面的设计。其他也有涉猎。
-
Blender:开源!全能!永远滴神!
-
Maya:主要用来做动画的,做动画这一块是业内顶级的!
二、Blender|FBX导入到Unity并使用
1.制作模型
Blender界面如上,版本为3.1.2
假如我现在有一个需求,我需要做一个LowPlay风格的游戏,需要一颗LowPlay的树,现在> 我们制作好这样一颗树。制作过程省略,结果如下
下面我给这棵树赋予一个绿色材质,树干和树叶材质分别命名为trunk,leaf
然后将该模型合并,并将模型的中心点设置为模型底部
(不合并会很麻烦,比如莫名其妙树干被移动了,树梢还在原地,倒不如合并为一个整体。至于什么时候合并什么时候不合并,可以参照现实世界,比如凳子你拿起来的时候是作为一个整体拿起来的,放到模型中,就可以合并为一个整体。比如桌子上的锅碗瓢盆与桌子本身,都是可以独立拿起的,那就不合并为整体。这个主要还是看游戏需求)
2.导出模型并正确设置参数
然后点击文件->导出->FBX,就会探出如下窗口
你需要注意上图特别标注出的几个选项。
- 缩放:代表你的模型被缩放到多少倍再导出,如果一般你是按照现实世界的比例来建模的,那么导入到Unity就不会失真,所以默认为1即可。
- 应用缩放:默认就可以
- 前进:这个特别注意,如果导入到Unity中,则需要改成,Z向前
- 向上:导入到Unity中则需要改成Y向上
如果你是需要导入到其他游戏引擎或建模软件,则需要理解这个游戏引擎的世界坐标系。比如Unity的坐标系是左手坐标系,Z前Y上X右。所以才需要更改坐标方向。
其他设置默认即可。
3.导入到Unity中并使用
当你点击下面的"导出FBX"按钮后,你就导出了一个FBX文件,然后将该文件直接拖入Assets即可完成导入(或从菜单项的Assets->Import New Asset导入)
导入后的模型文件结构如下,有两个材质球,一个网格,将tree整体拖入场景,即可使用
这时你可以清晰的看到该模型的XYZ轴和世界坐标是对其的,如若刚才没有设置,那么这个树肯定是以一种很奇怪的方式出现的。
三、3DMax|FBX导入到Unity并使用
再用3DMax以同样的步骤演示一下
1.制作并导出模型,以及设置参数
3DMax2019软件界面如下,模型也做好了,如下
当你导出时,会弹出该窗口,和上面说的blender一样,你只需要更改高级选项中的轴转化即可。但是3Dmax中默认就是Y轴向上,所以你完全不需要做任何更改,就能导出使用
2.导入到Unity中并使用
导入Unity还是拖拽即可,然后拖放入场景中,如下。哦,忘记给材质了,不过问题不大。
四、常见问题以及注意事项
关于3Dm模型导入到Unity中,你只需要注意以下几点:
- 当前格式是否支持导出你模型中的材质,动画,骨骼,比如你做好了一个带有材质的树,导出了OBJ格式,然后导入到Unity,这时你纳闷了,我材质哪去了?这时用FBX就不会产生这个问题。
- 导出设置时,当前的轴向是否为Z前,Y上,Z前Y上是Unity的世界坐标系,你导出必须要转换为这个坐标系,不然的话,放到Unity场景中,就可能会方向错乱。
- 导出设置时,注意你的模型尺寸是否按照真实世界建模,如果不是,记得调整缩放大小。
- 导出前,记得检查你的模型中心点是否在中心或在中心底部位置。
五、总结和参考资料
1.总结
无
2.参考资料
https://zhuanlan.zhihu.com/p/163380009
https://www.zhihu.com/question/25745472?ivk_sa=1024320u
http://news.sohu.com/a/503415464_121143937
Unity3.4 将现有的3ds Max模型导入到Unity
分类:Unity、C#、VS2015
创建日期:2016-04-05
一、简介
这一节我们用一个带有“装子弹和上膛”动画的“枪”模型,介绍在3ds Max 2015中编辑它并将其导入到Unity中的过程。
本节示例介绍的gun模型可在《Unity 4.x从入门到精通》附带的资源中找到,自己从网上搜索吧。
二、导出gun.max模型为FBX格式
1、在3ds Max 2015中打开gun.max
在3ds Max 2015中打开gun.max文件:
单击【播放动画】观察子弹上膛的过程:
单击上图最左侧的【转至开头】按钮-回到第0帧位置,按M键弹出材质编辑器,可看到该物体材质名称为gun,材质类型为【标准】材质,在漫反射贴图通道上以及凹凸贴图通道上都已经指定了对应的贴图:
注意:Unity支持的3ds Max材质球类型包括:standard(标准材质),Multi/sub-object(多维子材质),需要注意每个子材质必须是标准材质。另外,材质的名称要尽量与模型的名称对应,建议都采用英文字符命名。
2、将gun.max导出为FBX格式
确认动画、材质无误后,接下来进行资源导出。单击左上角的按钮,选择【导出】:
在弹出的对话框中,选择保存类型为Autodesk(*.FBX),将其保存到ch03Demos工程的Assets文件夹下。
再次说明一下,虽然FBX文件导出时存放的路径可以自由指定,但是,如果将其直接导出到Unity工程的Assets文件夹下,打开Unity工程时它就会自动刷新Assets文件夹中的资源。这样就不需要再手动将资源导入Unity了,用起来非常方便。
单击【保存】按钮,然后在接下来弹出的对话框中,勾选【Animation】下的复选框,以及【Bake Animation】下的复选框:
取消勾选的【Camera】和【Lights】选项,不导入相机和灯光。另外,勾选【Embed Media】,以便将嵌入的资源一并导出:
展开观察下面的选项,可看出导出时Y轴是朝上的,导出的FBX版本:
单击【OK】按钮完成导出过程。
关闭3ds Max 2015。
三、在Unity中观察gun.fbx模型
运行Unity 5.3.4f1(64-bit),打开ch03Demos工程,观察3ds Max 2015导出的结果。
刚打开ch03Demos工程时,由于刚才导出的模型带有法线贴图,所以会弹出下面的【NormalMap Settings】对话框:
单击【Fix now】,然后就可以在Assets下看到导入的模型了:
1、观察导入的模型属性
检视器中各属性的含义如下:
(1)Meshes
网格。
Scale Factor:缩放系数。如果导入的模型大小不一样,可通过它调整缩放系数。
Mesh Compression:网格压缩。共有4个选项,off沩不压缩,Low、Medium、High依次代表增大压缩值,压缩值越大则网格体的文件越小,但有可能导致网格出现错误。要依据实际情况进行调节。
Read/Write Enab!ed:读/写启用。勾选该项后网格可被实时读写,默认为勾选。
Optimize Mesh:优化网格。勾选该项后会优化网格,以加快Unity渲染的效率。
Cenerate Colliders:生成碰撞体。勾选该项会为导入的物体生成碰撞体。
SwapUVs:交换UV。如果光照贴图识别了错误的UV通道,勾选这个选项,可以交换第一、第二UV通道。
Cenerate Lightmap:生成光照贴图UV通道。勾选此选项将生产光照贴图所用的第二UV通道,并会弹出Advanced Options高级选项,参数如下:
- Hard Angle:硬边角度。该选项用来控制相邻三角面夹角的阈值,可根据网格的形状去调节,设置哪些边将作为硬边和接缝处理。如果设置这个值为180°,那么所有的边角将都被圆滑,默认值为88(88°)。
- Pack Margh:紧缩间隔。这个选项控制UV坐标簇的间隔,会尽量减少UV坐标簇的间隔,从而最大限度利用生成光照贴图资源,默认值为4。
- Ang!e Error:角度误差。网格面片夹角可能影晌的最大UV角度误差,用来控制基于原始网格影晌UV坐标簇相似程度的百分比(值越大相似三角面越多)。设置一个较小的数值可以避免烘培光照贴图时产生问题,默认设置为8(8%)。
- Area Error:面枳误差。网格面枳可能影晌的最大UV面枳误差,用来控制基于原始网格相对UV坐标簇面积相似程度的百分比,将此值没置—个较大的数值可以得到更完整的UV坐标簇,默认没置15(15%)。
(2)Normas & Tangents
法线和切线。
Normas:法线。定义网格的法线,有3个项可供选择:
Import:导入。该项为默认选项,从模型文件中导入法线。
Cakulate:计算。依照smoothing angle计算法线,选择后会激活Smooting angle滑竿,可依据网格面之间的夹角阈值来计算法线,真值可在0~18度之间调整,默认值为60度。
None:无。如果模型既不需要法线贴图映射,也不需要实时光照影晌,则选择该选项。
Tangens:切线。定义如何计算切线,当网格上面赋予法线贴图时调节该项才会起做用(针对法线贴图),有3个选项:
- Import:导入。依据在三维软件中设置的方式计算切线和副法线,可理解为依据在三维软件中的没置来决定是否计算法线贴图。只有文件是.FBX、.dae、.3Ds、.dxf、.obj等格式时,并旦法线贴图已从文件中导入后,这个选项才可用。
- Calculate:计算。默认选项,计算切线和副法线,可理解为计算法线贴图。只有当法线贴图已导入并计算后,这个选项才可用。
- None:无。关闭切线和副法线,可理解为不计算法线贴图。网格将不具有切线,因此将不支持法线贴图着色器。
Smoothing Angle:平滑角度。没置网格面片的夹角阈值,作用于调节法线贴图切线。
Split Tangents:分割切线。如果模型因法线贴图出现接缝,激活这个选项可以修复接缝问题。
(3)Material
材质。
Import Naming:导入材质。勾选该项,系统将用默认的漫反射材质取代FBX导入时的材质。
Material Naming:材质命名。决定Unity材质的命名方式。有3个选项:
- By Base Texture Name:依照基础贴图名称。以导入材质中的漫反射贴图名称作为物体材质的名称(如果导入的材质中不含漫反射贴图,Unity将用导入的材质名称来命名)。
- From Model\'s Material:来自模型的材质名称。以导入模型的名称作为物体材质的名称。
- Mode name + Model\'s Material:模型名+模型材质名。以导入模型的名称加上导入的材质名称作为物体材质的名祢。
- Material Search:材质搜索。决定Unity如何根据Material Naming选项,搜索定位相应的材质。有3个选项:
- Local Material Folder:局部材质文件夹。仅在和模型文件处于同—个文件夹下的子文件夹中搜索。
- Recursive-Up:向上。Unity将依次向上搜索Assets文件夹中所有的材质子文件夹。
- Project-Wide:项目范围。Unity将在整个Assets文件夹中搜索材质。
2、将模型拖放到场景中
将模型拖放到场景或层次视图中,再缩放旋转一下,就可以得到下面的效果:
按 <Ctrl>+S 保存场景。
以上是关于详解Unity中的导入3D模型的主要内容,如果未能解决你的问题,请参考以下文章