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 を使用しました。それでも、常に「何も見つかりません」と表示されます。なんで?私は何を間違っていますか?
助けてくれてありがとう。