Javascript Raycaster没有';t报告与平面的交点
我试图检测与地形的碰撞,这是通过修改飞机垂直高度创建的 但Raycaster仅在所有尝试中的10%左右能够正确检测碰撞。 在以下示例中,您可以看到其中一个无法正确检测的交点: 我做错了什么 编辑:这里是JSFIDLEJavascript 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
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…发现我的错误。我想,旋转向量,用来旋转物体,方向向量,用于光线,是一样的东西。在我把旋转矢量转换成方向矢量后,它就可以正常工作了。如何将旋转矢量转换为方向矢量: