私はここに完全なコードを持ってTHREE.Pointsオブジェクトで特定のポイントをクリックする方法を教えてください。
function dynamic(x) { x.dynamic = true; return x; }
geometry.addAttribute("position", dynamic(new THREE.BufferAttribute(positions, 3)));
geometry.addAttribute("color", dynamic(new THREE.BufferAttribute(colors, 3)));
var grid = new THREE.Points(geometry, material);
scene.add(grid);
function mouseDownHandler(event) {
if (event.button == 0) {
event.preventDefault();
var mouse = new THREE.Vector2();
var box = canvas.getBoundingClientRect();
mouse.x = ((event.clientX - box.left)/(box.right - box.left)) * 2.0 - 1.0;
mouse.y = ((event.clientY - box.bottom)/(box.top - box.bottom)) * 2.0 - 1.0;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObject(grid);
if (intersects.length > 0) {
// Why does my intersect not work?
// I _believe_ I'm calculating the mouse positions correctly.
// But, the intersects are always way off. (Or, I'm misinterpreting
// something...)
console.log("mouse: ", mouse);
console.log("First Intersect:", intersects[0]);
console.log("First Point:", intersects[0].point);
}
}
}
...ポイントの2D表面上の点を決定するためにraycasterを使用しようとしている: https://som.hex21.com/threejs/wtf/ページで、 https://som.hex21.com/threejs/wtf/js/gridsearch.jsは、コード..です
私の問題はmouseDownHandlerにあります。基本的には、マウスをクリックすると、クリックされたポイントを教えてください。しかし、グリッドの左下のをクリックすると、マウスは(近く){-1、-1}になります(これは予想されるものだと思います)、右上が{1,1}の近くにあります。
クリックされたポイントのインデックスをどのように読み込むのですか?私は4つのコーナーポイントをすべてクリックしました。少なくとも、のうち1つがで、私がデータを構築した方法で与えられていると思います。 (ループのためにちょうど2つ入れ子になっています)しかし、それらは決して存在しません。また、intersects [0] .pointの点は常に非常に遠く感じられます。私は間違って何をしていますか?
ありがとうございます!
ありがとう!しかし、私は自分の道と道が同じであることはほぼ肯定的です。それにもかかわらず、私はその変更を行いましたが、それでも正しい場所は得られません。他のアイデア? (サイト上にあるものは、あなたが現在提案している方法でコードを持つべきです...) – bnsh
あなたの 'mouse.y'の兆候は同じではありません。多分、フィドルが整っています。 – gaitat
私は持っています: \t \t \t var box = canvas.getBoundingClientRect(); \t \t \t var mouseX = event.clientX-box.left; \t \t \t var mouseY = event.clientY - box.top; \t \t \t VARマウス=新しいTHREE.Vector2( \t \t \t \t 2 *(するmouseX/canvas.width) - 1、 \t \t \t 1 - 2 *(mouseYの/ canvas.height))。 私のコードでは...(私はちょうどカットアンドペーストしました)、それでも動作しません..? コードはコメントで書式設定されません。 – bnsh