近期热门
粉丝2289
关注 1
获赞 8499
让美术所见即所得(转)

[unity3d其他] 让美术所见即所得(转)

[复制链接]
1331 1 2 19 5年前 举报

前言
美术经常会在DCC与Unity间联调工作,特别是3D软件,在不借助外力的情况下,步骤很繁锁,严重影响工作效率,那有没有什么办法可以解决这个问题呢?

答案就是FBX Exporter,这是Unity官方出的一款插件,目的就是要打通美术人员与3D软件间的联调方式,做到让美术人员可以所见即所得!


FBX Exporter
FBX Exporter可以打造良好的3D软件与Unity间的往返工作流,这里的3D软件包括Maya与3ds Max。

主要的功能如下:
  • 将Unity工程中的资源导出FBX格式,供3D软件读取。
  • 将3D软件中的资源与Unity中的做好关联,然后即可所见即所得。


版本要求:
  • Unity2018.3及以上版本
  • Maya2017及以上版本
  • 3ds Max2017及以上版本


安装FBX Exporter
通过Window/Package Manager打开package安装器
1.jpg
从中选择FBX Exporter进行安装
2.jpg


从Unity中导出FBX
选中需要导出的对象,然后从菜单栏中选择GameObject/Export To FBX...
3.jpg

分两种情况:
  • 选中Project面板中的对象
  • 选中Hierarchy面板中的对象


可导出所选对象以及所有子对象层级为一个FBX文件,比如可将多个FBX组合起来导出成一个FBX.
另外,特别说明下,在Unity中通过ProBuilder制人和的模型的就可以通过这种方式导出进3D软件进行细化加工,关于Terrain,由于是.asset格式,而目前工具并不支持.asset文件的导出功能。

支持导出的格式:
  • GameObject (对象层级与变换属性)
  • Mesh (静态网格)
  • SkinnedMeshRenderers (蒙皮网格, 有一定的限制)
  • Material (材质球)
  • Textures (纹理)
  • Cameras (摄相机)
  • Lights (灯光)
  • Contraints (约束)
  • Animation (动画)
  • Blendshapes (做表情动画用的)


导出模型时支持的数据:
  • Normals(法线)
  • Binormals(副法线或者叫副切线)
  • Tangents(切线)
  • Vertex Colors(顶点色)
  • UVs(8套UV,如果存在的话)
  • Quads or Triangles(四角面或者三角面)




3D与Unity中联调
3D软件中的集成
在进行畅通无阻的联调之前,我们需要在3D软件中集成一个工具,步骤很简单,按如下操作(以3ds Max为例):

打开设置界面Edit>Project Settings>Fbx Export
4.jpg
将3D Application设置为你本地的3D软件,比如我这里的3ds Max2018,如图中步骤1所示。然后点击图中的步骤2所示的按钮即可(在弹出的面板中选择你希望工具安装的目录位置,不一定非得是3D软件的插件目录,然后稍微等待后即可)

导入Unity中的FBX到3dsMax中
打开3dsMax,然后选择File>ImportAssetOptions>Import form Unity,由于我们是在某个Unity工程中给3dsMax安装的工具,所以3dsMax默认会打开我们之前的工程目录,还是很方便的。
5.jpg
如果是3dsMax2017版本的话,导入选项在这里:Unity>Import
然后从弹出的对话框中选择需要导入的FBX,可按住Shift或者Ctrl多选。
6.jpg
导入完成后, 除了导入的模型以外, 还会自动生成一个叫做UnityFbxExportSets的dummy,这个dummy下又存储了每个导入模型的一些信息,而这个信息就是保证我们3D软件与Unity进行联调的关键(里面存储了导入路径以及文件名,还有动画路径及文件名)。

导出FBX到Unity
当我们在3D软件中修改到一定阶段想在Unity中看下效果时, 就可以通过File>Export导出了。
7.jpg
有两种方式:
  • Export (同时导出模型与动画)
  • Export Model Only (仅导出模型)


导出前需要选择导出的对象,如果是多个就多选,导出后他们会各自覆盖到各自的FBX上面,并不会变成一个FBX.
导出集的设置
如果只是对模型进行点面体级别的修改,那正常操作即可,如果是需要另外加一个模型的话那在导出前就要设置一下了,否则新加的模型不会被导出到相应的FBX中去。
8.jpg
针对这种情况,首先先选中新添加的模型,然后点击图中的1,打开集合设置界面,在其中选择你希望添加到的集合项,然后点击加号按钮。接下来正常导出即可。

导出快捷设置
通过File>Export的形式导出还是略显不便,这时我们可以把导出命令做成快捷键或者拖出来变成一个按钮,每次需要时直接点击下即可。

菜单栏选择Customize > Customize User Interface...打开自定义界面窗口
9.jpg
切换到Toolbars标签, 从中找到Export models and animation to Unity或者Export models to Unity
10.jpg
将你需要的命令拖到工具栏上,然后松开,即可生成一个命令按钮。
11.jpg
然后我们再按钮上面点击右键,从中选择Edit Button Appearance... 从中选择一个自己满意的按钮。
12.jpg


FBX与Prefab的关联
在3D软件导出FBX到Unity中后,默认情况下,我们用此FBX生成的Prefab,会出现下次从3D导出后信息被覆盖的情况,比如增加或者删除了模型,Prefab中不会自动更新,这肯定不是我们希望看到的。

解决这个问题我们需要用到FBX Exporter提供的另一个功能:FBX Linked Prefabs
首先我们选中导进Unity中的FBX,然后右键从中选择Convert To FBX Linked Prefab...
13.jpg
在弹出的对话框中设置下路径等相关信息,并点击Convert即可.
14.jpg
至此,你从3D软件中再次导出时就会自动同步到Prefab上去了,同时Prefab上的Override也会保留,完美!


脚本上的支持
如果你有工具开发需求的话,我们也可以从代码层面去调用FBX Exporter 示例代码如下:
using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Formats.Fbx.Exporter;

public static void ExportGameObjects(Object[] objects)
{
    string filePath = Path.Combine(Application.dataPath, "MyGame.fbx");
    ModelExporter.ExportObjects(filePath, objects);

    // ModelExporter.ExportObject can be used instead of
    // ModelExporter.ExportObjects to export a single game object
}

2
点赞
0
打赏
19
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论1
您需要登录后才可以回帖 登录

赞赞赞赞赞赞赞赞赞赞赞
5年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器