前言:
随着数字孪生行业发展,对于数字孪生项目的需求不再仅限于界面酷炫,场景好看.对可编辑性的需求越来越强烈.如坐标信息编辑,灯光后处理调节,资源导入替换等编辑功能在未来将会成为数字孪生项目的标配.
本篇将讲解运行时模型资源导入(Runtime Mesh Asset Import)
效果演示视频:UE5 Runtime模型导入示例
1.下载assimp第三方库
本文提供已编译好的能够直接在UE引擎中使用的第三方库
链接: https://pan.baidu.com/s/1JhIDyM-gS56PKe0bUEO2hg?pwd=vAV8 提取码: vAV8
解压后会得到一个名为ThirdParty的文件夹,拷贝至 你的项目/Source/ 路径下
想要获取assimp源码的可以通过下面的连接,下载源码后使用cmake构建得到源码,这里不再过多赘述
assimp github链接:https://github.com/assimp/assimp
(1)将ThirdParty添加到IDE中
以Rider为例,在Source右键->添加->现有条目
在对话框中选择ThirdParty
(2)build.cs引入ThirdParty
下面是代码,复制黏贴记得把项目名改成自己的
(3)测试assimp引入是否成功
在任意.h文件中,包含头文件 #include <assimp/scene.h>
尝试跳转到该头文件,能投跳转成功的话则表示引入成功
二.创建资源导入助手类(AssetImportHelper)
1.创建一个空的C++类,名为AssetImportHelper
2.包含头文件#include <assimp/scene.h>
3.build.cs中引入ProceduralMeshComponent模块
该模块为程序化网格组件,用于将导入的模型数据创建成模型
4.AssetImportHelper.h中添加下面代码
(1)前向声明struct FProcMeshTangent
该结构体用于存储模型切线数据
(2)创建结构体FModelData用于存储模型数据
(3)在AssetImportHelper类中声明下面的成员函数
5.AssetImportHelper.cpp中
(1)包含以下头文件
(2)实现成员函数
bool ExtractModelInfo(FString FileName, TArray<FModelData>& OutModelInfo);
void ProcessNode(aiNode* Node, const aiScene* Scene, TArray<FModelData>& MeshDatas);
bool ExtractMeshInfo(aiMesh* Mesh, FModelData& MeshData);