700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Unity】FBX Exporter 的使用 (To 3ds Max )

【Unity】FBX Exporter 的使用 (To 3ds Max )

时间:2022-01-09 23:12:49

相关推荐

【Unity】FBX Exporter 的使用 (To 3ds Max )

Unity版本:Unity .4.4f1

3ds Max 版本: (至少要 以上的版本)

1、导入FBX Exporter

在Unity中,点击Window→Package Manager,然后找FBX Exporter;

如果在左边的列表中找不到,则在Advanced中勾选 Show preview packages :

选中FBX Exproter,然后点Instailling进行导入。

之后选择Edit→Project Settings→Fbx Export,选择你的3d建模软件(3ds Max、Maya等)。我是用的3ds Max ,注意,这个插件只适用于 3dsMax 以上的版本。

然后点击那个 Install Unity Integration 这个按钮,选择文件路径未 3ds max 安装目录下的Plugins 文件夹中。(理论上你也可以选择你自己喜欢的文件夹,这个是选择脚本插件的位置)。第一次安装的时候会打开一次3ds max,完成之后关了就完事了。

这样就完成安装了。

1.1 故障排除:

我再安装插件的时候就遇到这个问题,反正3dsMax就弹出这么一个警告:

-- 无法转换:undefined 到类型 : String

有些离谱,我打开3dsMax的调试器看了下,那个脚本第一行就报错了。他的源代码(configureUnityFbxForMax.ms)如下:

temp = pathConfig.GetDir(#userStartupScripts) + "/" + UnityPluginScript_Name;deleteFile temp;copyFile UnityPluginScript_Source temp;maxIniFile = (GetMAXIniFile())unityCategory = "Unity"setINISetting maxIniFile unityCategory "UnityProject" UnityProjectsetINISetting maxIniFile unityCategory "UnityFbxExportSettings" UnityFbxExportSettingssetINISetting maxIniFile unityCategory "UnityFbxImportSettings" UnityFbxImportSettingsquitmax()

所以我只能理解为他自定义的宏UnityPluginScript_Name 出错了,没能转换成字符串。虽然我不会MaxScript,但是根据我的猜测,他这个脚本前三行的目的如下:

1、把一个叫 temp 的路径下的文件删除。

2、然后把UnityPluginScript_Source 这个路径下的文件复制到 temp 的路径下,起到覆盖的效果。

然后问题就是UnityPluginScript_Name 这个定义的变量没了嘛,那补齐理论上就OK了。理论上,他第一行定义的变量就没成功,那后续的什么UnityProject 啊UnityFbxExportSettings 啊应该也不行才对。

于是经过一些摸索,在你之前的选择的插件目录下找到configureUnityFbxForMax.ms ,在最前添加以下代码:

global UnityPluginScript_Source = @"D:/Autodesk/3ds Max /Plugins/Integrations/Autodesk/max/scripts/UnityFbxForMaxPlugin.ms";global UnityPluginScript_Name = @"UnityFbxForMaxPlugin.ms";global UnityProject = @"F:/Project/FantacyArtSource/";global UnityFbxExportSettings = @"D:/Autodesk/3ds Max /Plugins/Integrations/Autodesk/max/scripts/unityFbxExportSettings.ms";global UnityFbxImportSettings = @"D:/Autodesk/3ds Max /Plugins/Integrations/Autodesk/max/scripts/unityFbxImportSettings.ms";

这个是定义路径的,注意改成自己项目的路径。然后就可以不报错了。

1.2故障排除

在上一步的基础上如果还是有问题,在3dsMax中没有出现Unity 的选单,但是没有报错,那么按照以下步骤进行检查:

找到C:\Users\Administrator\AppData\Local\Autodesk\3dsMax\ - 64bit\CHS 文件夹下的3dsMax.ini 文件,打开看,里面能不找到如下图所示的部分:

就是这个带[Unity]标签的部分。如果有则说明configureUnityFbxForMax.ms 是成功运行了,但是3ds Max里没有正确显示的问题。后面我们就排除这个问题就OK了。

在3ds Max 中点击自定义 -> 自定义用户界面,然后选择菜单子选项。

然后在类别中找到Unity类别,然后分别拖动到 文件-导入和文件-导出中:

当然,你也可以给他分配一个快捷键,你也可以保存这个配置。

这样目前的故障就算排除完成了。

(Unity - New FBX Exporter in .2 | Page 13 - Unity Forum)

2、生成一个FBX Linked Prefab

之后选择我们要导出的物体的所有依赖项目,右键选择 Convert To FBX Linked Prefab ... :

之后会出现一个对话框:

需要注意的就是你的Fbx导出位置和Prefab导出位置。他会生成一个新的Prefab,一个新的FBX文件。然后新的Prefab就对应的FBX文件,只要对原FBX文件进行修改就可以在Unity里产生效果了。

其实只要有这个FBX文件,就可以在别的3D软件里操作他了。例如新的FBX文件进行修改之后再覆盖原FBX。但是这样就必须要在别的软件里不停地导入、导出,其实还是有些不方便。

3、在3ds Max里进行操作:

在3dsMax 中,文件→导入→Import an FBX from a Unity project and auto-configure for exproting . (怎么名字这么长……)

然后找到我们之前的项目文件,找到刚才我导出用的那匹马。之后工程如下:

可以看到左侧的面板上已经显示出了一个主模型、骨骼、以及一个UnityFbxExportSets的物体。之后我们在3ds max里面对齐进行一些操作,这里我给他加上一个角。

我这里就改了一下顶点,简单弄一弄就完事了。

然后选择导出,这里就只导出模型就完事了。

之后直接跳转到Unity,可以看到我们的模型已经变过了:

完成,这样就完成了Unity 和 3ds Max 的互相联动。

小结

其实这么一套操作我感觉其实……没有很大用处。

首先一般的工作流程是美术直接导出FBX到Unity的项目,程序引用这个FBX的数据。其实和他目前的流程是一样的,不过区别就是用FBX Exporter的话你不用一直在“导出”对话框里面选文件。你只要在3dsMax里面点一下导出就完事了,算了省了一步吧。如果美术小伙伴是刚上手的,他就不用熟悉项目结构,直观在3ds Max里面搞搞就可以了。

对程序员来说我觉得是比较鸡肋的,他那个Link Prefab其实可有可无,反正程序一般也会自己操作这个。而且他那个Link Prefab还容易出些Bug,这个就遇到了再说了。

然后我本来以为他是可以和Unity完美联动的,可以优化一些Fbx 和 3ds Max之间的导入,但其实并没有。如何你有一个FBX文件,你用FBX Exporter导出,和直接在3ds Max里面导入其实结果是一样的。比如你的骨骼都会变成辅助对象,虽然有蒙皮但其实并不能做动画。

不过对于游戏流程来说有个明显的加强,就是程序或者策划可以现在Unity用Cube之类的来搭建场景、模型之类的。然后直接把Unity里的GameObject导出FBX给美术做,美术一上手就知道了一些模型的大概形状、参数之类的。可以实现程序/策划 就白模快乐地搭起来,不用理会美术资源;同理,美术也可以有一部分工作和程序解耦。

总之,就是目前虽然有些鸡肋,还有Bug,但是肯定是有流程优化的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。