OpenGL ES を使用して、テクスチャ付きの立方体を作成しました。私は現在、テクスチャーのある各面をタップ可能にすることを検討しているため、特定の面に触れると異なるビューに移動する立方体を作成できます。
どうすればこれを実装できますか?
さらに、キューブのどの面が現在表示されているかを知るにはどうすればよいですか?
オブジェクトの選択、またはあなたの場合のように、OpenGL のオブジェクトの面を実行するには、さまざまな手法があります。
chutuが言ったように、それは実行可能な解決策です。
とにかく私があなたに提案する解決策は、カラーピッキングテクニックです.
これは、ユーザーが画面上で「クリック」したときに、バックバッファー内のオブジェクトまたはオブジェクトの面を事前に決定された色でレンダリングすることにあります。レンダリングはテクスチャに行われ、ジョブはユーザーがクリックしたピクセルの色を読み取ることです。
ピクセルの色がわかれば、どのオブジェクトまたは面がクリックされたかを簡単に判断できます。
たとえば、6 つの面を持つ立方体があり、各面に色 (つまり、赤、青、黄、オレンジ、緑、白) を割り当て、割り当てた色をプログラムのロジックのどこかに保存するとします。ユーザーがクリックすると、これらの偽の色でキューブをレンダリングし、色を読み取ってから、実際の色/テクスチャで画面に再度レンダリングします。プロセスの最後に、黄色などのピクセルの色を確認し、そこから選択を決定します。
これが何らかの形で役立つことを願っています。
マウスを使用するゲームで使用される一般的な 3D グラフィック タスク。タッチした画面上の X と Y の位置を計算し、その位置 (Z = 0) から Z = 無限大に向かう光線を作成し、その光線を (カメラ空間から) ワールド空間に変換する必要があります。次に、その光線を使用して、最初に交差する三角形を計算します。
このための数学とアルゴリズムについては、Google で「レイ トライアングル インターセクション」を検索してください。単純な立方体の場合、すべての三角形を反復処理できます。より複雑なシーンの場合は、パフォーマンスを向上させるために (octtrees、bsps などを使用して) 三角形を空間的にハッシュする必要があります。