Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://yahirohumpty.blog2.fc2.com/tb.php/290-0c9f725d

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

gtkglextで三次元ビューワ

雛形はできた.
とりあえず自分メモ.

まず作り方.
参照にすべきはGTK/gtkglext-samplesの下の適当なコード.
Win32ではPlatformSDKのopengl32.lib,glu32.libも必要になる.
gtkのdrawableに書いていくことになる.

gtk_gl_init(&argc,&argv);
glconfig=gdk_gl_config_new_by_mode((GdkGLConfigMode)(GDK_GL_MODE_RGBA |
GDK_GL_MODE_DEPTH |
GDK_GL_MODE_DOUBLE));

/* Set OpenGL-capability to the widget. */
gtk_widget_set_gl_capability (drawingarea,
glconfig,
NULL,
TRUE,
GDK_GL_RGBA_TYPE);

して,expose_eventのコールバックとかで

GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);

/*** OpenGL BEGIN ***/
if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext))
return FALSE;

hogehogehoge();

gdk_gl_drawable_gl_end (gldrawable);
/*** OpenGL END ***/

とすると描ける.

あとついでにGTKのイベントが呼ばれるタイミング.
expose_event:再描画時に呼ばれる.
configure_event:生成時,リサイズ時に呼ばれる.
realize_event:生成時に呼ばれる.

カメラ座標系について.
glMatrixMode (GL_PROJECTION);とすると投影行列をいじることができる.
gluPerspectiveは画像中心が正確に中心であるカメラ座標系を提供する.
ということは通常のカメラでの光軸のずれによる画像中心のずれが再現できない.
正確に実カメラと同じでないと重ねられないので,対応できるようにする.
そもそもの透視投影変換設定はglFrustumでやる.
このとき実カメラとあわせようとするなら

float width,height,cx,cy,focal;
// それぞれ画像の幅と高さ,画像中心x,y,焦点距離
glFrustum(-cx,-cy,width-cx,height-cy,focal,10000.0);

とかなる.ただし単位系はあわせよう.
glMatrixMode (GL_MODELVIEW);でモデルの座標変換行列にもどる.

2D描画について.
一番困った部分.ここでやりたいことは
背景に画像を描画する,前景に画像座標系で表現された図形を描画するの二点.
後者はGLで描いてから無理やりgdkで上書きしても何とかなるレベルだが,
前者はgdkで描いてからGLで描こうとすると上書きされてしまう.
アルファ設定してもだめだった.なぜだ.

ここでとりうるソリューションとしては...
 GLで描いたものをクロマキー合成する→いくらなんでもそれはない
 glDrawPixelsを使う→まあ一番妥当かなあ
 視野をきっちりカバーするフェイスにテクスチャマップを行う→めんどくさ
で,今回はglDrawPixelsを使うことにする.
気をつけたらいいのはglRasterPos*がモデル座標系表現なのに
glDrawPixelsは画像座標系表現なこと.
要するに,glRasterPos*に入れる前に
モデル座標系のどの点が隅になるかを計算する必要がある.
さらにデプスも考慮されてしまうのでできるだけ遠くに,
ただしglFrustumで設定した範囲に入るように配置する.
画像を左上から描きたいときはglPixelZoom(1, -1);


で,三次元ビューワの準備はできました.
スレッド対応とかまだいろいろやることはありますが
他を進めながらやっていきます.

じゃあそろそろ本題の画像処理に行きますか.
スポンサーサイト
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://yahirohumpty.blog2.fc2.com/tb.php/290-0c9f725d

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

yahirohumpty

  • Author:yahirohumpty
  • 某大学の研究員です.
    博士号持ってます.
    ビジョンとロボットが専門.
    その他もろもろのことに興味があります.

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

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