[英]Use LoadModelFromMemoy in ASSIMP to load obj model with no texture loaded
我目前正在處理一個 Android 項目,我需要在 Android 平台上使用 ASSIMP 加載 .obj 文件。 我的實現方式是先使用 AssetManager 將 .obj 文件加載到 memory,然后使用importer.ReadFileFromMemory()
function 創建aiScene
object。我已經設法導入所有頂點數據,但我發現紋理丟失。 我實際上是從 ASSIMP GitHub 頁面上讀到的,其中提到ReadFileFromMemory()
不會跨文件讀取內容,因此我認為它沒有讀取應用紋理的 .mtl 文件。 我想使用importer.ReadFile()
function,但我不知道如何在 Android 平台上使用它。 有人有建議嗎?
附件是我對loadModelFromMemory
的實現,類似於loadModel
的 loadModel。
void Model::loadModelFromMemory(const void* pbuffer, size_t pLength)
{
Log::Message("Enter loadModelFromMemory", LOG_INIT);
// read file via ASSIMP
Assimp::Importer importer;
const aiScene* scene = importer.ReadFileFromMemory(pbuffer, pLength, aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs | aiProcess_CalcTangentSpace);
// check for errors
if(!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode) // if is Not Zero
{
Log::Message(strcat("ERROR::ASSIMP::", importer.GetErrorString()), LOG_ERROR);
return;
}
// process ASSIMP's root node recursively
processNode(scene->mRootNode, scene);
}
我曾嘗試使用ReadFile
,但它不適用於 Android 上下文。 我還嘗試使用MemoryIOWrapper
提供的 MemoryIOWrapper,但不知道從哪里開始。
有多種方法可以實現這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.