以下两种导入方法哪一种是正确的呢?两者又有什么区别?

问题:

通过unity导入(直接拖进去)。 2.在底层目录,Ctrl+C/V复制过去。

从结果看,我这两种操作,都会影响Model项里面的File Scale参数,并且两种操作影响的结果,数值都不一样。直接导入的结果是0.01,手动复制的则是0.0254。

这个参数是灰色的,无法手动修改。如下图。



unity导入fbx没材质 unity如何导入fbx_3d


该模型是我从AssetStore中下载的,所以我需要修改模型,当在max中改完,再次导入unity后,发现模型的大小已经被改变了,变小了。

我以为是max导出设置的问题,也清楚两个软件之间的单位不同,


但是我发现,即使是unity中的原始模型文件,再次通过上面的两种操作,重新导入(复制)一次;在没有通过max修改的过程中,模型仍然变小了。


不过,如果用复制的方法,把“A.FBX”和“A.FBX.meta”一起复制,那么模型的大小比例都是完全正确的,没有发生变化,和原始文件一样。



所以,我就很疑惑,怎么才能正确导入模型文件呢(fbx)?


为什么同样的模型文件,在没有做任何修改的情况下,再次导入一遍就会改变大小?


为什么连着.meta一起复制,就会没有问题?.meta文件的作用到底是什么?


(我以为.meta仅仅只是作为一个文件的标识,难道还包含着文件信息?)



本人新手,unity很多都不明白,问题有些多,先在此谢过各位了!



1.回答1


在 Maya 或者3DMax 里导出时,单位设成米或厘米,不要用英寸。

造成这个原因多半是 fbx 有好几个常用的格式标准,它们之间不兼容导致的,操蛋的 Autodesk!!

我们模型一般都是在Blender3D里做的,外来的模型也都先导入到 Blender 里做统一的整理。标准这个东西很麻烦的,我们以前喜欢直接在 Unity 里用 Blender 的源文件,后来遇到各种不兼容,现在都是统一导出 fbx 再复制到 Unity 里,所以一直没有太多问题。

Fbx 导入 Unity 时,优先考虑复制粘贴的方法,建议不要拖动。

随便搜了一下,这里有答案:
File Scale FBX
帖子里也说到.meta文件会影响到 filescale 的值,至于 Unity 官方为什么这么设计就不得而知了。

不过解决方案依然不完美。只能先这么凑合着用,在3D 软件里建模时多迁就一下。记得Unity 里所有的 fbx的 filescale都保证为统一的值,一般是0.01。



2.回答二


两种导入方式应该是一样的啊?


unity 不会修改fbx文件,所有在Unity中设置的属性都保存在meta文件里。


如果没有meta文件,那么Unity会自动按默认设置生成一个。



关于3dsmax的单位,真正有效的是1 unit=xxx


缩放比例是来自导出单位米和1unit对应的单位。如果1unit是英制单位,导出用米,就会有0.0254这种奇怪的比例了。


(如果统一用英制也是整数比例,如果你把unity的单位也当英制看的话)


设置好3dsmax之后,把购买的模型在3dsmax里统一一下尺寸再导入unity里就肯定正确了。



3dsmax的设置我以前写过一个。


=======================================



3dsmax导出Unity3D


1.单位设置


unity导入fbx没材质 unity如何导入fbx_缩放比例_02

unity导入fbx没材质 unity如何导入fbx_3d_03

系统单位比例设置为1unit=1厘米

导出时单位选择厘米



unity导入fbx没材质 unity如何导入fbx_缩放比例_04


2.导出前重置变换:


unity导入fbx没材质 unity如何导入fbx_unity导入fbx没材质_05


消除缩放比例



unity导入fbx没材质 unity如何导入fbx_缩放比例_06


unity导入fbx没材质 unity如何导入fbx_unity导入fbx没材质_07


3.Y轴方向


3dsmax是z轴朝上,Unity3D是y轴朝上;

默认设置导出到Unity3D中,会有-90的旋转;

注:重置变换会归零对Y轴方向的修改,所以这步要在导出前最后一步做;

导出前在3dsmax中调整轴向



unity导入fbx没材质 unity如何导入fbx_3d_08


unity导入fbx没材质 unity如何导入fbx_unity导入fbx没材质_09



默认为这样;

转一下,X转90把Y轴朝上,Z转90把Z朝前



unity导入fbx没材质 unity如何导入fbx_缩放比例_10


注:导出时的Yup,Zup没有实际影响


3.回答三


因为MAX之类的建模工具一般是一个单位一厘米。可是Unity里面是一个单位一米。所以导入后unity默认缩放比例为0.01。

至于为什么底层复制会是0.254就不得而知了。



建议使用拖拽导入的方式。如果导入的资源有问题,在拖拽导入的时候Unity会提示导入失败的原因。而且可以在project面板直接打开树状图选择要把文件导入哪。若是打开文件夹直接复制到工程目录,一是麻烦,得多开一个文件夹;二是有些unity会自动生成或者自动关联的东西,如果从文件夹Ctrl+C/V复制过去,它可能就不会创建了。比如常见的导入模型贴图丢失。



拖拽导入的时候有几个小点要注意一下:


1.拖拽的位置:


假如要导入模型,有的人喜欢拖拽到红框的位置,因为看的到上一层文件夹


unity导入fbx没材质 unity如何导入fbx_拖拽_11


但是这红框太小了,一不小心手抖就可能导入到其他文件夹去了,所以我建议拖拽到这里:


unity导入fbx没材质 unity如何导入fbx_拖拽_12


地方大,不容易错。


2.拖拽成功后记得要看看属性面板,有些虽然导入进来没报错,但还是不能用的。建议所有模型、视频、音频、图片资源导入后稍微检查一下属性。以此避免代码写了一大堆,结果死活播放不出声音,最后发现是音频属性有问题的悲剧发生。


比如这个材质,属性面板完全看不到属性(我拿了个5.X版本的人模导入到4.X,材质就完全不能用了)。


而正常的材质属性是这样的:



unity导入fbx没材质 unity如何导入fbx_缩放比例_13


unity导入fbx没材质 unity如何导入fbx_unity导入fbx没材质_14




题主图片里的file scale来源可能是 在MAX中显示单位为米 而系统单位是英寸

unity导入fbx没材质 unity如何导入fbx_拖拽_15



“与原点之间的距离”的值与题主所提到的值可以说是相呼应的, 不过MAX文档对于这个东西的解释我没有看懂~~~ 但是如果系统单位改为米的话 那么这个值就会是“1” 这个我倒是验证了。