所以,我在一个游戏世界工作,那里的一切都包含在一个天穹(巨大的球体和环境纹理应用)。
我试图找出天穹内射线的相交点,以便找出矢量播放器需要移动的方向。
到目前为止,我发现的唯一问题是光线不会被投射到天穹内,而是在它的外部放大的时候。
这就是我这边的光线传送器的样子。
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
// update the picking ray with the camera and mouse position
raycaster.setFromCamera( mouse, camera );
// raycaster.set(playerModel, c);
// calculate objects intersecting the picking ray
var intersects = raycaster.intersectObjects( scene.children, true );
console.log(intersects);
for ( var i = 0; i < intersects.length; i++ ) {
intersects[ i ].object.material.color.set( 0xff0000 );
}另外,如果有人能解释我如何得到光线投射到的矢量,我将非常感激,不是通过使用raycaster.setFromCamera( mouse, camera );,而是raycaster.set(playerModel, targetVector);,目标向量需要是天穹的位置向量吗?
发布于 2016-05-30 09:48:02
我多次使用的工作示例:
var spaceplane = [];
var spaceMaterial = new THREE.MeshBasicMaterial();
spaceMaterial.side = THREE.BackSide;
var meshSpace = new THREE.Mesh( new THREE.IcosahedronGeometry( 1000000, 1 ) , spaceMaterial );
meshSpace.rotation.order = 'XZY';
spaceplane.push( meshSpace );
//// add to the scene of course
//////////////// selection on mouse click etc...
var raycaster = new THREE.Raycaster();
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( spaceplane, true );
if ( intersects.length > 0 ) {
/// here you have intersection
}https://stackoverflow.com/questions/37513332
复制相似问题