Cinderでの実験のお供にパラメータパネル
どやさ、kaminalyです。
Cinderではデバッグや実験用に結果画面を見ながら
パラメータの変更ができるパネルを簡単に設置できる。
※AntTweakBarというライブラリをラップしている。
わたくしは、パラメータ以外に、
fpsとかベンチマークの結果とか簡単なトレースを常に表示するようにしています。
[code lang="plain"] ヘッダファイルをインクルード #include "cinder/params/Params.h" ヘッダにパネルの変数定義 ci::params::InterfaceGl mParams; セットアップなどで void PracticeApp::setup() { //パネル生成(引数:パネル名、サイズ) mParams = params::InterfaceGl( "Paramaters", Vec2i( 200, 200 ) ); //変更したいパラメータ追加(引数:パラメータ名、変数、オプション、readonly) mParams.addParam( "param name", &var[, "option", false] ); //区切りを追加(引数:パラメータ名、オプション) mParams.addSeparator(["separator name", "option"]); } ※日本語は文字化けする。 ※addParamで渡せる変数の型 bool, float, int32_t, Vec3f, Quatf, Color, ColorA, std::string, std::vector<std::string> 引数で渡すオプションで色々設定できる。オプションについては後で。 描画の最後に void PracticeApp::draw() { //色々描画 //色々描画 //色々描画 //パネルの描画 params::InterfaceGl::draw(); } 以上でOK。わぉ!簡単! オプションについて 最小値/最大値とか、変化量とか、keyイベントとか 色々設定できます。 フォーマットは "min=0.0f max=20.0f step=0.5f keyIncr=x keyDecr=X" param=valueをスペース区切りで複数設定できます。 種類 min=value 最小値設定(数値の変数のみ) max=value 最大値設定(数値の変数のみ) step=value 変更量の粒度(数値の変数のみ) key=string keyincr=string ショートカットキーでstep分足す keydecr=string ショートカットキーでstep分引く ※ショートカットに指定できるもの a,A,1,#, などキーボードで打てる文字 SPACE (or ' ') BACKSPACE (or BS) TAB CLEAR (or CLR) RETURN (or RET) PAUSE ESCAPE (or ESC) DELETE (or DEL), INSERT (or INS) UP, DOWN, RIGHT, LEFT HOME, END PGUP, PGDOWN F1, F2,..., F15 ※+でつなげて指定するもの SHIFT ALT CTRL 例、CTRL+a, ALT+F1, SHIFT+ALT+F1 ※SHIFTとCTRLはキーボードで打てる文字と一緒には使わない方が良い。 SHIFT+a → A, CTRL+a..z → ASCII codeの1〜26に置き換えるべき? label=string ラベルつける help=string ヘルプ用の文字列。配布する時とか。 group=string 同じグループの visible=bool 欄を表示したり消したり readonly=bool 変更出来なくなる precision=value(double型の変数のみ) 小数点以下何桁まで使うか 0〜12が指定できます。 -1を指定すると無効になります。 precisionが定義されず、stepが定義されている場合は stepの値を元に定義されます。 hexa=bool(integer型の変数のみ) 16進数で表示 true=string(boolean型の変数のみ) false=string(boolean型の変数のみ) 表示される文字を設定する 例、"true=Yes! false='No !!'" opened=bool(groupのみ) グループを開いたり閉じたり enum='const1 {label1} , const2 {label2} , ...'(enum型の変数のみ) cinderではつかえないのでノー説明 coloralpha=bool(ColorA型の変数のみ) アルファの有効無効 colororder=rgba(ColorA型の変数のみ) colororder=argb(ColorA型の変数のみ) OpenGL and Direct3D10はrgba、Direct3D9はargbのフォーマットのようです。 colormode=rgb(Color型の変数のみ) colormode=hls(Color型の変数のみ) 値をRGB(Red Green Blue) かHLS(Hue Lightness Saturation)のどちらとして使うか指定できる 。 arrow='x y z'(Quatf型の変数のみ) arrow=0(Quatf型の変数のみ) 3Dの矢印を表示 値がゼロの場合0リセット arrowcolor='r g b'(Quatf型の変数のみ) 矢印の色を変える axisx=n(Quatf型の変数のみ) axisy=n(Quatf型の変数のみ) axisz=n(Quatf型の変数のみ) 左手系のなにか showval=bool(Quatf型の変数のみ) 数値を表示 [/code]