2011.04.19 | 

どやさ、kaminalyです。

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

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



ヘッダファイルをインクルード
#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型の変数のみ)
数値を表示