0

目前,我基本上已经构建了一个各种角度的大型哈希表,以及它们映射到的方向,如果用户按右、上、下、左。在我的情况下,这是必需的,因为我有一组几何图形,当用户按下右时,它们都向右移动,当用户按下时,它们都向左移动......

但是,当包含这些的场景被旋转到其原始状态以外的任何位置时,这些控件需要更新/反转/等。也就是说,如果你从后面看场景,现在按左键可以让所有对象都向右移动,等等。

我试图看看是否有一种更简单的方法来应用矩阵变换,而不是硬编码将各种场景角度映射到键的大型哈希表。

4

1 回答 1

0

您可以使用位移矢量(一组这样的矢量,每个矢量用于所需的移动方向)并使用相机旋转它,或者,如果您的相机是静止的并且场景旋转,则在与场景方向相反的方向旋转位移旋转(即,如果您围绕 x 轴顺时针旋转场景,则围绕同一轴逆时针旋转位移矢量相同的角度)。更正式地说,你应该苹果旋转矩阵逆场景的旋转。

老答案:

如果我正确理解了您的问题,那么您将通过某种方式使用键盘从不同角度查看场景。好吧,人们可以通过一些方法来实现这一点,但我认为,最传统的方法之一是在按下相应键的同时旋转场景。例如,当按下左键时,在每一帧中添加(或减去)一个常数值(这将是旋转速度)到(从)围绕给定轴的场景旋转:

var speed = 0;

document.body.addEventListener('keydown', function (e) {
    switch (e.keyCode) {
        case 37: // left arrow
            speed = -0.1;
            break;
        case 39: // right arrow
            speed = 0.1;
            break;
    }
});
document.body.addEventListener('keyup', function (e) {
    speed = 0;
});

function update () {
    scene.rotateX(speed);
    renderer.render(scene, camera);
    requestAnimationFrame(update);
}
于 2016-07-14T06:25:10.080 回答