2011-06-30 5 views
1

私はあなたが画面に触れる画面上の場所にOpenGLオブジェクト(三角形など)を持つ方法を探しています。私は今あなたのタッチの開始とそれをどこにドラッグしたかの違いに基づいて、画面上を移動する3Dピラミッドを画面上に持っています。
通常のsurfaceViewsでは、私はちょうどelement.x = event.getX()のようなことをすることができますが、これはOpenGLでは動作しません。誰にでもアイデアはありますか?
ps:私はjava/Androidを使用しています。OpenGL-ES:タッチの座標にオブジェクトを設定するにはどうすればいいですか?

答えて

2

OpenGLはサーフェスビューと似ていないため、各要素は永続的です。これはペンやブラシに相当する3Dです。自分ですべてのデータを追跡する必要があります。

あなたのタッチイベントハンドラでは、入力座標を使用してレイを投影して、ビューに垂直な平面を作成します。あなたはこの投影法を自分で実装しなければなりませんが、それは簡単です:「ray plane intersection」を検索してください。これは、ユーザーがタッチしたスクリーン上のポイント投影に対応する、平面上の座標を与えます。この座標を使用してオブジェクトを変換し、シーンを再描画します。

+2

@ user717572:あなたは何を期待しましたか?いくつかのスクリーン座標を与え、オブジェクトにこれを適用するいくつかのマジックOpenGL関数?これはOpenGLの設計方法ではありません。 OpenGLは "オブジェクト"を扱っていません(オブジェクトを持っていますが、テクスチャ、シェーダ、つまり描画のために必要なリソースです。描画するものではありません)。あなたはOpenGLについて具体的に尋ねましたが、私の答えは次のとおりです。OpenGLはこれらのことを扱っていません。 YOURSELFを実装するか、ライブラリを使用する必要があります。そして、私はちょうどあなたに何をすべきかを教えました:スクリーンの位置に基づいて、飛行機を飛行機に投影します。 – datenwolf

関連する問題