Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Camera three.js:平移摄影机后围绕原点旋转_Camera_Rotation_Three.js_Pan - Fatal编程技术网

Camera three.js:平移摄影机后围绕原点旋转

Camera three.js:平移摄影机后围绕原点旋转,camera,rotation,three.js,pan,Camera,Rotation,Three.js,Pan,我有一个平面/板,有一个网格,大约是1100 x 1100。我有平移,缩放和旋转工作,除了板在平移后移回屏幕中心。所以,如果我根本不平移棋盘,那么一切都会正常。在我平移棋盘后,当我尝试旋转它时,它会移回屏幕的中心。我不知道如何更改相机的原点,使其围绕电路板的中心旋转。它看起来像是绕着相机的中心旋转 变压半径=1500,θ=45*0.5,下θ=45*0.5; var-fov=45; var mouse2D=新的三个向量3(0,10000,0.5) cameraX=半径*数学sin(三个数学degT

我有一个平面/板,有一个网格,大约是1100 x 1100。我有平移,缩放和旋转工作,除了板在平移后移回屏幕中心。所以,如果我根本不平移棋盘,那么一切都会正常。在我平移棋盘后,当我尝试旋转它时,它会移回屏幕的中心。我不知道如何更改相机的原点,使其围绕电路板的中心旋转。它看起来像是绕着相机的中心旋转

变压半径=1500,θ=45*0.5,下θ=45*0.5; var-fov=45; var mouse2D=新的三个向量3(0,10000,0.5)

cameraX=半径*数学sin(三个数学degToRad(θ)); 摄像机=1000; cameraZ=radius*Math.cos(3.Math.degToRad(θ))

摄像机=新的三个透视摄像机(视野,视窗内宽/视窗内高,11000); 摄像机位置设置(cameraX、cameraY、cameraZ)

场景=新的三个。场景(); 摄像机。注视(场景。位置)

render()

ThreeBoard.prototype.render=函数(){


})

你考虑过用
THREE.OrbitControls
来代替吗?我考虑过,但效果不太好。我不记得为什么了。我再试一次。哦,等等,我还没用过轨道控制。我看了一眼,以为上面写着轨迹球控制。我已经设置了我的代码以再次使用轨迹球控件。我遇到的问题是电路板仍然没有正确旋转,但至少现在它没有跳回屏幕中央。
mouse2D.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse2D.y = - (event.clientY / window.innerHeight) * 2 + 1;

// rotate
if (isMouseDown && isShiftPressed && !isCtrlPressed) {
    theta = ((event.pageX - mouse2D.x) * 0.5) + onMouseDownTheta;

    cameraX = radius * Math.sin(THREE.Math.degToRad(theta));
    cameraZ = radius * Math.cos(THREE.Math.degToRad(theta));

    camera.position.set(cameraX, cameraY, cameraZ);

    camera.lookAt(scene.position);
}

// pan
if (isMouseDown && isShiftPressed && isCtrlPressed) {
    theta = ((event.pageX - mouse2D.x) * 0.5) + onMouseDownTheta;

    cameraX += 10 * mouse2D.x;
    // cameraY += 10;
    cameraZ -= 10 * mouse2D.y;

    camera.position.set(cameraX, cameraY, cameraZ);

    // camera.lookAt(scene.position);
}

renderer.render(scene, camera);