刷新网页时,三个.js中的重定向轴失败

时间:2017-02-07 00:24:53

标签: javascript three.js

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

为了得到这个,我修改了index.html(在编辑器文件夹中),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功能下方。

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

1 个答案:

答案 0 :(得分:2)

三个.js中的很多对象在构造时会克隆THREE.Object3D.DefaultUp以确定它们的方向(up向量)。
此默认设置用于灯光,物体,相机甚至更多。

在three.js中,此向量默认设置为(0, 1, 0),因为您可以看到here inside the THREE.Object3D class,表示y轴朝上。

  

Object3D.DefaultUp = new Vector3(0,1,0);

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

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

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

试试这个,它可以更容易地更改three.js场景的默认方向,我也希望这个解决方案能够解决重新加载页面时遇到的问题。