控件

Starter pack

Drei 提供了一组有用的控件来在场景中导航和与对象交互。让我们来了解一下它们。

轨道控件

在之前的课程中,我们已经使用过 OrbitControls 组件在场景中导航。

虽然我们在没有任何 props 的情况下使用它,但它提供了一些有用的选项来定制其行为。

首先,你可以选择启用或禁用以下功能的布尔 props

  • enableZoom
  • enableRotate
  • enablePan

例如,如果你的体验是基于滚动的,你可以禁用缩放,以防止用户使用鼠标滚轮时发生冲突。

然后,你可以通过以下方式更改控件的速度:

  • zoomSpeed
  • rotateSpeed
  • panSpeed

最后,你可以更改缩放的最小值和最大值:

  • minZoom
  • maxZoom

...顶部和底部旋转:

  • minPolarAngle
  • maxPolarAngle

...左右旋转:

  • minAzimuthAngle
  • maxAzimuthAngle

...和平移:

  • minDistance
  • maxDistance

如果你运行起始项目,你会发现我们可以到达一些看起来有问题的位置。 (比如穿过地面,穿过 mesh,平移后不显示灯塔等)

让我们结合一些这些 props 来创建一个更受限制的体验:

<OrbitControls
  enablePan={false}
  maxPolarAngle={Math.PI / 2}
  minAzimuthAngle={-Math.PI / 2}
  maxAzimuthAngle={Math.PI / 2}
  minDistance={3}
  maxDistance={10}
/>

看看现在摄像机如何被限制为始终以一种吸引人的方式展示灯塔。它可以防止用户透视对象和看到地下。

这些小细节可以为你的体验质量带来重大差异

由于 drei 组件 只是 three.jsOrbitControls 类的一个包装器,请查看 three.js 文档 来了解所有可用的 props。

Presentation Controls

PresentationControlsOrbitControls 不同之处在于它与包装对象的内容交互,而不是相机。除此之外,它们非常相似。

以下是 drei 文档 中的示例代码

Three.js logoReact logo

React Three Fiber: The Ultimate Guide to 3D Web Development

✨ You have reached the end of the preview ✨

Go to the next level with Three.js and React Three Fiber!

Get full access to this lesson and the complete course when you enroll:

  • 🔓 Full lesson videos with no limits
  • 💻 Access to the final source code
  • 🎓 Course progress tracking & completion
  • 💬 Invite to our private Discord community
Unlock the Full Course – Just $85

One-time payment. Lifetime updates included.