私自身 iOS 開発者ですが、最近自分のゲームにレイ キャスティングを実装したので、プラットフォームに依存しない方法でこれに答えようとします。
レイキャスティング操作には 2 つのステップがあります。まず、ユーザーのタップからレイを取得する必要があります。次に、交差についてモデルを定義する三角形をテストする必要があります。これには、それらをメモリに保持するか、回復できる必要があることに注意してください。グラフィックカードの vbo に保持することはできません。
まず、ワールド座標への変換。射影行列を使用してモデルの 3 次元透視図を取得していることは間違いないため、点を非射影してワールド座標で取得する必要があります。Androidで利用できると私が信じているglutのglunprojectなど、これがすでに実装されている多くのライブラリがあります。数学的には、これは現在モデルに作用しているすべての変換の逆をとることになると思います。とにかく、コピーできるオンラインで公開されている多くの実装があります。
この時点で、投影解除しようとしているポイントの Z 座標が必要になります。実際には、Z 座標 0 で 1 回、Z 座標 1 で 1 回、2 回アンプロジェクションを行いたいと考えています。Z 座標 0 から得られるベクトルは、光線の原点であり、このベクトルを Z 座標から差し引くことによって得られます。 1ベクトルのcoordで方向が得られます。これで、モデルのポリゴンの交差をテストする準備が整いました。
私はこの論文 ( http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf ) で提示された方法で成功しました。実際の交差テスト。アルゴリズムは最後に C で実装されていますが、ほとんど問題なく Java に変換できるはずです。