EdgesGeometry:光线投射不准确

Lor*_*ick 2 javascript three.js

我在 PlaneGeometry 上使用 EdgesGeometry,它似乎在鼠标事件中创建了一个更大的命中框。然而,这在使用 CircleGeometry 时并不明显。我有以下几点:

    createPanel = function(width, height, widthSegments) {

      var geometry = new THREE.PlaneBufferGeometry(width, height, widthSegments);

      var edges = new THREE.EdgesGeometry( geometry );

      var panel = new THREE.LineSegments( edges, new THREE.LineBasicMaterial({ 
      color: 0xffffff }));

      return panel;

    }

   var tile = createPanel(1.45, .6, 1);
Run Code Online (Sandbox Code Playgroud)

现在我正在使用一个名为 RayInput 的库,它为我完成所有的光线投射,但想象一下我只是使用一个普通的 raycaster 来处理鼠标事件。没有edges和只使用平面,碰撞的边界是准确的。

添加EdgesGeometry后,垂直hitbox似乎显着增加,因此,当我什至没有点击对象时,就会检测到对象被点击。水平碰撞箱似乎仅略有增加。我以前从未使用过 EdgesGeometry 所以有人知道发生了什么吗?

提前致谢。

Wes*_*ley 5

如果您针对THREE.Line或进行光线投射THREE.LineSegments,则应将Line.threshold参数设置为适合场景比例的值:

raycaster.params.Line.threshold = 0.1; // default is 1
Run Code Online (Sandbox Code Playgroud)

三.js r.114