ぬの部屋(仮)
nu-no-he-ya
  •      12
    3456789
    10111213141516
    17181920212223
    242526272829 
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
        123
    45678910
    11121314151617
    18192021222324
    25262728   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    15161718192021
    293031    
           
         12
    3456789
    10111213141516
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
          1
    2345678
    9101112131415
    16171819202122
    232425262728 
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
  • VCG Library メッシュからfaceのみを削除する

    メッシュの定義

    #pragma once
    
    //基本的なデータタイプ
    #include <vcg/complex/complex.h>
    
    class MyFace;
    class MyVertex;
    class MyEdge;
    
    struct MyUsedTypes : public vcg::UsedTypes<
      vcg::Use<MyVertex>::AsVertexType,
      vcg::Use<MyFace>::AsFaceType,
      vcg::Use<MyEdge>::AsEdgeType> {};
    
    //頂点型
    class MyVertex : public vcg::Vertex<
      MyUsedTypes,
      vcg::vertex::Coord3f,
      vcg::vertex::Color4b,
      vcg::vertex::Normal3f,
      vcg::vertex::VFAdj,
      vcg::vertex::VEAdj,
      vcg::vertex::Qualityf,
      vcg::vertex::BitFlags,
      vcg::vertex::Mark> {
      //ここにメンバ変数を追加できる
    };
    //面型
    class MyFace : public vcg::Face  <
      MyUsedTypes,
      vcg::face::VertexRef,
      vcg::face::Normal3f,
      vcg::face::FFAdj,
      vcg::face::EFAdj,
      vcg::face::Mark,
      vcg::face::VFAdj,
      vcg::face::BitFlags > {
    };
    //エッジ型
    class MyEdge : public vcg::Edge<
      MyUsedTypes,
      vcg::edge::VertexRef,
      vcg::edge::BitFlags,
      vcg::edge::EVAdj,
      vcg::edge::EFAdj> {
    };
    //3Dモデル型
    class MyMesh : public vcg::tri::TriMesh<
      std::vector<MyVertex>,
      std::vector<MyFace>,
      std::vector<MyEdge> > {
    };
    

    faceのみ削除

      //メッシュ定義
      MyMesh mesh;
    
      //PLYファイル読み込み
      vcg::tri::io::ImporterPLY<MyMesh>::Open(mesh, plypathname);
    
      //全てのfaceにDELETEDフラグを立てる
      for (int i = 0; i < mesh.face.size(); i++) {
        vcg::tri::Allocator<MyMesh>::DeleteFace(mesh, mesh.face[i]);
      }
    
      // DELETED フラグのついたMyFaceオブジェクトを削除する
      vcg::tri::Allocator<MyMesh>::CompactFaceVector(mesh);
    

    解説

    VCGの三角形の削除は、MyFaceオブジェクトにDELETEDフラグを立てる事で行う。

    DeleteFace staticメンバ関数でDELETEDフラグを立てるのだが、この時、対象の三角形(上ではmesh.face[i])に既にDELETEDフラグが立っているとassertで落ちる。まあ既に削除された事になっているモノを操作しようとしているのだから合理的ではあるのだが。

    そして、本当の削除はその後CompactFaceVectorで行う。

    この時注意は、CompactFaceVectorを使う前も、「内部的には三角形数==0 」 という扱いになっている。だから、

      int fc = mesh.FN();
    

    とした場合、fc == 0になる。

    ところが

      int fc = mesh.face.size()
    

    とすると、削除する前の三角形の数を取得することになる。この

    mesh.FN() != mesh.face.size()

    という状況がVCGできにはまずいので、一連の処理が終わったらCompactFaceVectorを必ず呼び出す必要がある。

    結果

    VCG Library メッシュからfaceのみを削除する

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryでkdTree

    VCG Library でスムージング

    VCG Library ターゲットの周辺のオブジェクトを取得

    VCG LibraryでMeshに三角形を登録する方法

    VCG Library でポリゴンファイル保存

    VCG Libraryで色のついたポリゴンの読み込み・表示

    VCG LibのFace-FaceやEdge-Faceなどの関連付け

    VCG Library