当前位置:首页|资讯

[UE5 Runtime Editor]1.运行时模型资源导入(上篇)

作者:埃罗芒阿Sensal发布时间:2024-10-21

前言:

随着数字孪生行业发展,对于数字孪生项目的需求不再仅限于界面酷炫,场景好看.对可编辑性的需求越来越强烈.如坐标信息编辑,灯光后处理调节,资源导入替换等编辑功能在未来将会成为数字孪生项目的标配.

本篇将讲解运行时模型资源导入(Runtime Mesh Asset Import)

效果演示视频:UE5 Runtime模型导入示例

一. 引入assimp第三方库


1.下载assimp第三方库

本文提供已编译好的能够直接在UE引擎中使用的第三方库

链接: https://pan.baidu.com/s/1JhIDyM-gS56PKe0bUEO2hg?pwd=vAV8 提取码: vAV8

解压后会得到一个名为ThirdParty的文件夹,拷贝至 你的项目/Source/ 路径下

想要获取assimp源码的可以通过下面的连接,下载源码后使用cmake构建得到源码,这里不再过多赘述

assimp github链接:https://github.com/assimp/assimp


2.导入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);




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1