嗨所以我正在创建从顶点到顶点的光线,看看它们是否拦截了平面几何体。如果他们这样做,那么我采取拦截点并将其推送到顶点数组。但是我不确定我是否正确实现了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);
}
}
答案 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并不总是一样的。请参阅此帖子的评论。