我有一个透视相机,俯视Z轴。我想在相机前面(Y轴)的给定距离(比方说100)找到地板的X,Z位置。
相机旋转顺序为'YXZ',因此Y描述偏航。
camera = new THREE.PerspectiveCamera(45, window.app.width / window.app.height, 1, 10000);
camera.rotation.order = "YXZ";
camera.position.z = 0;
camera.position.y = 50;
我正试图直接在摄像机所在的位置前面计算区域的XZ:
const inFrontOfCamera = {
x: camera.position.x + (Math.cos(camera.rotation.y) * 100),
z: camera.position.z + (Math.sin(camera.rotation.y) * 100),
}
当我在某些方向看时,这是有效的,而不是其他方向。我觉得我非常接近,但我的理解有差距!
非常感谢任何指针和解决方案。
感谢。
答案 0 :(得分:1)
var raycaster = new Raycaster();
raycaster.setFromCamera( new Vector2(), camera );
var inFrontOfCamera = new Vector3();
raycaster.ray.at( 100, inFrontOfCamera );
如果你在地平面上寻找一个点:
var ground = new Plane() //defaults to horizontal plane at y=0
raycaster.ray.at( raycaster.ray.distanceToPlane( ground ), inFrontOfCamera );
答案 1 :(得分:0)