我正在使用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场景的默认方向变得更容易,我也希望这个解决方案能解决您在重新加载页面时遇到的问题。