如何旋转相机,使其面向/高于球体上的点(Three.js)

How to rotate camera so it faces/above point on sphere (Three.js)

本文关键字:高于球 Three js 旋转 何旋转 相机      更新时间:2023-09-26

我想知道是否有人知道如何旋转相机,使相机直接面向球体上的点上方。

更新

收音机的回答是正确的。经过一些调试后,我的坐标好像颠倒了。

我创建了一个小提琴:http://jsfiddle.net/kbtn6pz5/

这会将摄影机移动到球体上的一个随机点上,应用lookAt属性,然后设置摄影机在球体表面上的高度。

基于小提琴样板。。。

    var camera, scene, renderer, geometry, material, mesh;
init();
animate();
function init() {
    scene = new THREE.Scene();
    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);


    scene.add(camera);
        var rad = 200;
    geometry = new THREE.SphereGeometry( rad, 32, 32 );
    material = new THREE.MeshNormalMaterial();
    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
    var point = THREE.GeometryUtils.randomPointsInGeometry( geometry, 1 );
    var altitude = 100;
    var coeff = 1+ altitude/rad;
    camera.position.x = point[0].x * coeff;
    camera.position.y = point[0].y * coeff;
    camera.position.z = point[0].z * coeff;
    camera.lookAt(mesh.position);
    renderer = new THREE.CanvasRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
}
function animate() {
    requestAnimationFrame(animate);
    render();
}

function render() {
    renderer.render(scene, camera);
}