Unity3D导入3DMax模型缩放单位问题深入分析
2017-03-09 15:29
507 查看
“Unity3D导入3DMax制作的模型存在100倍缩放比例”,各Unity3D开发者基本都听过吧。
怎么保证3DMax中制作的1m导入Unity3D后还是1m?
为什么会存在100倍缩放问题?
![](https://img-blog.csdn.net/20170309152830074)
中文版
![](https://img-blog.csdn.net/20170309152833170)
按如上单位设置后,每个格子是0.1m的大小。要制作一个1m的模型得占10个格子,如下为一个边长1m的盒子:
![](https://img-blog.csdn.net/20170309152835761)
通过以上设置后,3DMax里制作的1m导入Unity3D也是1m,继续分析原因
![](https://img-blog.csdn.net/20170309152838857)
![](https://img-blog.csdn.net/20170309152841433)
数值暂不用关心,看数值后面的单位cm和m,这就是显示单位的设置
系统单位:与“显示单位”一起决定,最终存储时记录的单位值(暂且叫“存储单位”吧)。
做个1m的box:显示单位设置为1m时,系统单位为1m 存储单位为1,系统单位为1cm 存储单位为100
做个1cm的box:显示单位设置为1cm时,系统单位为1cm 存储单位为1,系统单位为0.1mm 存储单位为100
做个1m的box:显示单位设置为1cm时,系统单位为1cm 存储单位为100,系统单位为0.1mm 存储单位为10000
不是说“1存储单位=1m”吗,怎么缩小了100倍?
看下Unity3D导入模型的默认设置
![](https://img-blog.csdn.net/20170309152844608)
缩放因子为0.01,导入Unity3D的模型默认情况下会被缩小100倍。
要使3DMax导出的模型在导入Unity3D时默认1m=1m,关键得让模型中记录的“存储单位”=100。
比如这几种方式都能得到存储单位为100的模型:
显示单位1m,系统单位1cm,制作一个1m的模型
显示单位1cm,系统单位0.1mm,制作一个1cm的模型
显示单位1cm,系统单位1cm,制作一个1m的模型
只要符合以下公式
但要达到“3DMax中创建一个1m的模型导入Unity3D也是1m”的要求,那么模型尺寸=1m 已经固定,代入公式得 系统单位=1cm。所以3DMax里系统单位要设置为cm,显示单位怎么设置都无所谓。
不过有以上公式这些都不是问题,如果Scale Factor = 1只需要保证模型记录的存储单位为1,即“模型尺寸/系统单位=1”->“1m/系统单位=1”->系统单位=m
敲了这么多感觉有点啰嗦,如果感觉不明白,欢迎回复讨论^_^
其实unity中没有所谓的单位,也没有显示单位名称,所以,如果把里面的unity中的1m换成为unity中的一个最小单位方格可能更好。今天也是测试了很久,你的后半段内容我一开始没看懂,后来通过我自己的测试后再看你的这样解释,我觉得说的还是很通的。另外unity5.0版本帮我们解决了关于max单位和unity单位的问题。以后只要在max中输入的单位为通用的(如cm、m、mm、km)的,只要显示的长度是1m,那么你导入后,默认显示的效果就是1个方格大小。当然,场景中模型的scale细数可能会有不同而已。
切梦刀
2015-07-12 00:04
Unity3D 5.x之前的确有很多“不方便”之处,比如单位、AssetBundle等,这些引擎本可以做的更智能。项目太忙,5.x还没做太多研究,多交流
原文地址:http://blog.dou.li/unity3d-import-3dmax-model-scale.html
怎么保证3DMax中制作的1m导入Unity3D后还是1m?
为什么会存在100倍缩放问题?
怎么保证3DMax中制作的1m导入Unity3D后还是1m?
3DMax单位设置
英文版中文版
按如上单位设置后,每个格子是0.1m的大小。要制作一个1m的模型得占10个格子,如下为一个边长1m的盒子:
通过以上设置后,3DMax里制作的1m导入Unity3D也是1m,继续分析原因
为什么会存在100倍缩放问题?
解释这个问题前,先明白几个概念3DMax“显示单位”和“系统单位”有什么关系
显示单位:决定3DMax主面板显示时使用的尺寸单位,下面是分别设置为“厘米”和“米”时的情况数值暂不用关心,看数值后面的单位cm和m,这就是显示单位的设置
系统单位:与“显示单位”一起决定,最终存储时记录的单位值(暂且叫“存储单位”吧)。
存储单位=显示单位/系统单位
做个1m的box:显示单位设置为1m时,系统单位为1m 存储单位为1,系统单位为1cm 存储单位为100
做个1cm的box:显示单位设置为1cm时,系统单位为1cm 存储单位为1,系统单位为0.1mm 存储单位为100
做个1m的box:显示单位设置为1cm时,系统单位为1cm 存储单位为100,系统单位为0.1mm 存储单位为10000
“显示单位”和“系统单位”对Unity3D的导入有何影响?
上面所说“存储单位”最终会记录到模型文件,Unity3D导入时将按“1存储单位=1m”的比例显示模型,举两组数据:显示单位1m,系统单位1m,存储单位1,Unity3D中显示0.01m 显示单位1m,系统单位1cm,存储单位100,Unity3D中显示1m
不是说“1存储单位=1m”吗,怎么缩小了100倍?
看下Unity3D导入模型的默认设置
缩放因子为0.01,导入Unity3D的模型默认情况下会被缩小100倍。
要使3DMax导出的模型在导入Unity3D时默认1m=1m,关键得让模型中记录的“存储单位”=100。
比如这几种方式都能得到存储单位为100的模型:
显示单位1m,系统单位1cm,制作一个1m的模型
显示单位1cm,系统单位0.1mm,制作一个1cm的模型
显示单位1cm,系统单位1cm,制作一个1m的模型
只要符合以下公式
(模型尺寸/显示单位)*(显示单位/系统单位)=100,化简一下为
模型尺寸/系统单位=100
但要达到“3DMax中创建一个1m的模型导入Unity3D也是1m”的要求,那么模型尺寸=1m 已经固定,代入公式得 系统单位=1cm。所以3DMax里系统单位要设置为cm,显示单位怎么设置都无所谓。
结论
要保证“3DMax中创建一个1m的模型导入Unity3D也是1m”,只需要把3DMax中系统单位设置为cm
PS
真不明白为什么Unity3D要把模型导入默认缩放因子设置为0.01。不过有以上公式这些都不是问题,如果Scale Factor = 1只需要保证模型记录的存储单位为1,即“模型尺寸/系统单位=1”->“1m/系统单位=1”->系统单位=m
敲了这么多感觉有点啰嗦,如果感觉不明白,欢迎回复讨论^_^
坚果
2015-06-30 23:51其实unity中没有所谓的单位,也没有显示单位名称,所以,如果把里面的unity中的1m换成为unity中的一个最小单位方格可能更好。今天也是测试了很久,你的后半段内容我一开始没看懂,后来通过我自己的测试后再看你的这样解释,我觉得说的还是很通的。另外unity5.0版本帮我们解决了关于max单位和unity单位的问题。以后只要在max中输入的单位为通用的(如cm、m、mm、km)的,只要显示的长度是1m,那么你导入后,默认显示的效果就是1个方格大小。当然,场景中模型的scale细数可能会有不同而已。
切梦刀
2015-07-12 00:04
Unity3D 5.x之前的确有很多“不方便”之处,比如单位、AssetBundle等,这些引擎本可以做的更智能。项目太忙,5.x还没做太多研究,多交流
原文地址:http://blog.dou.li/unity3d-import-3dmax-model-scale.html
相关文章推荐
- Unity3D导入3DMax模型缩放单位问题深入分析
- Unity3D导入3DMax模型缩放单位问题深入分析
- Unity3D导入3DMax模型缩放单位问题深入分析
- unity3d导入3dmax fbx格式模型单位设置问题
- unity3d导入fbx文件,与3dmax生成的fbx文件时,所遇到的单位问题
- 【Unity3D】导入FBX模型使用Legacy动画的Scale缩放问题
- Unity3d 导入3dMax模型会产生的问题
- Unity3D模型导入缩放问题
- Unity3d教程之导入3dMax模型产生问题的解决办法
- Unity3D animation import issue | 模型导入,动画无法播放问题
- Unity3d导入模型尺寸问题
- 3DMax模型导入ArcGIS中发生丢失部分模型纹理的问题
- Unity3D 如何图形问题修正旋转模型已导入?
- 关于3dmax模型导入到u3d中时,坐标会旋转的问题
- Unity3d与3dmax模型比例问题
- SolidWorks转3DMAX再到Unity3D的转换模型及单位设置
- Unity3d导入3dmax后model 的缩放为0.0254的原因以及解决办法
- 3DMax模型导入ArcGIS中发生丢失部分模型纹理的问题
- 模型导入的单位问题
- Unity3d导入模型尺寸问题