FLTK+OpenGLのアプリケーション例†
3Dモデルファイルの入出力のコードを利用して,
3Dモデルファイルを読み込んで表示するアプリケーションを作成した.
メニューから3Dモデルファイルを読み込んで,OpenGLを使って描画する.
機能としては,
- OBJ,DXF,VRL,3DS,STLファイルの読み込み
- OBJ,DXF,STLファイルでの出力
- Windowsネイティブのファイルダイアログ
- マウスでの回転(左ドラッグ),平行移動(Shift+左ドラッグ),ズーム(Ctrl+左ドラッグ)
- Fl_Rollerによる回転(v1.1)
- 画面の画像保存(PNG,BMP)
FLTKでOpenGLを扱う方法については以下のページ参照
実行画面†
ダウンロード†
実行ファイル.動作確認はWindows 7 x64(アプリケーション自体は32bit)
Visual Studio 2010の環境で作成したコードは以下.
ビルドするのに必要なライブラリ†
fltk, freeglut, boost, libpng, zlib, libjpeg
各ライブラリについてはライブラリのインストールを参照.
また,3Dモデルファイルの入出力にあるrx_model.libが必要.
- 簡単な説明&注意事項
- rx_fltk_opengl.cppがエントリ関数が書かれたファイルである.
- Fl_Gl_Windowの派生クラスrxFlGLWindowをウィジットとして,Fl_Double_Window上にセットしている.rxFlGLWindowクラスの宣言と実装はrx_fltk_glcanvas.hとrx_fltk_glcanvas.cpp,Fl_Double_Windowの派生クラスであり,ウィンドウ上の他のウィジット(メニューやボタン,ステータスバーなど)を記述するrxFlWindowクラスはrx_fltk_window.hとrx_fltk_window.cppに宣言,実装されている.rx_fltk_widgets.hには共通の関数やカスタムウィジットなどを記述している.
- 終了時にウィンドウ位置・サイズや視点の状態を設定ファイル(rx_fltk_opengl.ini)に保存する.設定ファイルへの入出力はshared/inc/rx_atom_ini.hで行っている.
- Windows環境ではFLTKデフォルトのファイルダイアログでなく,OSネイティブのファイルダイアログを使うようにしている(FLTK標準のファイルダイアログがどうも使いづらかったため.rx_fltk_widgets.hのShowFileDialog関数参照).
- デフォルトではプロジェクトフォルダにある"bunny.wrl"を読み込んで描画する.
- 更新履歴
- v1.1 :
- マウス座標がおかしかったのを修正
- Fl_Rollerによる回転を追加
- 回転に慣性を加えるチェックボックスを追加