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.pswp.cn/web/77201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77201.shtml
英文地址,請注明出處:http://en.pswp.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&…