【问题标题】:How do I modify the panUp function for Three.js orbit controls?如何修改 Three.js 轨道控件的 panUp 函数?
【发布时间】:2013-09-01 19:28:40
【问题描述】:

我目前正在尝试为 three.js 的 oribit 控件修改 panUp 函数的行为。

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

我尝试从以下位置修改 panOffset:

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

到:

panOffset.set( te[2], te[1], te[0] );

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

【问题讨论】:

  • 如果你使用three.js r.60,panUp函数不会在Y轴上上下移动相机,而是在相机的y轴上,与像素空间平行.在相机的 z 轴上移入和移出与缩放相同。

标签: javascript controls three.js


【解决方案1】:

这是解决方案。我注意到我有一些工作通过使用

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

但这仍然导致相机沿 y 轴移动。我的目标是只沿着 x 和 z 移动,以便让用户抓取和平移地图。解决方案是将 y 设置为 0。应该早点看到!

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

【讨论】:

    【解决方案2】:

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

    在第 116 行(ish)你需要改变这个......

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

    到这里:

    v.set( -te[ 8 ] * 2, 0, -te[ 10 ] * 2 );
    
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多