THREEjs Raycaster拦截对象问题

时间:2016-03-22 08:12:08

标签: javascript 3d three.js

嗨所以我正在创建从顶点到顶点的光线,看看它们是否拦截了平面几何体。如果他们这样做,那么我采取拦截点并将其推送到顶点数组。但是我不确定我是否正确实现了raycaster,因为这段代码片段并没有按照我的意图行事。任何帮助将不胜感激!

    var vertlen = geometry.vertices.length;
  var vertarray = geometry.vertices;
  var planey = plane.vertices[0].y; 
  var final = new THREE.Geometry();
  var intersects;
  var intersectpoint;

  var raycaster = new THREE.Raycaster();
  for (var i = 0; i < vertlen; i++){
    for (var k = 0; k < vertlen; k++){
        raycaster.set(vertarray[i], vertarray[k]);
      intersects = raycaster.intersectObject(plane);
      inpoint = intersects.point;
      final.vertices.push(inpoint);
    }
  }

1 个答案:

答案 0 :(得分:0)

“i”和“k”始终相同。因此,您正在测试一个点是否与一个平面相交。尝试这样的事情:

var k;  
for (var i = 0; i < vertlen; i++){
    k = i + 1;
    if (k === vertlen) 
    {
      k = 0;
    }
    raycaster.set(vertarray[i], vertarray[k]);
    intersects = raycaster.intersectObject(plane);
    inpoint = intersects.point;
    final.vertices.push(inpoint);    
  }

...... 2天后:我写的是错的。我和k并不总是一样的。请参阅此帖子的评论。