ThreeJS X Rotation 表现异常
ThreeJS X Rotation behaving unexpectedly
我正在制作一个 ThreeJS 演示,我目前正在使用箭头键来旋转相机。起初事情似乎进展顺利。我可以成功地上下左右旋转。但是,当我向左转,然后尝试向上或向下旋转时,它会上下旋转,但不是相对于我当前的位置 - 它就像我根本没有向左旋转一样。
这是我当前的渲染代码:
function render() {
plane.rotation.y += 0.005;
cube.rotation.z += 0.01;
cube.rotation.y += 0.01;
if(window.isLeftDown){
camera.rotation.y += 0.01;
}
if(window.isRightDown){
camera.rotation.y -= 0.01;
}
if(window.isUpDown){
camera.rotation.x -= 0.01;
}
if(window.isDownDown){
camera.rotation.x += 0.01;
}
requestAnimationFrame( render );
renderer.render( scene, camera2, renderTarget, true);
renderer.render( scene, camera );
}
有什么想法吗?
有关 three.js 中旋转工作原理的说明,请参阅 this answer。
post 建议将欧拉阶数更改为 YXZ
。
camera.rotation.order = 'YXZ';
但是,在您的情况下,您可能会发现使用 rotateX()
/rotateY()
方法更可取。不要更改欧拉顺序,而是使用此模式:
if( window.isLeftDown ){
camera.rotateY( 0.01 ); // or rotateX( +/- 0.01 )
}
您选择的解决方案取决于您喜欢的行为。
three.js r.71
我正在制作一个 ThreeJS 演示,我目前正在使用箭头键来旋转相机。起初事情似乎进展顺利。我可以成功地上下左右旋转。但是,当我向左转,然后尝试向上或向下旋转时,它会上下旋转,但不是相对于我当前的位置 - 它就像我根本没有向左旋转一样。
这是我当前的渲染代码:
function render() {
plane.rotation.y += 0.005;
cube.rotation.z += 0.01;
cube.rotation.y += 0.01;
if(window.isLeftDown){
camera.rotation.y += 0.01;
}
if(window.isRightDown){
camera.rotation.y -= 0.01;
}
if(window.isUpDown){
camera.rotation.x -= 0.01;
}
if(window.isDownDown){
camera.rotation.x += 0.01;
}
requestAnimationFrame( render );
renderer.render( scene, camera2, renderTarget, true);
renderer.render( scene, camera );
}
有什么想法吗?
有关 three.js 中旋转工作原理的说明,请参阅 this answer。
post 建议将欧拉阶数更改为 YXZ
。
camera.rotation.order = 'YXZ';
但是,在您的情况下,您可能会发现使用 rotateX()
/rotateY()
方法更可取。不要更改欧拉顺序,而是使用此模式:
if( window.isLeftDown ){
camera.rotateY( 0.01 ); // or rotateX( +/- 0.01 )
}
您选择的解决方案取决于您喜欢的行为。
three.js r.71