Javascript Raycaster没有';t报告与平面的交点

Javascript Raycaster没有';t报告与平面的交点,javascript,three.js,Javascript,Three.js,我试图检测与地形的碰撞,这是通过修改飞机垂直高度创建的 但Raycaster仅在所有尝试中的10%左右能够正确检测碰撞。 在以下示例中,您可以看到其中一个无法正确检测的交点: 我做错了什么 编辑:这里是JSFIDLE var camera, scene, renderer, gump = 0; var geometry, material, mesh, map, axis, ray; init(); animate(); function init() { //Create ca

我试图检测与地形的碰撞,这是通过修改飞机垂直高度创建的

但Raycaster仅在所有尝试中的10%左右能够正确检测碰撞。 在以下示例中,您可以看到其中一个无法正确检测的交点:

我做错了什么

编辑:这里是JSFIDLE

var camera, scene, renderer, gump = 0;
var geometry, material, mesh, map, axis, ray;

init();
animate();

function init() {

    //Create cam, so we can see what's happening
    camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
    camera.position.x = 500;
    camera.position.y = 300;

    //Init scene
    scene = new THREE.Scene();

    //Load terrain material
    material = new THREE.MeshBasicMaterial( { color: 0xff6666, wireframe: false } );
    geometry = new THREE.PlaneGeometry(128, 128, 127, 127);
    mesh = new THREE.Mesh( geometry, material );
    mesh.scale.set(50,50,50);
    mesh.rotation.x = -Math.PI/2;
    scene.add( mesh );

    //Create axis with position and rotation of ray
    axis = new THREE.AxisHelper( 100 );
    axis.position = new THREE.Vector3(333.2637, 216.6575, -515.6349);
    axis.rotation = new THREE.Vector3(1.6621025025, 0.119175114, -2.2270436357);
    axis.scale.z = 10;
    scene.add(axis);

    //Create actual ray, use axis position and rotation
    ray = new THREE.Raycaster();
    ray.ray.origin.copy(axis.position);
    ray.ray.direction.copy(axis.rotation);

    //Renderer
    renderer = new THREE.WebGLRenderer();
    renderer.setSize( window.innerWidth, window.innerHeight );

    document.body.appendChild( renderer.domElement );
}

function animate() {
    requestAnimationFrame( animate );

    if (mesh)
    {
        var intersecionts = ray.intersectObject(mesh);
        if (intersecionts.length > 0)
        {
            //Never actually happens
            console.log("OK");
        }

        //Move axis so you can see, that it clearly goes throught mesh object
        axis.translateZ(Math.cos(gump) * 2);
        gump += 0.01;

        //Focus camera on axis
        camera.lookAt(axis.position);
    }

    renderer.render( scene, camera );

}

编辑:根据请求添加系统规格:

Windows 7 64位

铬26.0.1410

Threejs 57

图形卡:GTX 560 Ti发现我的错误。 我想,旋转向量,用来旋转物体,方向向量,用于光线,是一样的东西。 在我把旋转矢量转换成方向矢量后,它就可以正常工作了。
如何将旋转矢量转换为方向矢量:

它应该做什么?看起来十字轴在Z轴上滑动并从地形上反弹。这只是一个动画,显示光线穿过显示的网格。它似乎与地形相交并被地形遮挡。交点随地形移动,这很可能是图形卡的问题。请发布您的规格:操作系统、浏览器、GPU…发现我的错误。我想,旋转向量,用来旋转物体,方向向量,用于光线,是一样的东西。在我把旋转矢量转换成方向矢量后,它就可以正常工作了。如何将旋转矢量转换为方向矢量: