2011.05.14 | 

どやさ!kaminalyです。
android携帯買い換えたいkaminalyです。
iphoneよりもandroid派のkaminalyです。

はてさて、atan2の引数って言語によってy,xだったりx,yだったりします。
数学者にとってはy,xの方が直感的なのかもしれないけど、
数学に明るくない人にとっては、x,yの順番の方が直感的なので、
しばしば順番を間違えて、挙動不振になったりすることも多いんじゃないでしょうか?

Cinderはというと、ヘッダをみると、x,yの順番だった。(変数名的に)

が、これは罠で、y,xで渡さないと正しい値を得られない。

くそ!

2011.05.11 | 

こんにちはと思ったら、もうこんばんはですね。ムーチョです。こんばんは。
Windows環境ではいろいろ問題があるCinderですが、
軽くハマったことがあるのでメモっときます。
画像を埋め込んで使用する際ですが、Macでは問題なかったのですが、
Winだと例外違反が発生しました。



サンプルなどには以下のように画像を取り込むように書かれてますが、
loadImage( loadResource( RES ) );
これが上手くいったり行かなかったり。

次のように書いたら問題なく動きました。
loadImage( loadFile( "../resources/image.png" ) )


そんなこんなでDevJamのロゴっぽいのを作ってみました。
こんな感じのロゴTシャツ作りたいな~。

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型の変数のみ)
数値を表示


2011.04.15 | 

続けざまメモでおなじみのkaminalyです。
CinderのEvent関係をちょっこす調べたのでメモメモ。


・Eventの種類と伝播タイミング
	MouseEvent
		MouseDown
		MouseUp
		MouseWheel
		MouseMove
		MouseDrag

	KeyEvent
		KeyDown
		KeyUp

	ResizeEvent
		Resize

	FileDropEvent
		FileDrop

	TouchEvent(AppBasic継承クラスのみ)
		TouchesBegan
		TouchesMoved
		TouchesEnded

・イベントを登録
	>App継承クラス(※直接EventHandlerをoverrideするからあまり使わない。)
		CallbackId id = registerHogehoge( callback );
		を呼ぶ。

	>App継承クラス意外からは
		ci::app::App::get()でインスタンス拾って登録
		CallbackId id = ci::app::App::get()->registerHogehoge( callback );

	※Hogehogeを適宜置換える。
	※戻り値にCallbackIdが帰ってくる。
		このidはイベント解除の時に引数として使用する。
	※callbackは各種Eventを引数でとるメソッド。
		(MouseEvent, KeyEvent, ResizeEvent, FileDropEvent, TouchEvent);

	・イベントを解除
		unregisterHogehoge( CallbackId );

2011.04.13 | 

こんばんは。ムーチョです。
職場のうまい棒がものすごい勢いで減ってます。
さて今回はCinderです。
一緒に入ってるサンプル+チュートリアルが充実してるので、
それをいじりつつ作っていくのがいいと思いますが、というか
リファレンスがシンプルすぎてどう書いていいかわからないので、
サンプル+チュートリアルを見るしかないのですが、
サンプル一覧でわかりやすいのが見つからなかったので、
社内で作ってみました。(協力:kaminaly)

(続きを読む...)