首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >背离相机与视口对齐的Three.js平面

背离相机与视口对齐的Three.js平面
EN

Stack Overflow用户
提问于 2013-07-17 05:38:21
回答 2查看 4K关注 0票数 1

我试着用相同的方向让一个平面远离相机,这样它就在视口中对齐了。

我在摄影机前面有一个平面,与摄影机视口完全对齐,并且我想沿对象Y轴在摄影机前面翻转它,而不考虑摄影机方向。

下面将使我的平面朝向相机,并适用于任何方向:

代码语言:javascript
运行
复制
target.rotation.copy(camera.rotation);

然后,以下代码将沿平面的Y轴翻转平面:

代码语言:javascript
运行
复制
target.rotation.y += Math.PI;

到目前为止一切都好吗?除非相机旋转有一个奇怪的倾斜,假设它是向上看,向左倾斜,稍微向右倾斜,飞机的翻转是倾斜的,但与相机的方向不同,留下一个向左或向右倾斜的平面……

我尝试了几种方法,例如:

代码语言:javascript
运行
复制
target.rotation.z -= camera.rotation.z;

没什么..。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-07-18 03:21:18

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

所以基本上你会这样做:

代码语言:javascript
运行
复制
    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;
    }

编辑:

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

代码语言:javascript
运行
复制
camera.rotation.eulerOrder = 'XZY';
target.rotation.eulerOrder = 'XZY';

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

已解决:

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

票数 1
EN

Stack Overflow用户

发布于 2014-02-12 01:53:42

当我找到这个页面(取自this answer)时,这就是我正在寻找的解决方案:

代码语言:javascript
运行
复制
mesh.lookAt( camera.position );

然后,网格的局部z轴应指向摄影机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17687475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档