こんにちは、最初に、これが私が一般的な質問をするつもりではない場合、本当に申し訳ありませんか?
複数の3Dオブジェクトを「エリアピッキング」する例はありますか? それは、マウスでフレームをドラッグし、その中のすべてのオブジェクトを選択することですか?
私はTHREE.Rayオブジェクトで遊んでいて、それはintersect(s)メソッドですが、すべてのXY座標をループしてトレースし、すべての交差点を見つけるには少し迷っています。
私はウェブ全体とgithubとスタックオーバーフローを調べましたが、助けは見つかりませんでした。
どんな助けでも大歓迎です。
前もって感謝します
ジュルツ
シーン上のオブジェクトをトレースしてから、すべてのXY座標をループする方がよいでしょう。 この場合、THREE.Rayを使用することはできず、オブジェクトがフレーム内にあるかどうかを判断するためにカスタムロジックを実装する必要があります。 このアプローチにより、コードが大幅に高速化されると思います。
うーん、これは興味深い問題です。
画面上の長方形は、カメラの錐体下に対応しているはずだと思います。 この錐台のマトリックスを作成できれば、錐台カリングの場合と同じチェックを試みることができます。
はい、それは理にかなっています。
私は3D座標や複雑な行列にはあまり興味がありません。
長方形の頂点(マウスドラッグ)と近距離のポイントをMatrix4.makeFrustumメソッドに渡すことによってTHREE.Matrix4を定義するとします。
次に、Matrix4をFrustum.setFromMatrixメソッドに渡してTHREE.Frustumを作成できますか?
次に、Frustum.containsメソッドを使用して、オブジェクトがその中にあるかどうかを検出しますか?
それは仕事の地獄に希望を持っているように聞こえますか?
マウスの座標は3Dワールド座標に関連していますか? 平面の近くのカメラまたはそのようなものに対するマウスの位置はどうですか?
申し訳ありませんが、私がn00bである場合は、これに対する答えが本当に必要です。
マウスの座標を3Dワールドに投影する必要があります。 この例を見てください:
http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes.html
画面の長方形に基づいて構築されたサブフラスタムを使用して、three.jsピッキングの例をエリア選択にすべての3Dオブジェクトを2D画面スペースに投影してから、画面の長方形とし、高速だと思います。
スタックオーバーフローでの関連する質問:
THREE.js2D正方形と3Dオブジェクトの交差を検出する方法
THREE.jsエリア内のすべてのオブジェクトを選択する方法
最も参考になるコメント
画面の長方形に基づいて構築されたサブフラスタムを使用して、three.jsピッキングの例をエリア選択にすべての3Dオブジェクトを2D画面スペースに投影してから、画面の長方形とし、高速だと思います。
スタックオーバーフローでの関連する質問:
THREE.js2D正方形と3Dオブジェクトの交差を検出する方法
THREE.jsエリア内のすべてのオブジェクトを選択する方法