ロボットのGUIコントローラを作る(その7)
初稿: 2013/10/7, 最終更新:
7.スライダーでも関節を操作できるようにする
ロボットの関節をマウスで操作できるようになりました。でもロボット実機を動かしたい時、正確に数値を確認しながら角度を決められたほうが便利ですね。そこで、GUI部品のスライダーを導入して数値を見ながら調整できるようにしていきましょう。今回導入するGuiのアドオンofxGuiのExampleは次の場所にあります。これはv8.0で導入された新しいaddonです。
C:\workspace\of_v0.8.0_vs_release\examples\gui\guiExample
7.1 Visual StudioのプロジェクトにofxGuiを追加
Visual Studio2012環境の場合のaddonの追加の仕方を説明します。まず、ソリュションエクスプローラを開き、次の3ステップを順に行ってください。
fig.14 ofxGuiをソリューションに追加
- addonsに新しいフィルターを追加。名前をofxGuiにする。
- ofxGuiの中にさらに新しいフィルターを追加。名前をsrcにする。
- srcの中に、既存の項目を追加。C:\workspace\of_v0.8.0_vs_release\addons\ofxGui\srcの中の.cppおよび.hファイルを全て選択して追加。
次に、プロジェクトのプロパティから、構成プロパティのC++を開き、[全般]→[追加のインクルードディレクトリ]を編集し、[新しい行]を挿入して
..\..\..\addons\ofxGui\src
を追加してください。Debugモード、Releaseモード両方に設定しておくとあとで楽です。相対パスではなく絶対パスで指定しても構いません。srcがビルド毎にコンパイルされますのでライブラリの指定は必要ありません。これで準備は完了です。
7.2 スライダーの追加
ofxGuiにはとてもシンプルなGUI部品しか用意されていません。また、しゃれたレイアウトに配置することもできません。その代わり、GUI部品にofParameterを登録すれば自動的に対応付けられて、ほぼ自動で数値を表示してくれたり、図示してくれたりします。*1
testApp.hには2箇所、行を加えます。ファイルの頭の方で、ofgGui.hをインクルードしてください。
#include "ofxGui.h"
次に、class testAppの中にofxPanelというクラスのguiという名前のインスタンスを宣言してください。
ofxPanel gui;
testApp.cppにも2箇所、追加します。testApp::setup()関数の最後に、次の6行を加えます。HIRONXというパネルを作り、GUIに登録したいofParameterを順に追加していきます。
gui.setup("HIRONX");
gui.add(chest);
gui.add(pan);
gui.add(tilt);
for(int i=0; i<6; i++){ gui.add(rarm[i]); }
for(int i=0; i<6; i++){ gui.add(larm[i]); }
登録はこれで完了です。
ofxGuiはGUI部品をOpenGLの部品として扱います。そのため、testApp::draw()関数内に表示の処理を加えてやる必要があります。openGLの表示設定の影響を受けますので、表示の前後で各種効果を一時的に無効にしています。
ofDisableDepthTest();
ofDisableLighting();
gui.draw();
ofEnableLighting();
ofEnableDepthTest();
ビルドして実行してみましょう。
fig.15 スライダーの追加
スライダーのグラフィックと同時に数字も表示されているのでわかり易いですね。操作すると、ロボットもちゃんと動いてくれます。ofEasyCamの視点も同時に動いてしまいますが、まあいいとしましょう。
*1:今後のバージョンアップできっと色々な機能が増えていくのではないでしょうか。