[CG從零開始] 3. 安裝 pyassimp 庫加載模型文件

assimp 是一個開源的模型加載庫,支持非常多的格式 , 還有許多語言的 binding,這里我們選用 assimp 的 python 的 binding 來加載模型文件 。不過社區主要是在維護 assimp 的 C++ 代碼,對于這些 binding 可能更新的不夠及時,比如 python 版本的就存在一些問題 。
assimp 的源碼
1. 安裝 pyassimp官方的編譯的指南,有些坑還是需要踩一下 。
pyassimp 只是 assimp 的一個 wrapper,所以計算上還必須有 assimp 的庫才行,還是免不了要去編譯 assimp 。
這里推薦采用 vcpkg 的進行管理,windows 上需要裝一下 visual studio,mac 需要裝一下 xcode , 這些軟件也是標配了 。我的電腦是 macOS,這里有個坑需要注意一下,vcpkg 這個默認編譯是靜態庫 .a,我們需要編譯動態庫,所以需要改一下 vcpkg 的編譯選項 。如下 vcpkg/triplets/x64-osx.cmake 中將如下選項改為 dynamic
set(VCPKG_LIBRARY_LINKAGE dynamic)依次執行以下命令即可 。
git clone https://github.com/Microsoft/vcpkg.gitcd vcpkg./bootstrap-vcpkg.sh./vcpkg integrate install./vcpkg install assimp等待編譯完成,即可在 vcpkg/packages/assimp_x64-osx/lib 中找到動態庫 .dylib 文件,windows 應該也是差不多的路徑 。然后可以用 pip 來安裝 pyassimp

注意! 這里有個坑,pyassimp 的 4.1.4 版本,現在默認最新版本,存在 bug,加載模型可能會隨機 crash,github 上有個 issue 在討論這個事情,大家目前的解決方案就是回退到 4.1.3 所以在安裝的時候,我們指定一下版本 。
pip install pyassimp==4.1.32. 調用 pyassimp API 加載模型這個時候如果直接調用加載 API 加載模型,會報找不到庫的錯誤:
raise AssimpError("assimp library not found")pyassimp.errors.AssimpError: assimp library not found因為 vcpkg 安裝的 assimp 的庫不在 pyassimp 的搜索路徑下 , 看了一下 pyassimp 搜索庫的路徑,基本上常用的庫的路徑他都搜索來,我們有兩種方法,1. 創建一個軟鏈接到搜索路徑中, 2. 將 assimp 庫的路徑加入環境變量 LD_LIBRARY_PATH 中 。
為了方便我創建一個軟鏈接到系統庫中
ln -s {你的 assimp 庫的路徑} /usr/local/lib然后我們執行下面的代碼,主要 path 換成你的模型文件,這下就可以找到庫文件了 。
import pyassimppath = "box.fbx"scene = pyassimp.load(path)print(scene.meshes[0].vertices.shape)3. 總結
  1. 用 vcpkg 編譯得到 assimp 的庫 , 注意修改編譯選項;
  2. 安裝 pyassimp 的 4.1.3 版本?。。?/li>
  3. 將 assimp 庫放到 pyassimp 可以找到的地方
【[CG從零開始] 3. 安裝 pyassimp 庫加載模型文件】

    推薦閱讀