スポンサーリンク

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

VCGで色のついたポリゴンを表示する方法。

今回はplyファイルを使用。

napple_face_color_0 面に色情報を持つplyファイル

napple_face_color_1 面に色情報を持つplyファイル 

napple_vertex_color 頂点に色情報を持つplyファイル

※あと書くのも恥ずかしいけれど上記3ファイルはパブリックドメイン扱いとします。

1.色情報が面にある場合

1.1 データ型の定義

面に色情報を持つデータを使用する場合、MyFaceで色情報を持つことを定義する。

class MyFace;
class MyVertex;
class MyEdge;

struct MyUsedTypes : public vcg::UsedTypes< /*省略*/> {};

class MyVertex : public vcg::Vertex< /*省略*/> {};

class MyFace : public vcg::Face  < 
  MyUsedTypes, 
  vcg::face::VertexRef, 
  vcg::face::Color4b,
  vcg::face::Normal3f, 
  vcg::face::Mark,
  vcg::face::BitFlags 
> {
};

class MyEdge : public vcg::Edge< /*省略*/> {};

class MyMesh : public vcg::tri::TriMesh< 
  std::vector<MyVertex>, 
  std::vector<MyFace>, 
  std::vector<MyEdge> > {
};

1.2.PLYファイルを読み込む

vcg::tri::io::ImporterPLY<MyMesh>::Open(mesh, "napple_face_color_0.ply");

1.3.表示

色情報は C().X() , C().Y() C().Z()  にそれぞれR,G,Bが入っている。cCはconst用。

上でvcg::face::Color4bを指定したので、unsigned char型で入っている。従ってOpenGLのglColor3ubを使用する。

  glBegin(GL_TRIANGLES);
  for (const auto& f : mesh.face) {
    glColor3ub(f.cC().X(), f.cC().Y(), f.cC().Z());
    for (size_t i = 0; i < 3; i++) {
      glVertex3d(f.cV(i)->cP().X(), f.cV(i)->cP().Y(), f.cV(i)->cP().Z());
    }
  }
  glEnd();

2.色情報が頂点にある場合

2.1 データ型の定義

頂点に色情報がある場合、MyVertexにColor4bを指定する。

class MyVertex : public vcg::Vertex< 
  MyUsedTypes, 
  vcg::vertex::Coord3f,
  vcg::vertex::Color4b,
  vcg::vertex::Normal3f,
  vcg::vertex::Qualityf, 
  vcg::vertex::BitFlags, 
  vcg::vertex::Mark
> {
};

 

2.2.PLYファイルを読み込む

vcg::tri::io::ImporterPLY<MyMesh>::Open(mesh, "napple_vertex_color.ply");

2.3 表示

色情報はvertexの中に入っています。それ以外は面の時と同じです。

  glBegin(GL_TRIANGLES);
  for (const auto& f : mesh.face) {
    for (size_t i = 0; i < 3; i++) {
      const MyVertex* pV = f.cV(i);
      glColor3ub(pV->cC().X(), pV->cC().Y(), pV->cC().Z());
      glVertex3d(pV->cP().X(), pV->cP().Y(), pV->cP().Z());
    }
  }
  glEnd();

colorply

 

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

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: