获取鼠标在对象或GridHelper对象上的位置

时间:2019-06-05 05:38:47

标签: javascript three.js

如果鼠标位于多维数据集/球体几何体上,或者位于地面上(使用GridHelper),我必须能够找到鼠标位置

我正在尝试在用户鼠标所在的位置制作形状,我拥有制作形状所需的所有代码,但是在正确设置位置时遇到了困难

这是给我最好结果的代码

var vec = new THREE.Vector3(); // create once and reuse
var pos = new THREE.Vector3(); // create once and reuse

vec.set(
  ( container.offsetWidth / window.innerWidth ) * 2 - 1,
  - ( container.offsetHeight / window.innerHeight ) * 2 + 1,
   0.5
);

vec.unproject( camera );
vec.sub( camera.position ).normalize();

var distance = - camera.position.z / vec.z;
pos.copy( camera.position ).add( vec.multiplyScalar( distance ) );

尽管这似乎与相机的位置有关,即使如此,它也不是相机的确切位置,我也尝试过重用其他代码,例如the interactive cubes example that uses a Raycaster from three js,但这似乎也是何时可以检测到相交点随机排列。

如果用户将鼠标放在网格上会发生什么,我应该得到坐标(即2.4,-5、0,当然比这要精确得多),并说用户将鼠标放在形状上,鼠标在场景中的位置(触摸形状)(即2.4,-5、3)

0 个答案:

没有答案