最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
unity3d 导入模型问题
在使用 Unity3D 导入模型时,尤其是对于新手而言,常常会遇到诸多问题。本文将详细阐述关于 Unity3D 导入 3ds Max 模型时可能产生的若干问题及相应的解决技巧。按照官方说明,将 Max 模型导出为 FBX 文件再导入 Unity,似乎并不能解决所有问题。
1. X 轴向偏转问题
3ds Max 模型导入 Unity 后,会自动出现一个 X 轴 270 度的偏转。在 Unity 中旋转模型时,Y 轴参照方向始终朝上,而 X 轴和 Z 轴则以模型本身的局部坐标为准。当模型沿 X 轴旋转 270 度后,Z 轴会与 Y 轴重合。这就导致在使用程序控制方向时,旋转 Y 轴和旋转 Z 轴的效果相同,显然这并非我们期望的结果。
解决此问题的方法是,将 .max 文件导出为 .3ds 文件,然后再导入 Unity,而非按照官方建议导出为 .fbx 文件。
2. 材质问题
普通材质
在 3ds Max 里为模型赋予材质后,无论采用何种方式将模型导入到 Unity 中,模型都不会显示材质。不过,Unity 会自动生成这些材质的材质球。我们需要做的是重新设置贴图。若材质还有其他效果,例如光照贴图(Lightmap),则需要先选择正确的着色器(Shader),然后再设置贴图。
多重材质
目前,还不清楚如何在 Unity 中显示多重材质。因此,在制作模型时,需要先确定哪些部件应该合并在一起,哪些需要独立。以直升飞机为例,机身和螺旋桨应分为两个独立的部件,而不应将螺旋桨与发动机合并成一个部件,否则程序将无法对螺旋桨进行旋转操作。
3. 缩放因子问题
当模型导入到 Unity 中时,如果在 3ds Max 中未关注“单位”问题,模型在场景中的大小可能会与预期相差甚远。
Unity 中的 1 单位是 FBX 文件中 1 单位的 100 倍。因此,如果希望在 Unity 中 1 单位等于 1 米,那么在 3ds Max 和 Maya 中制作模型时,单位应设置为 1 厘米;若希望 Unity 中 1 单位等于 100 米,单位则应设置为 1 米;若希望 Unity 中 1 单位等于 1 厘米,单位可以设置为 0.1 毫米,或者在单位为 1 厘米的情况下将比例因子改为 1。
在 3ds Max 中,单位设置应如下进行(此处可根据实际准确设置步骤补充详细内容)。
模型导入的其他注意事项
物体朝向
物体的头要朝下。
部件命名
所有游戏中的车辆、飞机大致可分为两个部分,即机身和炮台或螺旋桨。机身应使用统一的名称,如“Body”;螺旋桨命名为“Airscrew”;炮台命名为“Barbette”。这样便于找到所有的机身部件,并将爆炸效果的火焰与机身连接起来。
模型尺寸比例
模型尺寸比例可参考前文提到的单位设置。此外,无论是飞机还是坦克,尺寸应以 10 米左右为基准,即 3ds Max 里的 10 格大小。
模型位置
模型要在场景中居中,否则导入后物体的质心位置可能会出现偏差。
命名规范
模型命名可以使用武器的实际名称。若不清楚实际名称,也可使用“Tank1”“Tank2”等命名方式。但需要注意的是,贴图名字和模型名字要保持一致,以避免出现混乱。