UE导入导出FBX的打组问题
前言
已知UE导出FBX模型以后, 会将Mesh和Joints打成一个组, 如下图

这个组的存在会影响美术工作, K动画时是需要将这个组给删掉的, 也就是模型和骨架与组接触父子关系, 如果组有相对变换, 那么这个时候模型可能还会发生旋转
比如下图

所以现在的问题是如何有效的解决这个问题?
先大概看一下源码
导出流程
主要流程就从这里开始



第一步就会创建一个MeshNode, 用模型本身命名,然后把这个Node作为Root, 到
1  | ExportSkeletalMeshToFbx 中去创建MeshNode和SkeletonNode  | 
那么导出流程如果要改成不打组, 那么很简单, 在最前面把Scene的RootNode作为Mesh和Skeleton的Root传递过去就可以了
如下图

可以直接在导出数据配置中加一个选项, 方便选择

导入流程
导入流程稍微复杂一点, 看一下调用栈

以下图的模型为例

会递归的查找整个树, 找到最后的Root节点, 这里大概梳理一下FbxSdk中 这个模型的层级关系,

**
每个FbxNode都拥有一个FbxNodeAttribute**
可以用此来定义是什么类型的Node, 所以这里引擎有个规则

简单看就是要一直找到当前节点的ParentNode等于Scene的RootNode为止
所以需要改动的就是这里判断一下最上面的节点是不是
1  | FbxNodeAttribute::eSkeleton  | 
如果不是骨骼那么就不当做骨架创建
简单修改如下

因为要公开参数, 这里折腾了一段时间
**
**
首先需要在我们获取的
1  | FBXImportOptions  | 
中添加一个变量, 这个变量要从ImportUI类中获取, 这个类就是弹出来的Slate界面的Object对象
因为上面获取RootNode的时候获取不到UI类, 只能通过Options类获取参数, 所以需要在两者内都定义一个变量
最简单的方法就是在读完配置真正导入File之前读取一下UI的配置

另外还可以在
1  | void ApplyImportUIToImportOptions(UFbxImportUI* ImportUI, FBXImportOptions& InOutImportOptions)  | 

最终效果
