如何在组中的特定网格上捕获点击事件
how to catch the click event on a specific mesh in a group
我有一组圆形几何元素,它们位于二十面体元素的顶点上。我想使用 jQuery 在每个单独的圆元素上执行单击事件。那么如何在这些元素上实现jQuery点击事件..
建议我做一些好的参考..
使用光线投射方法。基本机制是这样的:
(三个修订版 70 和 javascript vanila)
1) 设置目标
var targets = [],
// When defining your 3d objects, use the push method
// to select the meshes you want to intersect.
// targets.push(objectMesh);
2) 设置 raycaster
var raycaster = new THREE.Raycaster(),
mouse = new THREE.Vector2(),
intersects;
3) 与目标相交
searchTarget(event){
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
intersects = raycaster.intersectObjects(targets);
if (intersects.length > 0){
// Use the intersected objects:
// intersects[0] represents the foremost object that was hovered
}
}
4) 设置监听器
renderer.domElement.addEventListener('mousemove', searchTarget, false);
您也可以使用 jQuery:$( "#canvas" ).mousemove( searchTarget );
我有一组圆形几何元素,它们位于二十面体元素的顶点上。我想使用 jQuery 在每个单独的圆元素上执行单击事件。那么如何在这些元素上实现jQuery点击事件..
建议我做一些好的参考..
使用光线投射方法。基本机制是这样的: (三个修订版 70 和 javascript vanila)
1) 设置目标
var targets = [],
// When defining your 3d objects, use the push method
// to select the meshes you want to intersect.
// targets.push(objectMesh);
2) 设置 raycaster
var raycaster = new THREE.Raycaster(),
mouse = new THREE.Vector2(),
intersects;
3) 与目标相交
searchTarget(event){
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
intersects = raycaster.intersectObjects(targets);
if (intersects.length > 0){
// Use the intersected objects:
// intersects[0] represents the foremost object that was hovered
}
}
4) 设置监听器
renderer.domElement.addEventListener('mousemove', searchTarget, false);
您也可以使用 jQuery:$( "#canvas" ).mousemove( searchTarget );