Opengl es ThreeJS射线与不可见平面相交?

Opengl es ThreeJS射线与不可见平面相交?,opengl-es,3d,webgl,three.js,Opengl Es,3d,Webgl,Three.js,我一直在研究ThreeJS,但我无法理解当前的问题 当我从我的相机投射光线时,它有太多的交点,其中一些甚至不接近我的实际平面。我应该找到交叉点,它实际上穿透了我的可见平面。有什么办法吗 示例(双击平面,每个框表示交叉点。应与镀铬和FF一起使用): 您需要调用几何体上的计算质心和计算面法线。即使这样,相交代码也只能在平面上工作。如果几何体中需要非平面四边形,则需要使用三角形。或者修复Three.js中的错误(提交至) 另外,将renderer.domeElement移动到页面的左上角 简言之,请尝

我一直在研究ThreeJS,但我无法理解当前的问题

当我从我的相机投射光线时,它有太多的交点,其中一些甚至不接近我的实际平面。我应该找到交叉点,它实际上穿透了我的可见平面。有什么办法吗

示例(双击平面,每个框表示交叉点。应与镀铬和FF一起使用):

您需要调用几何体上的计算质心和计算面法线。即使这样,相交代码也只能在平面上工作。如果几何体中需要非平面四边形,则需要使用三角形。或者修复Three.js中的错误(提交至)

另外,将renderer.domeElement移动到页面的左上角

简言之,请尝试以下方法:

var s = renderer.domElement.style;
s.left = s.top = '0px';
s.position = 'absolute';

var planeGeo = new THREE.PlaneGeometry(400, 200, 40, 40);
for ( var i = 0, l = planeGeo.vertices.length; i < l; i ++ ) {
  // planar quad faces 
  var p = planeGeo.vertices[i].position;
  p.z = Math.sin(p.y / 20)*40;
}
planeGeo.computeFaceNormals();
planeGeo.computeCentroids();

您尝试过最新版本的Threejs吗?代码中有一个问题是画布没有对齐到页面的左上角,所以鼠标坐标有点偏移。使用未修改的平面几何体测试代码,一切正常。如果我向顶点z坐标添加偏移,返回的交点是错误的(为了有趣的可视化,请在mousemove处理程序中执行相交测试&vis)。
THREE.GeometryUtils.triangulateQuads(planeGeo);