zoukankan      html  css  js  c++  java
  • OpenMesh 编辑三角网格(1) 删除三角片

    今天重又用起OpenMesh,动态编辑网格,效率很高。但中间遇到一个问题,花了我半天时间才搞定。

    我使用删除顶点函数如下(一)所示,mesh_.garbage_collection();也加了,但怎么都删不掉,总是报错。

    (一)

    //顶点删除设置
      for (v_h_itr=del_v_handle_set.begin();v_h_itr!=del_v_handle_set.end();v_h_itr++)
      {
       Mesh::VertexHandle _vf=(*v_h_itr);
       pDmesh->mesh_.delete_vertex(_vf,false);
      }

      //执行删除操作
      pDmesh->mesh_.garbage_collection();

    完全按照OpenMesh官网上提供的例子,就是不行。查阅之前的代码,才发现delete几何元素之前,要先获取它的属性定义。

    用完后释放。如下(二)所示,问题解决。

    (二) 

    //获取预先定义属性
      if (!pDmesh->mesh_.has_vertex_status())
       pDmesh->mesh_.request_vertex_status();
      if(!pDmesh->mesh_.has_face_status())
       pDmesh->mesh_.request_face_status();
      if(!pDmesh->mesh_.has_edge_status())
       pDmesh->mesh_.request_edge_status();
      //


      //顶点删除设置
      for (v_h_itr=del_v_handle_set.begin();v_h_itr!=del_v_handle_set.end();v_h_itr++)
      {
       Mesh::VertexHandle _vf=(*v_h_itr);
       pDmesh->mesh_.delete_vertex(_vf,false);
      }

      //执行删除操作
      pDmesh->mesh_.garbage_collection();


      //释放预先定义属性
      if (pDmesh->mesh_.has_vertex_status())
       pDmesh->mesh_.release_vertex_status();/**/
      if(pDmesh->mesh_.has_face_status())
       pDmesh->mesh_.release_face_status();
      if(pDmesh->mesh_.has_edge_status())
       pDmesh->mesh_.release_edge_status();

  • 相关阅读:
    51 数据中重复的数字
    64 数据流中的中位数
    79. Word Search
    93. Restore IP Addresses
    547. Friend Circles
    Epplus Excel 导入 MSSQL 数据库
    用来更新服务的bat 脚本
    ASP.Net MVC 引用动态 js 脚本
    8、结构的构造器应该显式调用!!!(坑)
    Task 线程重用导致等待!
  • 原文地址:https://www.cnblogs.com/vranger/p/2888153.html
Copyright © 2011-2022 走看看