Javascript 如何修改Three.js orbit控件的panUp函数?

Javascript 如何修改Three.js orbit控件的panUp函数?,javascript,controls,three.js,Javascript,Controls,Three.js,我目前正试图修改三个.js的oribit控件的panUp函数的行为 默认行为会导致相机在y轴上上下移动,我希望它在z轴上前后移动。我希望它的行为与panLeft函数相同,但只是针对不同的轴 我已尝试从以下位置修改全景偏移: panOffset.set( te[4], te[5], te[6] ); 致: 哪种方式在一定程度上起作用,但似乎只允许相机在x轴和z轴上移动,而不是两者的组合。另一方面,panLeft函数在任何方向上都没有问题。下面是解决方案。我注意到我使用了一些有用的东西 panOf

我目前正试图修改三个.js的oribit控件的panUp函数的行为

默认行为会导致相机在y轴上上下移动,我希望它在z轴上前后移动。我希望它的行为与panLeft函数相同,但只是针对不同的轴

我已尝试从以下位置修改全景偏移:

panOffset.set( te[4], te[5], te[6] );
致:


哪种方式在一定程度上起作用,但似乎只允许相机在x轴和z轴上移动,而不是两者的组合。另一方面,panLeft函数在任何方向上都没有问题。

下面是解决方案。我注意到我使用了一些有用的东西

panOffset.set(te[8],te[9],te[10]);
但这仍然导致相机沿y轴移动。我的目标是只沿着x和z移动,以便用户能够抓取和平移地图。解决方案是将y设置为0。早该看到的

panOffset.set(te[8],0,te[10]);

我发现你的解决方案很接近,但不完全正确。你正在改变什么也不完全清楚。要使地图平移像在地图上拖动一样工作,一种方法是在OrbitControls.js文件中更改一行源代码

在第116行(ish)中,您需要更改此

v.set( te[ 4 ], te[ 5 ], te[ 6 ] );
为此:

v.set( -te[ 8 ] * 2, 0, -te[ 10 ] * 2 );

如果使用的是three.js r.60,则平移功能不会在y轴上上下移动相机,而是在相机的y轴上移动相机,y轴与像素空间平行。在摄影机的z轴上向内和向外移动与缩放相同。请参见
v.set( -te[ 8 ] * 2, 0, -te[ 10 ] * 2 );