zoukankan      html  css  js  c++  java
  • Unity3D导入3DMax模型缩放单位问题深入分析

    “Unity3D导入3DMax制作的模型存在100倍缩放比例”,各Unity3D开发者基本都听过吧。

    1. 怎么保证3DMax中制作的1m导入Unity3D后还是1m?
    2. 为什么会存在100倍缩放问题?

    怎么保证3DMax中制作的1m导入Unity3D后还是1m?

    3DMax单位设置

    英文版
    MAX单位设置_en.jpg

    中文版
    MAX单位设置_zh.jpg

    按如上单位设置后,每个格子是0.1m的大小。要制作一个1m的模型得占10个格子,如下为一个边长1m的盒子:
    MAX盒子单位示例.jpg

    通过以上设置后,3DMax里制作的1m导入Unity3D也是1m,继续分析原因

    为什么会存在100倍缩放问题?

    解释这个问题前,先明白几个概念

    3DMax“显示单位”和“系统单位”有什么关系

    显示单位:决定3DMax主面板显示时使用的尺寸单位,下面是分别设置为“厘米”和“米”时的情况
    MAX显示单位_cm.jpg
    MAX显示单位_m.jpg
    数值暂不用关心,看数值后面的单位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导入模型的默认设置
    Unity导入模型Scale值.jpg

    缩放因子为0.01,导入Unity3D的模型默认情况下会被缩小100倍。
    要使3DMax导出的模型在导入Unity3D时默认1m=1m,关键得让模型中记录的“存储单位”=100。
    比如这几种方式都能得到存储单位为100的模型:

    1. 显示单位1m,系统单位1cm,制作一个1m的模型
    2. 显示单位1cm,系统单位0.1mm,制作一个1cm的模型
    3. 显示单位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

    敲了这么多感觉有点啰嗦,如果感觉不明白,欢迎回复讨论^_^

    转载请注明:兜里-Unity3D导入3DMax模型缩放单位问题深入分析

  • 相关阅读:
    Visual Prolog 的 Web 专家系统 (7)
    spring来源理解-BeanFactory子类XmlBeanFactory创建过程
    Threejs 它可以在建立其内部房间效果可见
    Android AlarmManager报警的实现
    什么是注册表和注册表中的作用
    精致的外观Request
    数据仓库的工作日记_创纪录的(一)
    servlet api.jar是干什么的?
    servlet-api-2.5.jar
    用poi-3.6-20091214.jar 实现java给excel资料加密
  • 原文地址:https://www.cnblogs.com/lancidie/p/8537514.html
Copyright © 2011-2022 走看看