1

three.js の 3D ボディがクリックされたかどうかを確認するためにピッキング レイを構築しようとしています。現時点では機能しません。これらのThree.js raycast は空の交差配列を生成し、これらの three.js Raycaster intersectObjectsのヒントに従いました。

私の現在のコードはこれです:

function checkClick() {
                // On every click, check for body hit
                clickInfo.x = event.clientX;
                clickInfo.y = event.clientY;

                var x = ( clickInfo.x / window.innerWidth ) * 2 - 1;
                var y = -( clickInfo.y / window.innerHeight ) * 2 + 1;

                var objects = [];
                objects.push(model);
                var raycaster = projector.pickingRay(directionVector.clone(),camera);
                var intersects = raycaster.intersectObjects(scene.children);
                if (intersects.length) {
                     alert("found something");
                }
                else {
                     alert("found nothing");
                }
           }

上記の 2 番目のリンクされた例では、ユーザーが以前にすべてを単独で計算する必要があったため、projector.pickingRay によって多くの作業が節約されることがわかりました。しかし、うまくいきません。JS エラーは表示されず、「何も見つかりませんでした」というメッセージだけが表示されます (交差配列は空です)。raycaster.intersectObjects にはパラメーターとして配列が必要であることを知っているため、オブジェクトに追加するシーン (モデル) に 1 つのオブジェクトがあります。それでもうまくいきません。次に、最初のリンクされた例のヒントに従い、代わりに scene.children を使用しました。それでも、常に「何も見つかりません」と表示されます。なんで?私は何を間違っていますか?

助けてくれてありがとう。

4

1 に答える 1

-1

マウスをホバーすると 3D オブジェクトの色が変わる実際の例へのリンクを次に示します。おそらく、このコードはニーズに合わせて調整できますか?

http://stemkoski.github.io/Three.js/Mouse-Over.html

それが役に立てば幸い!

于 2013-06-11T16:12:38.553 に答える