游戏引擎通常并不具备专业的建模功能,所以通常情况下模型都是在专业的三维软件中进行设计,然后再通过特定格式的文件导入到游戏引擎中进行游戏开发。Unity支持多种外部导入的模型格式,如FBX、3ds、dxf和obj等。
  本文中介绍的FBX文件是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件,通过FBX用户能访问大多数三维供应商的三维文件。FBX文件支持所有主要的三维数据元素以及二维、音频和视频媒体元素,是当今主流的文件格式。通过在3ds Max中将模型导出为FBX格式文件,再将文件导入到Unity中,就能够对模型进行进一步的游戏设计。在导出导入FBX文件的过程中不少用户会发现模型的尺寸会发生变化,“明明在3ds Max中的设计尺寸为1米,导入到Unity却扩大了一百倍”。究其原因,是因为二者单位转换的问题,弄明白二者之间的关系,就能节省很多开发时间。本文中采用Unity2018.3.0与3ds Max2012进行示范演示。
  第一种情形:
  (1)在3ds Max2012中将系统单位设置“1单位 = 1m”,如图1所示。(设置系统单位的方式:在菜单栏中选择“自定义”-“单位设置”-“系统单位设置”)

图1 系统单位设置

  (2)在编辑区创建一个边长为2米的正方体,如图2所示。

图2 边长为2米的正方体

  (3)点击3ds Max左上角的图标,选择“导出”-“导出”,命名为“testCube.FBX”,这样一个最基础的FBX文件就创建完成。
  (4)将FBX文件导入到Unity场景中。在Unity项目中新建文件夹,命名为“Prefab”,将上一步生成的FBX文件放置到该文件夹下,并将模型拖至场景中,为了后续便于区分,给该正方体添加黄色材质。如图3所示。

图3 将模型拖放到Unity场景中

  (5)为了验证3ds Max与Unity之间模型的尺寸关系,我们需要知道Unity中模型的实际尺寸。Unity中默认单位为米。通过以下脚本获取模型的尺寸

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GetSize : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Vector3 theSize = GetObjectSize();print(theSize);}// Update is called once per frameVector3 GetObjectSize(){Vector3 realSize = Vector3.zero;Mesh mesh = GetComponent<MeshFilter>().mesh;if(mesh == null){return realSize;}Vector3 meshSize = mesh.bounds.size;Vector3 scale = transform.lossyScale;realSize = new Vector3(meshSize.x * scale.x, meshSize.y * scale.y, meshSize.z * scale.z);return realSize;}
}

将脚本挂载到测试正方体中,运行程序,在控制台输出窗口就会显示尺寸,如图4所示。

图4 控制台输出尺寸

可以看出模型在Unity中的尺寸为2m x 2m x 2m,与我们在3ds Max中的尺寸一致,并且注意到图3右侧Inspector面板中Transform一栏中的Scale的三个值全为1。
  第二种情形
  (1)将第一种情形中3ds Max中的系统单位设置为"1单位=1cm",同样绘制边长为2m的正方体。在导出FBX文件时仍然选择场景单位转化为“米”,注意到此时比例因子变成0.01,如图5所示。

图5 设置场景单位

  (2)将导出的FBX文件导入到Unity场景中,如图6中红色立方体所示。通过脚本获取立方体尺寸大小。

图6 Unity中导入红色正方体

从图中可以看出,立方体的尺寸依旧为2m x 2m x 2m,但是Inspector面板中Transform一栏中的Scale的三个值全为0.01。这也就可以看出,因为在3ds Max导出设置时比例因子为0.01,这也就使得Scale变为0.01。
  第三种情形
  (1)3ds Max中的系统单位设置为"1单位=1m",同样绘制边长为2m的立方体。在导出FBX文件时仍然选择场景单位转化为“厘米”,注意到此时比例因子变成100,如图7所示。

图7 场景单位设置

  (2)将导出的FBX文件导入到Unity场景中,如图8中浅蓝色立方体所示。通过脚本获取立方体尺寸大小,物体尺寸仍为2m x 2m x 2m。但是Inspector面板中Transform一栏中的Scale的三个值全为100。这也就可以看出,因为在3ds Max导出设置时比例因子为100,这也就使得Scale变为100。

图8 Unity中导入蓝色正方体

  第四种情形
  (1)在Unity的project面板单击第三种情形中创建的正方体,会在相应位置显示该模型的Inspector面板,可以注意到Convert Units属性是默认选中的,我们现在取消选中,如图8所示。

图9 Convert Units属性设置

  (2)再将该立方体拖放到场景中,会发现立方体会扩大很多倍,使用脚本获取尺寸,大小为200m x 200m x 200m,如图10所示。

图10 蓝色正方体扩大很多倍

  为什么会发生这种情况呢? 因为我们在3ds Max模型的单位为米,而导出设置时场景单位为厘米,这样模型大小就可以表示为200厘米 x 200厘米 x 200厘米。因为在默认条件下,Convert Units选项是被选中的,而且选项中有指出"1 cm(File) to 0.01m(Unity)",这样最终转到Unity中就是2米 x 2米 x 2米,可以理解为“带单位转换”。但是如果取消Convert Units选项,Unity就不会识别FBX文件中模型的单位是多少,而只是默认识别为200单位 x 200单位 x 200单位 。之前讲过Unity中默认的单位为"1单位=1米",这样导入到场景中就会变成200米 x 200米 x 200米,“可以理解为不带单位转换”。

  总结
  经过上述几个情形的举例,我们已经能够大致了解Unity与3ds Max之间的单位关系。3ds Max中的比例因子参数就是对应了Unity的Transform中的Scale属性。而场景单位就是对应于Unity中的单位,为与Unity单位一致,场景单位最好设置为。将模型导入到Unity之后要注意观察其Convert Units选项,通常情况下,为了保证3ds Max与Unity中的模型尺寸一致,需要将该选项选中。

Unity与3ds Max的单位关系(使用FBX文件)相关推荐

  1. Unity 支持 3ds max 2021 物理材质吗?(FBX 出口)是否应该使用BPR材质?

    Renderbus瑞云效果图云渲染小编小瑞来回答: 您可以参考一下Unity官方文档中提到的FBX支持导入的内容. Unity 通过 FBX 格式导入 Autodesk® 3ds Max® 文件 (  ...

  2. 3ds Max模型导出/转换为Revit族文件(可编辑材质)

    目标 将3ds Max模型中的整体或局部模型导出/转换为Revit族文件,族文件的每部分支持单独设置及编辑材质. → 步骤 1.3ds Max端操作 (1)将需转换模型导出为3ds格式文件 选中需转换 ...

  3. Autodesk 3ds max 2017 无法保存导出fbx的预设(FBX export does not save presets - Autodesk)

    日常记录 今天在使用3ds max 2017 导出FBX文件的时候,无论我如何操作,都不能保存导出的预设. 首先考虑没有管理员权限导致无法保存设置的可能. 尝试使用管理员权限运行程序之后,仍然无法成功 ...

  4. Cinema 4d 和 3ds Max:哪个软件更好?

    3D 设计有很多挑战.设计师通常需要克服他们的看法和偏见,此外还要学习一些深入的程序来有效地使用 3D 风格的软件系统.市场上有很多用于3D设计的软件,因此对于哪一种对您的需求最有效会令人困惑.如果您 ...

  5. 常见3DS Max格式概述

    导入对话框选择格式,你会看到众多导入的格式.3ds max支持众多的文件格式导入方法. 导入支持的格式有: Autodesk (FBX) :(常用) FBX 是 Autodesk MotionBuil ...

  6. 3ds Max 2014 SDK配置开发环境以及遇到的问题

    领导让研究一下Max插件,于是从一个坑立刻跳到另一个坑中!目前SDK已经更新到了2018,真是一年一个版本... 环境 机器:Win7 旗舰 64+SP1 IDE : VS2010(由于使用3ds M ...

  7. 3ds Max 2024新特性及安装图文教程

    Autodesk 3ds Max 2024版本由Autodesk公司于2023年3月28日发布,它是一款功能强大的 3D 建模和动画解决方案,游戏开发人员.视觉效果艺术家和平面设计师使用它来创建庞大的 ...

  8. 3ds Max插件开发(二)官网上的Sample utility plug-in

    通过上节的步骤可以确保SDK满足开发3ds Max plug-ins的条件. File > New:Projects > Visual C++ Projects >设置插件类型为ut ...

  9. FBX文件导入Unity导致贴图丢失问题解决,以3ds max,Blender导入导出为例

    一 . 首先把资产文件导入三维软件中 1 . 3ds Max 1.1 导入FBX--[免费或者质量差的资源可能会出现平滑组错误的情况,可以直接镜像一个模型更改法线或者删除面重新封口能解决问题] 1.2 ...

最新文章

  1. easypoi教程_EasyPoi教程
  2. 如何支持亿级用户分流实验?AB实验平台在爱奇艺的实践
  3. android activity之间传值
  4. oracle active data guard概述
  5. java list写入txt_Java - 如何将我的ArrayList写入文件,并将该文件读取(加载)到原始ArrayList?...
  6. python代码规范化_数据标准化方法及其Python代码实现
  7. 焊接空间臂_焊接烟尘净化器设备哪种好
  8. axure命令行_Axure变量详解
  9. RippleNet:知识图谱与推荐系统联合学习 CIKM 2018
  10. 排序算法_HeapSort
  11. debian如何安装wifi驱动_装机人员是如何离线为Win7、Win10、XP安装驱动的?小编告诉你…...
  12. 德宝怡高获批省大数据产业园
  13. CAD2019的使用
  14. 你需要理解一下“偏相关系数”及R语言实现
  15. 关于微擎模块,点击上传图片无反映问题。
  16. 服务器系统xb21cn,Office2010/2016精简三合一版(xb21cn-0901版)
  17. [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
  18. 智能无障碍轮椅——DX-BT04 2.0蓝牙模块
  19. ios苹果机系统 的1px边框不显示
  20. 分享数百个 HT 工业互联网 2D 3D 可视化应用案例

热门文章

  1. 团队程序设计天梯赛考点内容总结(15分以上题)
  2. 基于java springboot vue elementui超市管理系统源码
  3. DIY个人智能家庭网关—— 路由器篇之安装python
  4. 识别图片中的文字(ocr)
  5. TCP/IP:接口的一些总结
  6. 电脑系统重装时海康威视IVMS-4200客户端注意事项
  7. 适合国人的常用的Cydia源地址搜集
  8. ADI Blackfin DSP处理器-BF533的开发详解68:电子琴的小应用(含源码)
  9. mysql初始化失败解决方法
  10. 尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】