UE5 Assimp 自用

记录一下配assimp库到ue中的过程。因为想在ue里面实现一些几何处理(虽然ue好像有相关的geo的代码),遂配置了一下assimp。

1. 编译+整理生成自己所需要的文件。cmake编译,下载github 的官方的assimp-master,然后cmake都是默认的就行(我是vs2022,x64其他应该也行的,见图一)。具体可以参考这个大佬(下面的链接)。我是做到了大佬的第六步那边。

在编译完的结果中(我是保存到新建的一个assimp-build的文件夹中了)取bin、lib两个文件夹,分别提供dll和lib文件。然后那些头文件啥的得从原来的assimp-master库里面给include复制出来。(图二)。讲道理其他不用的在复制出这些文件夹后都可以删了好像。~-~

tip1:注意!!!编译生成的文件夹里,也有include文件夹(assimp-build/include),那里面一个config.h也得拿出来,不然后面会报错缺少该文件。

最后这一步结束我就得到了一个待会要去build.cs里面声明路径的一个很简单轻快的文件夹:图三。包含assimp-build中的bin、lib,assimp-master中的include(偷偷把config.h也放到其中去了)。

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

图一:

图二:

图三:

2. build.cs配置

代码主要参考这篇大佬:

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

按照1中的配置,我最后的cs代码如图四:

(请无视其他的库啥的,主要是path那几段,Geo是我的项目名,ThirdParty自己创的)

(ps,自己vs中用的release版本编译的,所以路径里面都带个release)

图四:

using System;
using System.IO;
using UnrealBuildTool;public class Geo : ModuleRules
{public Geo(ReadOnlyTargetRules Target) : base(Target){PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput","MeshDescription","StaticMeshDescription","MeshConversion","ProceduralMeshComponent","DynamicMesh","GeometryCore","GeometryScriptingCore","GeometryFramework","UMG",});PrivateDependencyModuleNames.AddRange(new string[] {  });string assimpPath= Path.Combine(ModuleDirectory, "../ThirdParty/assimp");string includePath = Path.Combine(assimpPath, "include");PublicIncludePaths.Add(includePath);//System.Console.WriteLine("assimp include path:" + includePath);string libPath = Path.Combine(assimpPath, "lib/Release/assimp-vc143-mt.lib");PublicAdditionalLibraries.Add(libPath);string dllPath = Path.Combine(assimpPath, "bin/Release/assimp-vc143-mt.dll");RuntimeDependencies.Add(dllPath);//System.Console.WriteLine("assimp dll path:" + dllPath);if (Target.Type == TargetType.Editor){string dllOutputPath = Path.Combine(ModuleDirectory, "../../Binaries", "Win64", "assimp-vc143-mt.dll");if (!File.Exists(dllOutputPath)){File.Copy(dllPath, dllOutputPath);}}}
}

3. 测试的话我用的也是procedural mesh+assimp(貌似还可以用dynamic mesh,和static mesh对应的,我还没搞明白)。同样参考下面这篇,但是copy代码的时候要注意。比方斯坦福中国龙那种model,里面没有normal?,很神奇,所以图五里面的HasNormals()要去掉,不然导入的模型会消失捏。

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

图五:

4. UE项目中的问题。一开始还能用,但是后来我要修改一下game mode啥的,新建的c++类在UE项目的编辑器中找不到,但通过VS代码debug-本地调试器生成的那个编辑器中找得到。查了半天不知道为啥(现在也不太清楚核心原因)。

从工程上解释下我个人的理解:

UE项目编辑器中右下角有个living coding啥的(图六),那玩意一点就报错。我猜是VS写的很好了,但是编辑器看不到里面的东西。living coding编译总会报这个错:

Assimp4UE.cpp.obj : error LNK2019: 
无法解析的外部符号 "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPEBD@Z),
函数 "void __cdecl std::_Xlen_string(void)" (?_Xlen_string@std@@YAXXZ) 中引用了该符号 
E:\UE\Projects\Geo\Binaries\Win64\UnrealEditor-Geo.patch_0.exe : fatal error LNK1120: 1 个无法解析的外部命令

我问了deepseek,说是md和mt的问题。但实际上assimp官方的cmake文件里就都是mt,而且我也不太敢改cmake文件。反正就是很麻烦。官方论坛也有人讨论living coding的问题,一大堆总之就是好像std的库和UE适配有点大病?最后的解决方式也很简单,图六那个旁边不是有3个点嘛,把启动实时代码编写关掉,重新点一下左侧的那个重新编译就ok了。我记得这个好像哪个视频里老师讲过,但是现在不记得了。

图六:

5. 都看到这了,推荐一个很好玩的纯蓝图的UE5 RPG项目教程:

https://www.youtube.com/playlist?list=PLiSlOaRBfgkcPAhYpGps16PT_9f28amXi

话说这年头找工作真不容易,有没有大佬指点一下,游戏、几何都可以做,工作方向仍然迷茫中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第18章:MCP在创作领域中的应用

第18章:MCP在创作领域中的应用 创意过程,无论是写作、绘画、音乐创作还是设计,往往充满了不确定性、迭代和灵感的迸发。传统 AI 在创意领域的应用常常局限于风格迁移、简单内容生成等。MCP 框架通过其对记忆、上下文和规划的整合,为 AI Agent 参与和辅助更深层次的创意活动…

电子电子架构 --- 主机厂视角下ECU开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【Agent】LangManus深度解析:AI自动化框架的对比与langgraph原理

LangManus深度解析:AI自动化框架的技术演进与实践 本文将带你深入探索LangManus这一AI自动化框架的核心技术与其基于langgraph的实现原理,并与OpenManus进行全面对比,助你掌握多智能体系统的前沿技术。 本文3万字,没有时间的话可以…

机器学习-08-推荐算法-案例

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则 参考 机器学习(三):Apriori算法(算法精讲) Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 23张图&#x…

OpenCV 图形API(63)图像结构分析和形状描述符------计算图像中非零像素的边界框函数boundingRect()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算点集或灰度图像非零像素的 upright(不旋转)边界矩形。 该函数计算并返回指定点集或灰度图像非零像素的最小 upright …

Redis ⑥-string | hash | list

string类型基本介绍 Redis 中的字符串,是直接按照二进制的方式进行存储的。也就是说,在存取的过程中,是不会做任何编码转换的。存的是啥,取的时候就是啥。 Redis 的这个机制,就使得 Redis 非常适合用来存储各种各样的…

星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。

星火燎原:大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星,凭借其卓越的性能和强大的功能&#xff0c…

通信算法之273 : 循环自相关函数和自相关函数

一、循环自相关函数定义与计算流程 ‌定义式‌: 循环自相关函数为时间平均自相关函数的傅里叶变换: Rxα(τ)=1T∫−T/2T/2Rx(t+τ2,t−τ2)e−j2παtdtRxα​(τ)=T1​∫−T/2T/2​Rx​(t+2τ​,t−2τ​)e−j2παtdt 其中,Rx(t,τ)Rx​(t,τ) 是信号的自相关函数,α为循…

使用 VMware 安装一台 Linux 系统之Centos

使用 VMware 安装一台 Linux 系统之Centos 想体验一下 Linux 的魅力,又不想在现有电脑上进行大刀阔斧的改动?使用 VMware 虚拟机是一个绝佳的选择。它能让你在 Windows 或 macOS 系统中轻松创建一个独立的 Linux 环境。本文将手把手带你完成从下载 VMwa…

uniapp-商城-36-shop 购物车 选好了 进行订单确认2 支付方式颜色变化和颜色滤镜filter

颜色滤镜&#xff0c;在好多网页都这样使用&#xff0c;滤掉彩色&#xff0c;显示黑白&#xff0c;这在一些关键的日子中都这样使用。 1、依然回到订单确认页面 看到支付的颜色了嘛&#xff1f; <view class"payType"><view class"box" :class&q…

gerbera文件转PCB文件-Altium Designer

gerbera文件转PCB文件-Altium Designer 1. 新建 CAM 文档2. 导入 Gerber 文件和钻孔文件导入 Gerber 文件导入钻孔文件&#xff08;NC Drill&#xff09; 3. 提取网络表4. 检查并设置层映射5. 导出为 PCB 文件 1. 新建 CAM 文档 打开 Altium Designer&#xff0c;执行以下操作…

Flask 请求数据获取方法详解

一、工作原理 在 Flask 中&#xff0c;所有客户端请求的数据都通过全局的 request 对象访问。该对象是 请求上下文 的一部分&#xff0c;仅在请求处理期间存在。Flask 在收到请求时自动创建 request 对象&#xff0c;并根据请求类型&#xff08;如 GET、POST&#xff09;和内容…

队列基础和例题

基础 #include <queue> #include <iostream>/*** 入队*/ void Test01() {std::queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(777);std::cout << "队列大小:" << q.size() << std::endl;std::cout << &q…

U-Mail邮件加速服务:全球链路加速,安全稳定收发

由于跨国网络拥堵、带宽不稳定等因素&#xff0c;导致海外用户在使用企业邮箱收发邮件时&#xff0c;经常出现邮件收发不畅的问题。针对这种情况&#xff0c;U-Mail正式推出了邮件加速服务&#xff0c;U-Mail邮件加速服务依托全球优质加速链路和转发集群服务器&#xff0c;为海…

从工作到娱乐:Codigger Desktop 让桌面环境更智能

在数字化时代&#xff0c;我们的桌面环境几乎成了第二个家。Codigger Desktop 就像是这个家的设计师&#xff0c;帮你打造一个既实用又舒适的数字空间。无论你是想放松娱乐&#xff0c;还是高效工作&#xff0c;Codigger Desktop 都能满足你的需求。 想象一下&#xff0c;你有一…

用python进行OCR识别

原文链接&#xff1a;https://www.bilibili.com/opus/1036675560501149699 我担心原作者删除&#xff0c;所以重新拷贝了一遍 1.下载tesseract 链接&#xff1a;https://github.com/UB-Mannheim/tesseract/wiki 这里示例安装最新版本 点击下载tesseract安装包 2.安装tess…

区间和数量统计 之 前缀和+哈希表

文章目录 1512.好数对的数目2845.统计趣味子数组的数目1371.每个元音包含偶数次的最长子字符串 区间和的数量统计是一类十分典型的问题&#xff1a;记录左边&#xff0c;枚举右边策略前置题目&#xff1a;统计nums[j]nums[i]的对数进阶版本&#xff1a;统计子数组和%modulo k的…

PCB 制造流程分步指南

最近的一次PCB打板经历&#xff0c;板厂工程人员告知丝印偏到焊盘上了&#xff0c;内部让我评估是否可以继续贴片。 于是发一期文章&#xff0c;介绍一下PCB制造流程。 PCB制造工艺 PCB设计获得批准且制造商收到最终制造文件后&#xff0c;PCB制造或生产就开始了。此时&…

python实现简单的UI交互

文章目录 1. 基础打印 覆盖同一行2. 多行动画效果3. 彩色文本&#xff08;Windows/macOS/Linux&#xff09;4. 输入交互5. 异步输入与非阻塞显示6. 高级控制台 UI 库 可以通过控制台打印实现简单的「伪UI交互」&#xff0c;尤其适合展示进度、动态文本或轻量级状态反馈。以下是…

AI与思维模型【77】——PDCA思维模型

一、定义 PDCA思维模型是一种用于持续改进和优化工作流程、项目实施以及问题解决的科学管理方法。它由四个英文字母组成&#xff0c;分别代表计划&#xff08;Plan&#xff09;、执行&#xff08;Do&#xff09;、检查&#xff08;Check&#xff09;和处理&#xff08;Act&…