OpenMesh入門,安裝,運行示例Hello World

本博文的簡述or解決問題?

​ 瞭解OpenMesh,學會安裝,嘗試在c++裏面使用OpenMesh,書寫一個簡單地例子。

**編程環境:**Win10 x64 專業版

編程軟件: visual studio 2015

下載OpenMesh庫:

進入OpenMesh官網OpenMesh官網,下載下面的文件:

備用github直接下載:OpenMesh-8.0-VS2015-64-Bit-no-apps.exe

配置OpenMesh運行環境:

安裝OpenMesh程序:

安裝OpenMesh-8.0-VS2015-64-Bit-no-apps.exe程序

標準安裝:

創建工程:

創建一個新的(空的 項目工程)解決方案:比如項目名稱叫TestOpenMesh

配置OpenMesh的運行環境:

在Debug模式 選擇x64:

  • 配置頭文件:

打開項目屬性-VC++目錄-包含目錄,添加包含目錄C:\Program Files\OpenMesh 8.0\include如下:

  • 配置庫文件:

打開項目屬性-鏈接器-常規-附加依賴庫目錄,添加附加庫目錄C:\Program Files\OpenMesh 8.0\lib如下:

  • 配置附加依賴項.lib文件:*

打開項目屬性-鏈接器-輸入-附加依賴項,添加附加庫目錄OpenMeshCored.libOpenMeshToolsd.lib如下:

  • 配置預處理器添加宏

(可能有的第三方庫需要,有的第三方庫不需要這一步操作):

打開項目屬性-V/c++-預處理器,添加附加宏_USE_MATH_DEFINES

一共經過這三步驟,就全部配置好了,接下來就是添加具體的代碼了。

添加示例程序:

添加如下代碼到創建的TestOpenMesh.cpp下面:

#include <iostream>
// -------------------- OpenMesh
#include <OpenMesh\/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>
using namespace std;
 
typedef OpenMesh::PolyMesh_ArrayKernelT<>  MyMesh;
int main()
{
	MyMesh mesh;
	MyMesh::VertexHandle vhandle[8];
	vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1, 1));
	vhandle[1] = mesh.add_vertex(MyMesh::Point(1, -1, 1));
	vhandle[2] = mesh.add_vertex(MyMesh::Point(1, 1, 1));
	vhandle[3] = mesh.add_vertex(MyMesh::Point(-1, 1, 1));
	vhandle[4] = mesh.add_vertex(MyMesh::Point(-1, -1, -1));
	vhandle[5] = mesh.add_vertex(MyMesh::Point(1, -1, -1));
	vhandle[6] = mesh.add_vertex(MyMesh::Point(1, 1, -1));
	vhandle[7] = mesh.add_vertex(MyMesh::Point(-1, 1, -1));
	// generate (quadrilateral) faces
	std::vector<MyMesh::VertexHandle>  face_vhandles;
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[0]);
	face_vhandles.push_back(vhandle[1]);
	face_vhandles.push_back(vhandle[2]);
	face_vhandles.push_back(vhandle[3]);
	mesh.add_face(face_vhandles);
 
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[7]);
	face_vhandles.push_back(vhandle[6]);
	face_vhandles.push_back(vhandle[5]);
	face_vhandles.push_back(vhandle[4]);
	mesh.add_face(face_vhandles);
 
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[1]);
	face_vhandles.push_back(vhandle[0]);
	face_vhandles.push_back(vhandle[4]);
	face_vhandles.push_back(vhandle[5]);
	mesh.add_face(face_vhandles);
 
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[2]);
	face_vhandles.push_back(vhandle[1]);
	face_vhandles.push_back(vhandle[5]);
	face_vhandles.push_back(vhandle[6]);
	mesh.add_face(face_vhandles);
 
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[3]);
	face_vhandles.push_back(vhandle[2]);
	face_vhandles.push_back(vhandle[6]);
	face_vhandles.push_back(vhandle[7]);
	mesh.add_face(face_vhandles);
 
	face_vhandles.clear();
	face_vhandles.push_back(vhandle[0]);
	face_vhandles.push_back(vhandle[3]);
	face_vhandles.push_back(vhandle[7]);
	face_vhandles.push_back(vhandle[4]);
	mesh.add_face(face_vhandles);
 
	// write mesh to output.obj
	try
	{
		if (!OpenMesh::IO::write_mesh(mesh, "output.off"))
		{
			std::cerr << "Cannot write mesh to file 'output.off'" << std::endl;
			return 1;
		}
	}
	catch (std::exception& x)
	{
		std::cerr << x.what() << std::endl;
		return 1;
	}
	
	return 0;
}

運行該項目:

在vs 2015 裏面按下Ctrl + F5,運行該項目

看到運行成功:

驗證成功:

打開D:\programming\OpenMesh\TestOpenMesh\TestOpenMesh目錄下,查看是否生成output.off文件

使用MeshLab打開這個output.off文件,看看時候加載之後,顯示是否成功

MeshLab官網下載地址:MeshLab官網

備用github直接下載:MeshLab2016.12.exe

選中該output.off文件,打開:

發現運行成功:

源碼下載:

源碼:TestOpenMesh源碼

心得:

OpenMesh的網上教程感覺都是十分的少,唯一比較全面的話,可能就是相關的英文文檔,然鵝,裏面涉及的概念很多,且在現在工作了發現都是直接上手,根本不會讓你去系統的學習OpenMesh的相關知識,時間倉促,且系統學習,所耗費的時間和精力,也容易使得人比較倦怠。故此好的解決方法就是,就是直接在項目中直接上手;

可以按照如下步驟實現:

  1. ->從瞭解OpenMesh
  2. ->你所需要的項目需求的實現
  3. ->需要完成的什麼任務
  4. ->百度、谷歌、Bing輪着搜索怎麼實現
  5. ->查找函數或者迭代器的或者屬性實例的使用
  6. ->自己項目移植嘗試
  7. ->多次嘗試
  8. ->還是有問題,向大佬(劃掉,巨佬)們求助
  9. ->仍然無果;歇一天再按照上面的步驟嘗試
  10. ->仍然無果;建議放棄,學習其他。或者日後有機會在學

資源:

提供一個良好的中文入門手冊:OpenMesh入門文檔.pdf (可以幫助弄清楚OpenMesh基本概念,值得一讀)

對應個人博客的本篇博文:OpenMesh入門,安裝,運行示例Hello World

參考博文:OpenMesh學習筆記1 安裝 配置 入門示例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章