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

        Unity版本:Unity 2019.4.4f1

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

1、导入FBX Exporter

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

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第1张图片

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

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第2张图片

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第3张图片

        这样就完成安装了。

1.1 故障排除:

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

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第4张图片

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

temp = pathConfig.GetDir(#userStartupScripts) + "/" + UnityPluginScript_Name;
deleteFile temp;
copyFile UnityPluginScript_Source temp;

maxIniFile = (GetMAXIniFile())
unityCategory = "Unity"
setINISetting maxIniFile unityCategory "UnityProject" UnityProject
setINISetting maxIniFile unityCategory "UnityFbxExportSettings" UnityFbxExportSettings
setINISetting maxIniFile unityCategory "UnityFbxImportSettings" UnityFbxImportSettings

quitmax()

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

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

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

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

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

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

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

1.2故障排除

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

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

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

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第5张图片

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第6张图片

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

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

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

2、生成一个FBX Linked Prefab

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第7张图片

        之后会出现一个对话框:

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第8张图片

        需要注意的就是你的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 . (怎么名字这么长……)

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第9张图片

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第10张图片

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第11张图片

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

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第12张图片

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

【Unity】FBX Exporter 的使用 (To 3ds Max 2018)_第13张图片

        完成,这样就完成了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,但是肯定是有流程优化的。

你可能感兴趣的:(游戏开发,Unity,3ds,Max,Unity,3dsmax,FBX,Exporter,工作流)