*FLTK+OpenGLのアプリケーション例 [#tba25daa]
[[3Dモデルファイルの入出力]]のコードを利用して,
3Dモデルファイルを読み込んで表示するアプリケーションを作成した.
メニューから3Dモデルファイルを読み込んで,OpenGLを使って描画する.
機能としては,
-OBJ,DXF,VRL,3DS,STLファイルの読み込み
-OBJ,DXF,STLファイルでの出力
-Windowsネイティブのファイルダイアログ
-マウスでの回転(左ドラッグ),平行移動(Shift+左ドラッグ),ズーム(Ctrl+左ドラッグ)
-Fl_Rollerによる回転(v1.1)
-画面の画像保存(PNG,BMP)

FLTKでOpenGLを扱う方法については以下のページ参照
-[[Fl_Gl_Windowの派生クラスによるOpenGL描画]]
-[[Fl_Gl_Windowでのキーボード・マウス入力]]
-[[Fl_Gl_Windowでのアニメーション]]

***実行画面 [#j39412f6]
#ref(fltk_opengl.jpg,,50%);

***ダウンロード [#q0ca844d]
実行ファイル.動作確認はWindows 7 x64(アプリケーション自体は32bit)
#ref(fltk_opengl_bin_v1.zip)
#ref(fltk_opengl_bin_v1.1.zip)

Visual Studio 2010の環境で作成したコードは以下.
#ref(fltk_opengl_v1.zip)
#ref(fltk_opengl_v1.1.zip)

***ビルドするのに必要なライブラリ [#sa27b394]
 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による回転を追加
---回転に慣性を加えるチェックボックスを追加

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS