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();

  • 相关阅读:
    java大数取余
    hdu--5351--MZL's Border
    NYOJ--水池数目
    NYOJ--32--SEARCH--组合数
    NYOJ--20--搜索(dfs)--吝啬的国度
    hdu--4148--Length of S(n)
    hdu--2098--分拆素数和
    hdu--1873--看病要排队
    hdu--1870--愚人节的礼物
    hdu--1237--简单计算器
  • 原文地址:https://www.cnblogs.com/vranger/p/2888153.html
Copyright © 2011-2022 走看看