ダブルクリック

ダブルクリックのイベントを追加してみた。

int CHand::Click(void)
{
	if(!mainCursor) return(0);

	int ret;

	if(mainCursor->selectObject) {
		if(CAnimeManager::currentTime - clickedTime <= doubleClickTime) {
			mainCursor->selectObject->DoubleClick();
			clickedTime = -(doubleClickTime + 1);
		} else {
			mainCursor->selectObject->Click();
		}
		ret = 0;
	} else {
		ret = mainCursor->Click();
		clickedTime = CAnimeManager::currentTime;
	}

	return(ret);
}

普通に一定時間(doubleClickTime)内に二回クリック(携帯のマーカーならセレクト二回押し、紙のマーカーならくっつけてすぐ離す)すると、DoubleClick()が呼び出される仕組み。
これでもう少し複雑なインターフェイスが作れるようになるだろう。

しかしまあ、自分で読み直してみてもARDeskTopのイベントの内部処理はややこしいと思う。あんまり手を付けたくはないなあ。いくつか把握してるバグはあるけど。

http://wiki.livedoor.jp/wah_wah_hawah/d/%c1%e0%ba%ee%ca%fd%cb%a1?wiki_id=73030

リングキーボード

ちょっと前に作ったやつだけど。
ボタンをリング状に配置して、その中に指を突っ込んで文字を入力する。
空中で何も衝突するものがない中で手首を振るのは大変なので、指を振るだけで文字入力できるようにしたかった。

奥にスペースとバックスペースが配置されている。

空間くり抜き

FLARToolKitなどでもおなじみの空間をくり抜くやつをやってみた。
正直OpenGLは得意ではないのが、glBlendFuncやglCullFaceをいじくって何とか完成させた。

void CReverseCube::DrawShape(void)
{
	int i, j;

	glEnable(GL_CULL_FACE);

	glDepthMask(GL_TRUE);

	glBlendFunc(GL_ZERO, GL_ONE);
	glCullFace(GL_FRONT);

	for(i = 1; i < 6; i++) {
		glNormal3d(normal[i].v[0], normal[i].v[1], normal[i].v[2]);

		glBegin(GL_POLYGON);
		for(j = 0; j < 4; j++) {
			glVertex3d(vertex[face[i][j] ].v[0], vertex[face[i][j] ].v[1], vertex[face[i][j] ].v[2]);
		}
		glEnd();
	}

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glCullFace(GL_BACK);

	if(GetAlpha() < 1.0f)
		glDepthMask(GL_FALSE);

	for(i = 1; i < 6; i++) {
		glNormal3d(-normal[i].v[0], -normal[i].v[1], -normal[i].v[2]);

		glBegin(GL_POLYGON);
		for(j = 0; j < 4; j++) {
			glVertex3d(vertex[face[i][j] ].v[0], vertex[face[i][j] ].v[1], vertex[face[i][j] ].v[2]);
		}
		glEnd();
	}

	glDisable(GL_CULL_FACE);
}

これで四次元ポケットみたいなのができないかな。
いわゆるこれ。


参考サイト:
ポリゴンの裏表の描画 - OpenGL de プログラミング - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/mikk_ni3_92/d/%A5%DD%A5%EA%A5%B4%A5%F3%A4%CE%CE%A2%C9%BD%A4%CE%C9%C1%B2%E8

電脳コイル・磯監督とセカイカメラ・井口代表の対談

電脳コイル・磯監督とセカイカメラ・井口代表が語る、新しい現実
http://ascii.jp/elem/000/000/409/409940/

の6ページ目。

磯 「開放されている」というのは重要だと思うんです。セカイカメラの鍵であるGPSにしてもアメリカがたまたま開放しているだけであって。そういう「好きに使っていいですよ」という要求のさほど高くない感覚を共有できるといいですよね。

 最近だと「ARToolkit」*1が非常に面白い映像を生み出しています。それは当座の目標が「空間に穴が空く」「マウス代わりになる」といったハードルの低いもので、そのあたりが開発の面白さをもたらすんだと思います。

http://ascii.jp/elem/000/000/409/409940/index-6.html

>「マウス代わりになる」
!!
これってARDeskTopの事かなあ。空気クレヨンもマウス代わりにしてるけど。
ARDeskTopだったらうれしいなあ。

カーソル用マーカーの小型化(その2)

どうせなら手の指全部にマーカーを付けてみよう、と思いやってみた。
1.0cmの幅のマーカーをせっせと10個も作った。指にいちいち貼り付けるのも面倒なので、手袋に全部くっつけた。

で、電脳キーボード打ってみた。

使いづらい!やはり指全部にマーカーはいらない(意図しないところを押してしまう)。やはり4つくらいが最適だと思う。5fpsしかないのもきつかった。
あと、例え解像度が上がっても小さすぎるマーカーは良くないかも。

          • -

あとニコ動に「わうわうP」タグ付けてくれた人、ありがとう!

カーソル用マーカーの小型化

まあ、立方体マーカーは面倒くさいので、とりあえずマーカーがどれだけ小さくてもいけそうなのか試してみた。
とりあえずマーカーの幅1.3cmで、ファイルケースの角を切って貼り付けてみた。


今までのが2.5cmだけど、まあ普通に動作した。
じゃあ、と言うことで、マーカーの幅1.0cmにして直接指に貼り付けて使ってみた。


ん〜、まあ使えるけどあまり小さいのも使いづらいかもしれない。