【发布时间】:2015-12-28 12:55:09
【问题描述】:
尝试在 three.js 地球仪上重新定位相机我有一个国家列表,当点击返回该国家/地区的纬度和经度时。我已经检查了这些,并且很确定这就是传递给下面代码的内容。所以我点击国家,相机移动到新位置,但它在地球表面内。它在正确的国家/地区下,所以我必须缩小。这是我使用的代码,地球的半径保存在 var globeRadius 中(以防万一不是很明显)。
console.log(cameraTarget[0].lat,cameraTarget[0].lon)
var phi = cameraTarget[0].lat * Math.PI / 180;
var theta = (cameraTarget[0].lon + 90) * Math.PI / 180;
posX = globeRadius * Math.cos(phi) * Math.sin(theta);
posY = globeRadius * Math.sin(phi);
posZ = globeRadius * Math.cos(phi) * Math.cos(theta);
camera.position.set(posX,posY,posZ);
camera.lookAt(new THREE.Vector3(0,0,0));
我猜我必须以某种方式将相机高度纳入地球之上。这些是我的初始相机设置
var FOV = 45;
var NEAR = 2;
var FAR = 4000;
// setup a camera that points to the center
var camera = new THREE.PerspectiveCamera(FOV,width/height,NEAR,FAR);
camera.position.set(posX,posY,posZ);
camera.lookAt(new THREE.Vector3(0,0,0));
例如,我是否需要先将宽度/高度添加到 globalradius。如果有人能告诉我一个很好的过渡方法,也会有帮助,谢谢
【问题讨论】:
标签: three.js