私は、3Dシーンが表示され、画面をクリック/タップして領域を選択できるAndroidアプリケーションを開発中です。場面はかなり異なる平面の(ゲーム)ボードです。
問題は、ボード上のクリックした領域を実際のスクリーンスペース座標からどのように取得するのかです。モデル空間の座標への投影空間の逆投影
(ほとんど)すべての必要なパラメータにアクセスできるので、gluUnProject()
を使用する予定です。残念ながら、私はwinZ
パラメータを紛失しており、タッチイベントがGLスレッドとは異なるスレッドで発生しているため、現在の深さを取得できません。
私の新しい計画では、gluUnProjectを使用していますが、winZ
が0である場合、結果ポイントをボードに投影します(ボードスペースはから10,0,10
まで伸びます)。しかし、これを行う方法?
誰かがこれを行うために必要な数学を助けてくれたら(行列は私の最強の側面ではなかった)、もっと良い解決策を見つけることができたらとてもうれしいです。
明確にする。
赤い矩形はデバイスの画面を表し、緑色のxはタッチイベントを表し、黒い四角形はボード(灰色の細分は1単位の正方形を表します)です。私はタッチがどこで起こったのかを把握する必要があります(この場合、正方形である1,1)。
は、あなたの答えをありがとう、残念ながらそれは簡単ではありません、ボードはそう単純で、視線方向に対して垂直ではありませんこのようなソリューションは機能しません。 問題を視覚化するのに役立つ簡単なグラフィックで質問を更新しました。 – Jave
ああ、私は飛行機/ボードが世界ではなくMODEL空間で記述されていることを意味しています(今は編集できません、電話で書く) – Jave