如何使用运动控制器移动物体

How to move an object with Motion Controller

使用 MRTK V2 和 c# 脚本,我需要在相机周围抓取并移动一个物体(比如一个立方体),距离与抓取对象的距离相同,并且立方体最初面向相机以保持垂直于相机。不知道我说清楚没有...

我还没有找到一些 "grab" 示例是原始 MRTK 中的 MRTK v2,所以我想知道如何实际编程。我想影响对象的变换,不能只用"interactable"脚本。

我已经能够读取控制器在运动开始和结束时的变换,但我想知道如何影响目标对象的变换,使其与控制器保持固定距离控制器并保持垂直于控制器(选择的面仍然面向相机)。

我试过影响目标对象的变换并寻找正确的计算,但没有成功。

知道我可以从哪里开始寻找吗?

您可以在要移动的对象上添加一个ManipulationHandler。以下是一些示例步骤:

  1. 为要移动的对象添加一个 Box Collider。
  2. 为您的对象添加一个 ManipulationHandler
  3. 要使对象保持其相对于您的原始旋转,请将 "One Hand Rotation Mode Far" 设置为 "Maintain Rotation to User"。
  4. 如果您还希望能够直接抓取对象(这适用于 VR 和 HoloLens 2),请向您的对象添加一个 NearInteractionGrabbable 组件。

这是我必须使立方体可移动的示例配置:

有关如何使用 ManipulationHandler 的示例,请参阅 Assets\MixedRealityToolkit.Examples\Demos\HandTracking\Scenes\HandInteractionExamples.unity

中 HandInteractionExamples 场景中的 Lunar Module 或 Cheese 对象

除了上述 Julia 的回答之外,为了更接近于满足您的要求:“...因此它与控制器保持固定距离...”将 "Constraint On Movement" 设置为 "Fixed Distance From Head".我知道这并不能完全满足您提出的要求,但可能已经足够接近了。

如果您确实需要满足所有规定的要求,您可能需要考虑实施自定义 "Solver"。