UE4模型整体导入流程
序言
在工业开发项目流程中,往往有复杂模型导入,其中包含了大量的细碎零件与模型,将其导入后手动摆放位置在实现上是不合理的
那么如何在最短时间内导入模型并生成出可供开发使用的蓝图对象,就是本文用来解决的问题
首先,我们一般导入资源有3种方式
- 通过
Content Browser
的Import
或者拖放FBX文件到文件目录窗口中 - 通过
Datasmith
来导入模型整体资源 - 通过
Import Into Level
来整体导入模型资源
那么接下来我们依次来讲解导入的方式
UE4正常导入模型
首先我们将模型拖进UE4的Content Browser
中,会弹出下图窗口,导入参数参考可以查阅
[FBX导入选项参考] https://docs.unrealengine.com/zh-CN/Engine/Content/Importing/FBX/ImportOptions/index.html
接下来点击它的Import All
可以导入模型到UE4项目中,但是我们可以看到模型的层级关系与位置信息全部丢失,UE4将模型拆分为3个独立的StaticMesh
来进行了导入
这明显不是我们想要的效果,这样子导入的模型还需要后期再合并为蓝图对象再手动调整位置,在工业模型中遇到大量的层级与模型时会根本无从下手,如果我们需要导入后仍然能保留物体的位置正确,则需要改动模型的轴心为世界的(0,0,0)点,这样会导致模型的轴心不在物体上,虽然能保持物体的位置正确,但是无法保证物体的旋转或者交互时的正确性.
通过DataSmith来导入模型
在使用DataSmith
来导入模型之前,我们需要从Maya或者3DMax中,导出模型的.udatasmith
文件,我们这里已经准备了一个模型文件,就不再赘述安装插件与导出文件的流程了
首先在导入datasmith
模型文件之前,我们需要打开UE4的Datasmith Content
插件
在插件导入并重启引擎之后,会在图标栏添加一个DataSmith的按钮
点击选中我们需要导入的模型,随后选择模型导入的路径,再选择完我们需要导入的内容,就可以在场景中获得由生成的模型排列了
我们确实可以看到模型被正确的导入了进来,且模型的导入层级与相对位置与我们在建模时摆放的位置相同,且导入文件的轴心都处于正确的位置
但是模型的确还是通过Level中的排列来实现的,且无法将场景中的层级排列信息导入到蓝图当中,适用于场景等无交互逻辑的模型导入.DataSmith
甚至能导入相机,光照等信息,更适用于场景整体导入.
DataSmith
的具体工作流可以参考官方文档:虚幻Datasmith
通过Import Into Level导入模型到场景
明显前两者的导入流程都无法支持我们的开发工作,于是我们考虑使用第三种方式来导入模型,首先我们需要整理一下需求
- 导入模型需要保持层级与相对位置,但需要每个模型都拥有正确的轴心
- 导入模型应易于转化为蓝图对象,使其拥有独立逻辑
- 导入模型需要易于修改与展示
那么我们就尝试使用Import Into Level
来导入模型,Import Into Level
的工作流可以参考官方文档:Import Into Level
与DataSmith
相似,Import Into Level
作为导入场景的早期版本,同样支持导入的资源有
- Static mesh
- Skeletal Mesh
- Animations
- Materials
- Textures
- Rigid Mesh
- Morph Targets
- Cameras (no animation)
- Lights
首先我们准备好一个模型文件后,打开UE4的File-Import Into Level选单,然后选择我们需要导入的模型,之后会跳出如下的窗口让你选择模型的放置路径
选择完模型的放置路径后,我们可以得到这样的一个窗口
图中有四个选单,分别为Scene,Static Meshes,Skeletal Meshes以及Materials,如果我们需求整体导入模型的情况,只需要用到Scene与Static Meshes,首先我们可以看到下面被分为了两个面板,在左边的面板中我们可以看到模型的层级关系与每个mesh的命名,也可以决定哪些模型导入哪些模型不导入,在右边的面板中我们可以对模型的导入进行一定的配置,需要注意的是,我们在这里需要注意3个选项
-
Import as Dynamic
:导入后的模型在生成Actor后的类型为Dynamic而不是static,便于后续进行动态的操作 -
Hierarchy Type
:导入模型的层级类型,在该选项下有3个选项
-
Create Level Actors
:模型导入后直接摆放入场景,不包含层级关系,也不支持重新导入
-
Create One Actor With Components
:创建一个空的Actor,包含有在Actor的detail中添加的Static Component,这种方式也不支持层级化重新导入
-
Create One BluePrint Asset
:创建一个蓝图对象,将模型导入并生成蓝图,在蓝图中生成相应的Static Mesh Component
,并按层级放置,这种方式支持层级化重新导入
点击导入后,会打开一个生成的Actor的蓝图界面,模型文件会以正确的层级与位置关系来生成在蓝图中
-
Bake Pivot in Vertex(实验性功能)
:对每个模型烘焙独立的轴心,如果不勾选,轴心会归零到蓝图的根节点轴心处,每个独立的mesh中的轴心将不在物体身上,来自任何DCC软件(如maya,3Dmax)所定义的轴心将被归零,如果勾选,则来自于DCC的轴心将被当做模型的轴心点
来自Scene
选单的配置就只有这3个点,接下来我们需要去配置Static Meshes
选单
在Static Meshes
选单中,我们同样可以选择被导入的模型,但是在左边无法看到模型的层级关系,在这个选单中我们有一个需要注意的参数
Normal Import Method
:法线导入方式,我们需要在这一项选择Import Normals and Tangents
或者Import Normals
才能保证模型法线的正确导入,如果选择Compute Normals
则会导致平滑组丢失等问题.
完成上述步骤后,只要点击导入就可以将模型导入到正确的路径下了,如果在Scene选单中的Hiarerchy Type
中选择了Create One BluePrint Asset
,则还会在文件目录结构中生成一个Actor蓝图文件,但是这种做法产生的弊端是无法灵活的修改单个模型文件,如果需要美术修复单个模型,则需要在修复个体模型之后将模型重新整体导出并以同名模型重新整体导入,步骤相对冗杂.
模型导出设置
美术在导出模型的时候需要选择Z轴向上的轴向方式,且导出单位需要取消自动勾选并选择为厘米单位
总结
上述的三种模型导入模式各有优劣,我们拿一个图表来进行展示
| 能否导入层级关系与位置信息 | 能否较为对个体模型灵活的进行后续开发 | 能否较为灵活的进行模型的修复 |
正常导入 | × | √ | √ |
DataSmith | √ | × | √ |
Import Into Level | √ | √ | × |
综上所述,在各自的场景中,三种方式各有优劣,在不同的场景中我们需要使用不同的导入模式来进行操作,例如导入复杂场景时使用DataSmith
,导入单个模型时使用正常的导入即可,然而在导入复杂层级关系的模型时则需要用到Import Into Level
的导入模式,需要统筹考虑后续开发再进行选择.