[android-group-japan: 3874] OpenGL ESマウスピッキングの方法・対応端末について

596 views
Skip to first unread message

sakamoto

unread,
Apr 22, 2010, 4:12:16 AM4/22/10
to android-g...@googlegroups.com
OpenGL ES のマウスピッキングについて、
HT03A上では以下のAPIが未対応?なため、実現出来ず困っております。

・gl.glGetIntegerv()において
 GL11.GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES、
 GL11.GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES
 ※GLU.gluUnProject()のために使うことを想定

・gl.glReadPixels()において
 GL11ExtensionPack.GL_DEPTH_COMPONENT


そこで、知見のある方に伺いたいのですが、
他の方法でHT03A上でピッキングは可能でしょうか?

また、HT03Aでない、Xperia や Desire 、Nexus One 、他の機種では
どのような状況でしょうか?
HT03Aの未対応というのがレアケースでしょうか?

何卒、よろしくお願いいたします。

尚、ピッキングについては、下記の記事を参考にさせていただきました。
ありがとうございました。
http://chephes.cocolog-nifty.com/blog/2007/11/androidopengl_e_83dc.html
http://d.hatena.ne.jp/s_welt/20071127/1196171023


坂本 伸

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

tomoaki goto

unread,
Apr 22, 2010, 4:32:35 AM4/22/10
to android-g...@googlegroups.com
tomo です。

DirectX 派なので OpenGL のことはよく知らないのですが、
ステンシル バッファとかセレクション バッファとかを使ったピックはできないんでしょうか?
( ES には、そんなリッチな機能はない? )

sakamoto

unread,
Apr 23, 2010, 1:41:26 AM4/23/10
to android-g...@googlegroups.com
tomoさん

セレクション バッファは、
OpenGLでは、glRenderMode(GL_SELECT); と思うのですが、
OpenGL ES 1.0 、 1.1 には GL_SELECT が無いようです。

ステンシル バッファは以下のようなコードで利用できるようです。
 gl.glEnable(GL10.GL_STENCIL_TEST);
 gl.glStencilOp(GL10.GL_REPLACE, GL10.GL_REPLACE, GL10.GL_REPLACE);
 gl.glStencilFunc(GL10.GL_ALWAYS, 1, 0xffffffff);

※下記の AndroidGL_0.1.zip、の GLTutorialEleven.java がHT03Aで動きました。
http://code.google.com/p/android-gl/downloads/list


が、ステンシルバッファを使ったピック、というのが理解出来ていません、、、

ヒントを頂きまして、ありがとうございました。


2010年4月22日17:32 tomoaki goto <tomoak...@gmail.com>:

egg

unread,
Apr 23, 2010, 2:55:24 AM4/23/10
to android-g...@googlegroups.com
sakamotoさん

江川と申します。GL ESはあまり詳しくないのですが、
sakamotoさんがおっしゃる通りgetPixcelsでデプスを取る技が
使えませんので、ウインドウ座標とモデル座標との変換を自分で
計算してやるしかないのではないかと思います。
# なお先日試したAndroid機ではgluも使えませんでした。

------------------------------------------
EGAWA Takashi



2010年4月23日14:41 sakamoto <sak...@gmail.com>:

tomoaki goto

unread,
Apr 23, 2010, 3:00:19 AM4/23/10
to android-g...@googlegroups.com
tomo です。

通常は、
色を指定したり、テクスチャを指定したりしてポリゴンを描画すると思いますが、
ポリゴンの識別子みたいなもので
なんらかの作業用バッファ ( 別にステンシル バッファでなくてもいい ) に
ポリゴンを描画してやれば、
ある位置に描画されているポリゴンが簡単にわかります。

あとは、Unproject を自作するとかですが、
単純な場合であれば、
ビュー行列の逆行列とかビューポートの設定とかから、
画面を貫く線分の near 側と far 側の点が求められます。


2010年4月23日14:41 sakamoto <sak...@gmail.com>:

sakamoto

unread,
Apr 26, 2010, 11:05:45 PM4/26/10
to android-g...@googlegroups.com
江川さん

回答ありがとうございます、
すべて自前で計算、ちょっと敷居が高いですが
これを機に3Dの勉強を頑張ってみたいと思います。

> # なお先日試したAndroid機ではgluも使えませんでした。
そうなのですか、、、
これが一般に販売される携帯電話でないことを祈ります、、

Androidは端末によってスペックが異ることが、自由で良いところですが
アプリ開発にとっては難点ですね

坂本 伸

2010年4月23日15:55 egg <t.e...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages