ダブルクリック
ダブルクリックのイベントを追加してみた。
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だったらうれしいなあ。