刷新网页时,在three.js中重新定向轴失败



我正在使用three.js编辑器源代码进行一个项目,您可以从three.js网站下载该源代码。作为项目的一部分,我需要重新调整轴的方向,以便它们可以与飞机使用的标准坐标轴对齐(x轴在机头外,y轴在左翼外,z轴向下)。我描述的方向可以在点击下面的链接时看到:设计轴方向

为了得到这个,我修改了index.html(在editor文件夹中)、three.js(在build文件夹中)和editor.js(editor/js文件夹)文件。在我的修改之后,详细介绍如下,我可以使轴正确旋转,但当我刷新/重新加载页面时,它会断裂,不再处于我需要的方向。然而,当我单击"文件">"新建"时,它会重置,这正是我所需要的。有人知道为什么当我重新加载页面时代码不起作用吗?

以下是我对代码所做的修改:

index.html(第12行):

<script src="../build/three.js"></script>

来自

<script src="../build/three.min.js"></script>

这允许我使用three.js文件而不是min.js文件

three.js(第40581行和第40582行):

vertices.push( - size, k, 0, size, k, 0 );
vertices.push( k, - size, 0, k, size, 0 );

来自

vertices.push( - size, 0, k, size, 0, k );
vertices.push( k, 0, - size, k, 0, size );

这会导致栅格从水平旋转到垂直旋转90度。

Editor.js(第9行):

this.DEFAULT_CAMERA.position.set( -20, 20, -20 );

来自

this.DEFAULT_CAMERA.position.set( 20, 10, 20 );

我还添加了行

this.DEFAULT_CAMERA.up.set( 0, 0, -1 );

相机position.set函数正下方。

这些最后的编辑应该重定向网格和轴,使其看起来像上面链接中的图片。

three.js中的许多对象在构建时克隆THREE.Object3D.DefaultUp以确定其方向(up向量)
此默认up用于灯光、对象、相机,甚至更多。

在three.js中,该向量默认设置为(0, 1, 0),正如您在THREE.Object3D类中看到的那样,这意味着y轴指向上。

Object3D.DefaultUp=新矢量3(0,1,0);

如果您希望z轴在默认情况下指向上,您可以将此默认值设置为(0, 0, 1)(或者如果您希望它在问题中指向(0, 0, -1)时指向下)。

如果您在代码中很早就这样做了,那么在实例化(创建)任何对象之前,默认情况下,所有对象从一开始就正确设置了up属性,然后您可能不需要进行任何额外的自定义配置。你可以用这行代码来更改默认值:

THREE.Object3D.DefaultUp.set( 0, 0, 1 );

试试这个,它会让更改three.js场景的默认方向变得更容易,我也希望这个解决方案能解决您在重新加载页面时遇到的问题。

最新更新