Three.js: エリアピッキング

作成日 2012年04月27日  ·  5コメント  ·  ソース: mrdoob/three.js

こんにちは、最初に、これが私が一般的な質問をするつもりではない場合、本当に申し訳ありませんか?

複数の3Dオブジェクトを「エリアピッキング」する例はありますか? それは、マウスでフレームをドラッグし、その中のすべてのオブジェクトを選択することですか?

私はTHREE.Rayオブジェクトで遊んでいて、それはintersect(s)メソッドですが、すべてのXY座標をループしてトレースし、すべての交差点を見つけるには少し迷っています。

私はウェブ全体とgithubとスタックオーバーフローを調べましたが、助けは見つかりませんでした。
どんな助けでも大歓迎です。

前もって感謝します
ジュルツ

Question

最も参考になるコメント

全てのコメント5件

シーン上のオブジェクトをトレースしてから、すべての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

このページは役に立ちましたか?
0 / 5 - 0 評価