LearnOpenGL Assimp

模型加載庫

現(xiàn)在市面上有一個很流行的模型加載庫,叫做Assimp,全稱為Open Asset Import Library。Assimp可以導(dǎo)入幾十種不同格式的模型文件(同樣也可以導(dǎo)出部分模型格式)。只要Assimp加載完了模型文件,我們就可以從Assimp上獲取所有我們需要的模型數(shù)據(jù)。Assimp把不同的模型文件都轉(zhuǎn)換為一個統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),所有無論我們導(dǎo)入何種格式的模型文件,都可以用同一個方式去訪問我們需要的模型數(shù)據(jù)。

當(dāng)導(dǎo)入一個模型文件時,即Assimp加載一整個包含所有模型和場景數(shù)據(jù)的模型文件到一個scene對象時,Assimp會為這個模型文件中的所有場景節(jié)點、模型節(jié)點都生成一個具有對應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),且將這些場景中的各種元素與模型數(shù)據(jù)對應(yīng)起來。下圖展示了一個簡化的Assimp生成的模型文件數(shù)據(jù)結(jié)構(gòu):

Assimp
  • 所有的模型、場景數(shù)據(jù)都包含在scene對象中,如所有的材質(zhì)和Mesh。同樣,場景的根節(jié)點引用也包含在這個scene對象中
  • 場景的根節(jié)點可能也會包含很多子節(jié)點和一個指向保存模型點云數(shù)據(jù)mMeshes[]的索引集合。根節(jié)點上的mMeshes[]里保存了實際了Mesh對象,而每個子節(jié)點上的mMesshes[]都只是指向根節(jié)點中的mMeshes[]的一個引用(譯者注:C/C++稱為指針,Java/C#稱為引用)
  • 一個Mesh對象本身包含渲染所需的所有相關(guān)數(shù)據(jù),比如頂點位置、法線向量、紋理坐標(biāo)、面片及物體的材質(zhì)
  • 一個Mesh會包含多個面片。一個Face(面片)表示渲染中的一個最基本的形狀單位,即圖元(基本圖元有點、線、三角面片、矩形面片)。一個面片記錄了一個圖元的頂點索引,通過這個索引,可以在mMeshes[]中尋找到對應(yīng)的頂點位置數(shù)據(jù)。頂點數(shù)據(jù)和索引分開存放,可以便于我們使用緩存(VBO、NBO、TBO、IBO)來高速渲染物體。(詳見Hello Triangle
  • 一個Mesh還會包含一個Material(材質(zhì))對象用于指定物體的一些材質(zhì)屬性。如顏色、紋理貼圖(漫反射貼圖、高光貼圖等)

所以我們要做的第一件事,就是加載一個模型文件為scene對象,然后獲取每個節(jié)點對應(yīng)的Mesh對象(我們需要遞歸搜索每個節(jié)點的子節(jié)點來獲取所有的節(jié)點),并處理每個Mesh對象對應(yīng)的頂點數(shù)據(jù)、索引以及它的材質(zhì)屬性。最終我們得到一個只包含我們需要的數(shù)據(jù)的Mesh集合。



Mac 系統(tǒng)導(dǎo)入Assume

官方方式 : 通過Assimp的下載頁面下載最新的版本, 然后通過CMake的方式來生成.

Mac方式
通過 brew install assimp 命令行的方式直接安裝在/usr/local/Cellar目錄下.

現(xiàn)在安裝的最新版本是5.0.1

跟加載glfw庫一樣, 在Header Search Paths添加path和dylib


正常能加載頭文件就沒問題了

#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>

如果有遇到 library not found for -lminizip
github參考:https://github.com/assimp/assimp/issues/2553
brew install minizip



網(wǎng)格(Mesh)

用建模工具構(gòu)建物體時,美工通常不會直接使用單個形狀來構(gòu)建一個完整的模型。一般來說,一個模型會由幾個子模型/形狀組合拼接而成。而模型中的那些子模型/形狀就是我們所說的一個網(wǎng)格。例如一個人形模型,美工通常會把頭、四肢、衣服、武器這些組件都分別構(gòu)建出來,然后在把所有的組件拼合在一起,形成最終的完整模型。一個網(wǎng)格(包含頂點、索引和材質(zhì)屬性)是我們在OpenGL中繪制物體的最小單位。一個模型通常有多個網(wǎng)格組成。

參考 :
Mac OS下安裝assimp
opengl模型加載-assimp編譯(mac)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容