我目前正在开发一个应用程序,该应用程序需要在用户的运动控制器上粘贴一些对象,但似乎找不到找到引用的方法。
来自VRTK,该VRTK在运行时之外公开了GameObjects,这对我来说是一个挑战。在MRTK上有更好的方法吗?
答案 0 :(得分:0)
要获取控制器的“代理”游戏对象,可以使用下面的代码(请参阅其中的第一部分,该部分使用可视化工具的代理游戏对象)。
还可以获取指针的游戏对象(请注意,给定的控制器可能具有多个指针)
如果某些术语令人困惑,我还建议您阅读以下内容: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Architecture/InputSystem/Terminology.html
其中解释了一些正在使用的术语以及它们之间的关系。
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;
public class ControllerPointers : MonoBehaviour
{
private IMixedRealityInputSystem inputSystem = null;
/// <summary>
/// The active instance of the input system.
/// </summary>
protected IMixedRealityInputSystem InputSystem
{
get
{
if (inputSystem == null)
{
MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem);
}
return inputSystem;
}
}
// Update is called once per frame
void Update()
{
// Log something every 60 frames.
if (Time.frameCount % 60 == 0)
{
foreach (IMixedRealityController controller in InputSystem.DetectedControllers)
{
if (controller.Visualizer?.GameObjectProxy != null)
{
Debug.Log("Visualizer Game Object: " + controller.Visualizer.GameObjectProxy);
}
else
{
Debug.Log("Controller has no visualizer!");
}
foreach (IMixedRealityPointer pointer in controller.InputSource.Pointers)
{
if (pointer is MonoBehaviour)
{
var monoBehavior = pointer as MonoBehaviour;
Debug.Log("Found pointer game object: " + (monoBehavior.gameObject));
}
}
}
}
}
}
最后,您还可以始终从指针接口本身获取位置/旋转/速度属性(即,在上面的代码中,使用指针位置:https://microsoft.github.io/MixedRealityToolkit-Unity/api/Microsoft.MixedReality.Toolkit.Input.IMixedRealityPointer.html#Microsoft_MixedReality_Toolkit_Input_IMixedRealityPointer_Position)
答案 1 :(得分:0)
检查MRTK解算器。 cinda
本教程在第4步中介绍如何将多维数据集“粘贴”到控制器。 (听起来像你的问题) https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Solver.html
一旦选择了手关节,就可以选择要跟随立方体的手的哪一部分。在此示例中,我们将使用手腕。在>“跟踪的手关节”选项旁边,选择下拉菜单,然后选择“手腕”。
有两件事要提...我的自定义“控制器”有问题(我已经用Oculus的手覆盖了默认控制器)还要检查是否需要“手关节”(如本教程中所述)或想要使用下拉菜单中的“向左运动控制器”条目。