1

我试图让一个平面远离相机并具有相同的方向,因此它在视口中对齐。

我在相机前面有一个平面,与相机视口完全对齐,我想在相机前面沿对象 Y 轴翻转它,而不管相机方向如何。

以下将使我的飞机面向相机并适用于任何方向:

target.rotation.copy(camera.rotation);

下面将沿平面的 Y 轴翻转平面:

target.rotation.y += Math.PI;

到目前为止一切都好吗?除非相机旋转有一个时髦的倾斜,假设它向上和向左看,稍微向右倾斜,飞机的翻转是倾斜的,但与相机的方式不同,让我的飞机也倾斜向左还是向右……

我尝试了几件事,例如:

target.rotation.z -= camera.rotation.z;

没什么...感谢您的帮助。

4

2 回答 2

1

所以我遇到的问题是当相机处于负 z 坐标时。这会导致 Y 轴上的翻转变得混乱。

所以基本上你会做这样的事情:

    var target = new THREE.Object3D();
    //position
    target.position.copy(s.camera.position);
    target.position.add(THREE.Utils.cameraLookDir(s.camera).multiplyScalar(300));
    //rotation
    target.rotation.copy(s.camera.rotation);
    target.rotation.y += PI;
    target.rotation.z = -s.camera.rotation.z;
    if (s.camera.position.z < 0) {
        target.rotation.z = s.camera.rotation.z;
    }

编辑:

将以下内容添加到程序中的适当位置。

camera.rotation.eulerOrder = 'XZY';
target.rotation.eulerOrder = 'XZY';

似乎解决了以前遇到的倾斜问题!(见下文)

解决:

在某些情况下,翻转平面以错误的方式倾斜,例如在负 z 坐标中并且 y 旋转不等于 0 时,例如:空间中的点悬停并注视 0、0、0。

于 2013-07-17T19:21:17.727 回答
0

这是我找到此页面时正在寻找的解决方案(取自答案):

mesh.lookAt( camera.position );

然后网格的局部 z 轴应指向相机。

于 2014-02-11T17:53:41.707 回答