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

  • 相关阅读:
    博客第8周
    剑指offer 位运算
    真题
    剑指offer分类刷题(转载)
    PV PVC StorageClass是什么?
    k8s使用rbac实现多租户
    ansible-playbook 使用blockinfile 修改/etc/hosts 主机名
    ansible-playbook 一键部署ntp时间同步 yml
    简单搭建一个HTTP文件下载服务器
    常用docker命令备忘
  • 原文地址:https://www.cnblogs.com/vranger/p/2888153.html
Copyright © 2011-2022 走看看