2011.04.19 | 

どやさ、kaminalyです。

Cinderではデバッグや実験用に結果画面を見ながら
パラメータの変更ができるパネルを簡単に設置できる。
※AntTweakBarというライブラリをラップしている。

わたくしは、パラメータ以外に、
fpsとかベンチマークの結果とか簡単なトレースを常に表示するようにしています。

001ヘッダファイルをインクルード
002#include "cinder/params/Params.h"
003 
004ヘッダにパネルの変数定義
005ci::params::InterfaceGl mParams;
006 
007セットアップなどで
008void PracticeApp::setup()
009{
010    //パネル生成(引数:パネル名、サイズ)
011    mParams = params::InterfaceGl( "Paramaters", Vec2i( 200, 200 ) );
012    //変更したいパラメータ追加(引数:パラメータ名、変数、オプション、readonly)
013    mParams.addParam( "param name", &var[, "option", false] );
014    //区切りを追加(引数:パラメータ名、オプション)
015    mParams.addSeparator(["separator name", "option"]);
016}
017※日本語は文字化けする。
018※addParamで渡せる変数の型
019    bool, float, int32_t, Vec3f, Quatf, Color, ColorA, std::string, std::vector<std::string>
020 
021引数で渡すオプションで色々設定できる。オプションについては後で。
022 
023描画の最後に
024void PracticeApp::draw()
025{
026    //色々描画
027    //色々描画
028    //色々描画
029 
030    //パネルの描画
031    params::InterfaceGl::draw();
032}
033 
034以上でOK。わぉ!簡単!
035 
036オプションについて
037最小値/最大値とか、変化量とか、keyイベントとか
038色々設定できます。
039 
040フォーマットは
041"min=0.0f max=20.0f step=0.5f keyIncr=x keyDecr=X"
042param=valueをスペース区切りで複数設定できます。
043 
044種類
045min=value
046最小値設定(数値の変数のみ)
047 
048max=value
049最大値設定(数値の変数のみ)
050 
051step=value
052変更量の粒度(数値の変数のみ)
053 
054key=string
055 
056keyincr=string
057ショートカットキーでstep分足す
058 
059keydecr=string
060ショートカットキーでstep分引く
061 
062※ショートカットに指定できるもの
063    a,A,1,#, などキーボードで打てる文字
064    SPACE (or ' ')
065    BACKSPACE (or BS)
066    TAB
067    CLEAR (or CLR)
068    RETURN (or RET)
069    PAUSE
070    ESCAPE (or ESC)
071    DELETE (or DEL), INSERT (or INS)
072    UP, DOWN, RIGHT, LEFT
073    HOME, END
074    PGUP, PGDOWN
075    F1, F2,..., F15
076 
077※+でつなげて指定するもの
078    SHIFT
079    ALT
080    CTRL
081        例、CTRL+a, ALT+F1, SHIFT+ALT+F1
082        ※SHIFTとCTRLはキーボードで打てる文字と一緒には使わない方が良い。
083        SHIFT+a → A, CTRL+a..z → ASCII codeの1〜26に置き換えるべき?
084 
085label=string
086ラベルつける
087 
088help=string
089ヘルプ用の文字列。配布する時とか。
090 
091group=string
092同じグループの
093 
094visible=bool
095欄を表示したり消したり
096 
097readonly=bool
098変更出来なくなる
099 
100precision=value(double型の変数のみ)
101小数点以下何桁まで使うか
1020〜12が指定できます。
103-1を指定すると無効になります。
104precisionが定義されず、stepが定義されている場合は
105stepの値を元に定義されます。
106 
107hexa=bool(integer型の変数のみ)
10816進数で表示
109 
110true=string(boolean型の変数のみ)
111false=string(boolean型の変数のみ)
112表示される文字を設定する
113例、"true=Yes! false='No !!'"
114 
115opened=bool(groupのみ)
116グループを開いたり閉じたり
117 
118enum='const1 {label1} , const2 {label2} , ...'(enum型の変数のみ)
119cinderではつかえないのでノー説明
120 
121coloralpha=bool(ColorA型の変数のみ)
122アルファの有効無効
123 
124colororder=rgba(ColorA型の変数のみ)
125colororder=argb(ColorA型の変数のみ)
126OpenGL and Direct3D10はrgba、Direct3D9はargbのフォーマットのようです。
127 
128colormode=rgb(Color型の変数のみ)
129colormode=hls(Color型の変数のみ)
130値をRGB(Red Green Blue) かHLS(Hue Lightness Saturation)のどちらとして使うか指定できる 。
131 
132arrow='x y z'(Quatf型の変数のみ)
133arrow=0(Quatf型の変数のみ)
1343Dの矢印を表示
135値がゼロの場合0リセット
136 
137arrowcolor='r g b'(Quatf型の変数のみ)
138矢印の色を変える
139 
140axisx=n(Quatf型の変数のみ)
141axisy=n(Quatf型の変数のみ)
142axisz=n(Quatf型の変数のみ)
143左手系のなにか
144 
145showval=bool(Quatf型の変数のみ)
146数値を表示