[虚幻引擎][UE][C++]Assimp库安装编译,UE_Assimp插件安装使用,各种三维格式转换

写在前面

1.作者碎碎念

这篇文章是笔者本人查阅资料汇总成的,具体细节上可能会有所疏漏、不正确、过时的内容,大家看到了可以评论让我改正,欢迎大家指正!也希望大家多多关注我!
此教程是由UE5.0.3制作而成。

2.结果

(待更)
截图

视频演示

1.需要准备的软件

01.CMAKE(3.25版本https://cmake.org/download/
在这里插入图片描述
选这个选项是因为好安装。其他选项也可以。
02.Git(2.37.1.64https://git-scm.com/downloads
03.VS(本文用的是VS2022)
自己找教程安装

2.Assimp库编译步骤

视频演示链接地址:(待更)

1.下载Assimp库源码:https://github.com/assimp/assimp/releases
在这里插入图片描述
2.用CMAKE编译一下。
请添加图片描述
稍等一会
请添加图片描述
请添加图片描述
3.对比一下勾选的选项,一般情况下默认。
请添加图片描述
请添加图片描述

4.Generate

请添加图片描述

请添加图片描述

5.打开Build文件夹下的Assimp.sln,选Release,重新生成方案。

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
得到如下结果:
请添加图片描述
6.按照如下配置config.h文件。
请添加图片描述
请添加图片描述
请添加图片描述

3.UE_Assimp插件的安装

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
网不好就会失败多次
请添加图片描述
请添加图片描述
多刷新刷新GitHub源码页面
请添加图片描述
下载完成,检查一下是否成功
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
生成解决方案
请添加图片描述
运行
请添加图片描述

4.UE_Assimp插件样例使用

请添加图片描述
请添加图片描述

请添加图片描述
(PS:此蓝图之前是在blueprintUE网站复制而来,文末附有地址,科学上网。但之后此插件的作者放了一个DEMO上来,链接如下:https://github.com/irajsb/UE4_Assimp/releases/tag/v5.2.5
在这里插入图片描述

(PS:截止2022.11.18,此蓝图无法准确实现各种格式模型导入到UE场景)
(PS:11.19,此蓝图更改,模型导入无分散现象,材质存在一丢丢的小问题。)
(PS:截止2022.12.2如果导入模型没有材质,经本人多次实验,有可能是因为模型的问题,本人实验的模型都是网上扒拉下来的,可能不具有唯一性,建议如果必须需要此插件完成功能可以尝试更改模型的格式,据我所知,此插件的作者推崇glb格式,你也可以尝试下其他的格式,如果你认为稳定的话。比如fbx,3ds,obj等常用且此插件支持的格式。)

5.Assimp库各种三维格式转换小程序

注:参数在命令行中改变,且为双斜杠。
且!截止2022.12.2,据本人所了解,此小程序存在BUG!不确定是代码问题还是插件问题,有些格式会转失败
或许你可以问问此源码的作者,地址附在文末。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

记住3个参数之间有空格

直接上源代码:

#include <iostream>
#include <assimp\Importer.hpp>
#include <assimp\scene.h>
#include <assimp\postprocess.h>
#include <assimp\Exporter.hpp>

void FindMeshInfo(const aiScene *scene,aiNode *node) {
    std::cout << node->mName.C_Str() << std::endl;
    if (0==node->mNumMeshes) {
        return;
    }
    auto mesh = node->mMeshes;
}
void FindMesh(const aiScene *scene, aiNode *node) {
    FindMeshInfo(scene,node);
    for (unsigned int m = 0; m < node->mNumChildren;++m) {
        FindMesh(scene,node->mChildren[m]);
    }
}

int main(int argc, char* argv[])
{
    Assimp::Importer mImporter;
    const aiScene* mScenePtr = mImporter.ReadFile(argv[1], aiProcess_Triangulate);
    if (nullptr ==mScenePtr) {
        std::cout << "ERROR!nullptr==mScenePtr" << std::endl;
        return -1;
    }
    auto rootNode = mScenePtr->mRootNode;
    FindMesh(mScenePtr,rootNode);
    Assimp::Exporter mExporter;
    mExporter.Export(mScenePtr, argv[2], argv[3]);
    std::cout << "SUCCESS!The conversion is successful." << std::endl;
    return 0;
}

参考:
1.https://github.com/assimp/assimp
2.https://github.com/irajsb/UE4_Assimp
3.https://github.com/irajsb/UE4_Assimp/wiki/How-To-Build
4.https://blueprintue.com/blueprint/inhg2zu3/#comment-1573
5.https://www.jianshu.com/p/4f3a1271ce0b
6.https://blog.csdn.net/u012278016/article/details/105788231
7.https://zhuanlan.zhihu.com/p/514558219
8.https://github.com/irajsb/UE4_Assimp/releases/tag/v5.2.5

-----------------------------------------------未整格式待整--------------------------------------------------

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值