2

我有一个反应三纤维应用程序和我正在使用轨道控制由我的相机控制。

我想使用屏幕上的按钮手动放大/缩小但我无法使代码正常工作。

我希望这些按钮的工作方式与鼠标中键的工作方式相同轨道控制.有人知道如何使用反应?

我尝试使用使用三()但它并没有像我想的那样工作。

谢谢。

1
  • 看看我的答案
    – 光晕
    评论 2022年3月31日12:27

1个答案1

重置为默认值
4

使用中间滚轮时轨道控制,它所做的就是将相机位置乘以某个值。所以,如果你想这样做手动,则可以使用以下函数:

函数缩放(常量){camera.position.x=camera.location.x*常量;camera.position.y=camera.location.y*常量;camera.position.z=camera.location.z*常量;}

如果你想放大,再靠近一点,然后传递一个值少于一个值。如果你想缩小,此外,您传递了一个值大于一值。

7
  • 1
    谢谢!我尝试了你的解决方案,缩放效果就像OrbitControls一样。但我意识到OrbitControls不允许无限放大。有什么办法可以做到这一点吗。您可以查看FirstPersonControls以供参考。可以使用此控件无限缩放。 评论 2022年4月1日16:21
  • 1
    轨道控制让你无限放大。然而,如果你离目标太近(默认情况下是0,0,0),那么它就会开始变慢,因为你无法放大到中心以外的地方。这根本没有道理。您可以缩放外面的无限,因为没有什么能阻止你在那里(没有原点)。我希望这有道理
    – 光晕
    评论 2022年4月1日17:03
  • 此外,如果你能投赞成票,那就太好了,这很有帮助:)
    – 光晕
    评论 2022年4月1日17:06
  • 1
    对不起,我的问题不清楚。我的意思是,即使我到达中心,我也能继续前进。如果你看一下这个例子threejs.org/examples/#webgl_geometry_terrain。即使您到达目标,相机仍能向前移动。有没有办法用OrbitControls做到这一点 评论 2022年4月1日17:26
  • 啊,我明白了。您可以不断更改OrbitControls的目标。你可以使用controls.target=新的三个。向量3(0,10,0);,然后使用控件.update()
    – 光晕
    评论 2022年4月1日17:39

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.