有关openmesh 4.1如何在vs2010以及qt creator中搭建使用

来源:互联网 发布:matlab 矩阵平均数 编辑:程序博客网 时间:2024/06/16 02:11

下载 openmesh

去官网下载最新版的openmesh,下载时注意版本和你选择的是源代码还是已经编译过得,这里我推荐选择编译的,只需要安装即可。
官网下载地址
在官网中选择vs2010版本或你自己想要的版本,下载后选择目录安装即可。

vs2010下的搭建

右键工程文件->属性->vc++目录。在包含目录下添加 openmesh安装路径\include
在包含目录和库目录中依次添加 openmesh安装路径\lib
在连接器->输入中的附加依赖项中添加OpenMeshCored.lib和OpenMeshToolsd.lib,注意,如果这里你需要编译的是release版本的话,将lib文件名的最后的d去掉即可。
到这里编译文件的话会提示没有添加预处理定义_USE_MATH_DEFINES,在c/c++->预处理器中的预处理定义中添加_USE_MATH_DEFINES即可,此时vs2010下的搭建已经完成。

在Qt creator中的搭建

qt creator 生成的是.pro文件,不能像vs2010方便的添加外部库,需要我们自己手动添加,其实也很简单。
打开.pro文件,在其中添加如下代码。

INCLUDEPATH += openmesh安装路径\include
LIBS += openmesh安装路径\lib\OpenMeshCored.lib
LIBS += openmesh安装路径\lib\OpenMeshToolsd.lib
DEFINES += _USE_MATH_DEFINES
需要注意的是,在这里,openmesh安装路径是你自己选的openmesh的安装地址,如我的是
INCLUDEPATH += D:\OpenMesh_4.1\include
LIBS += D:\OpenMesh_4.1\lib\OpenMeshCored.lib
LIBS += D:\OpenMesh_4.1\lib\OpenMeshToolsd.lib
DEFINES += _USE_MATH_DEFINES
在安装路径下,我建议不要出现任何的中文以及空格,否则可能并不能成功。
搭建到这,基本就搭建完成了
下面我给出测试代码已方便你们测试是否搭建成功】

测试代码

    //=============================================================================      //                                                                                  //                               OpenMesh                                           //      Copyright (C) 2001-2005 by Computer Graphics Group, RWTH Aachen             //                           www.openmesh.org                                       //                                                                                  //-----------------------------------------------------------------------------      //                                                                                  //                                License                                           //                                                                                  //   This library is free software; you can redistribute it and/or modify it       //   under the terms of the GNU Library General Public License as published        //   by the Free Software Foundation, version 2.                                   //                                                                                   //   This library is distributed in the hope that it will be useful, but             //   WITHOUT ANY WARRANTY; without even the implied warranty of                      //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU               //   Library General Public License for more details.                                //                                                                                  //   You should have received a copy of the GNU Library General Public               //   License along with this library; if not, write to the Free Software             //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                       //                                                                                  //-----------------------------------------------------------------------------      //                                                                                  //   $Revision: 83 $      //   $Date: 2009-02-27 17:31:45 +0100 (Fri, 27 Feb 2009) $      //                                                                                  //=============================================================================      #include <iostream>      // -------------------- OpenMesh      #include <OpenMesh/Core/IO/MeshIO.hh>      #include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>      // ----------------------------------------------------------------------------      typedef OpenMesh::PolyMesh_ArrayKernelT<>  MyMesh;      // ----------------------------------------------------------------------------      // Build a simple cube and write it to std::cout      int main()      {          MyMesh mesh;          // generate vertices          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;      }  

这是官网文档中的部分代码。运行后会生成一个.off文件。说明执行成功,用openmesh目录下自带的QTviewer可以打开生成的off文件。

0 0
原创粉丝点击