介紹如何使用 ITK 的 MeshFileReader 讀取 OBJ 網格檔案。
若在 Python 中,可以使用 itk
模組的 MeshFileReader
來讀取 OBJ 檔案:
import itk # 設定 Mesh 資料型態(浮點數、維度 3) meshType = itk.Mesh[itk.F, 3] # 建立 Mesh Reader meshReader = itk.MeshFileReader[meshType].New() # 設定 MeshIO meshIO = itk.OBJMeshIO.New() meshReader.SetMeshIO(meshIO) # 指定 OBJ 檔案名稱 meshReader.SetFileName('my_mesh.obj') # 實際讀取 OBJ 檔案 meshReader.Update() # 取得 Mesh 內容 mesh = meshReader.GetOutput()
若要在 C++ 讀取 OBJ 檔案,可以使用 itk::MeshFileReader
:
#include <itkMesh.h> #include <itkMeshFileReader.h> int main() { // 設定 Mesh 資料型態(浮點數、維度 3) constexpr unsigned int Dimension = 3; using CoordinateType = float; using MeshType = itk::Mesh<CoordinateType, Dimension>; // 建立 Mesh Reader using ReaderType = itk::MeshFileReader<MeshType>; ReaderType::Pointer reader = ReaderType::New(); // 指定 OBJ 檔案名稱 reader->SetFileName("my_mesh.obj"); // 實際讀取 OBJ 檔案 reader->Update(); // 取得 Mesh 內容 MeshType::Pointer mesh = reader->GetOutput(); return EXIT_SUCCESS; }
搭配以下 CMakeLists.txt
以 CMake 編譯:
cmake_minimum_required(VERSION 3.10.2) # 設定專案名稱 project(ReadObj) # 尋找並引入 ITK 函式庫 find_package(ITK REQUIRED) include(${ITK_USE_FILE}) # 增加一個執行檔 add_executable(ReadObj ReadObj.cpp) # 定義執行檔連結方式 target_link_libraries(ReadObj ${ITK_LIBRARIES})
參考資料:ITKExamples