スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OpenGLで形状の断面を線で表示する方法

OpenGLのClipPlaneを利用して形状の断面を線で表示する方法について。


・サンプルコード
void DrawObjects(void)
{
  glutSolidTeapot(0.3);
}

inline void glClipPlaneFuncY(GLenum plane, bool bFore, GLdouble height)
{
  GLdouble n = bFore ? -1.0 : 1.0;
  GLdouble eq[4] = {0.0, n, 0.0, -height * n};
  glClipPlane(plane, eq);
}

void BeginCutPlaneConfig(float cut_height)
{
  GLbitfield flag = 0;
  flag = flag | GL_ENABLE_BIT;
  flag = flag | GL_POLYGON_BIT;
  flag = flag | GL_CURRENT_BIT;
  flag = flag | GL_DEPTH_BUFFER_BIT;
  flag = flag | GL_TRANSFORM_BIT;
  glPushAttrib(flag);

  glEnable(GL_CLIP_PLANE0);
  glEnable(GL_CLIP_PLANE1);
  glClipPlaneFuncY(GL_CLIP_PLANE0, true, cut_height);
  glClipPlaneFuncY(GL_CLIP_PLANE1, false, cut_height);

  glDisable(GL_LIGHTING);
  glDisable(GL_DEPTH_TEST);
  glDisable(GL_CULL_FACE);
  glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}

void EndCutPlaneConfig(void)
{
  glPopAttrib();
}


///////////////////////////////////
// 描画処理メイン部分

  DrawObjects();

  BeginCutPlaneConfig(0.0f);
  glColor3d(011);
  DrawObjects();
  EndCutPlaneConfig();

///////////////////////////////////


・結果
snapshot_080_130114_112840.png


ワイヤーフレームモードで、glClipPlaneを使って描画したときに、断面と形状の共有線が表示されます。

それを利用して、幅が0の向かい合ったクリッププレーンを設定して描画すると曲線状の断面を表示することができます。

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。