我正在使用您可以从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功能下方。
这些最后的编辑应该重新定位网格和轴,使其看起来像上面链接中的图片。
答案 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场景的默认方向,我也希望这个解决方案能够解决重新加载页面时遇到的问题。