我想知道一个内置的混合现实的ToolKit方法,以检查射线是否从一个由Mixed可视化的运动控制器投射出来,当使用带有遮挡窗口的混合现实耳机的控制器时,是否存在光线投射?
在HoloLens上使用GazeManager.Instance.HitInfo.collider != null条件时,我可以很容易地检查这一点,但是由于Gaze Manager属于Gaze而不是MotionControllers,所以我不能使用它(至少在我知道的一种方式上)来检查由运动控制器投影光线控制的默认游标是否被投射到某个UI上(稍后可能是什么)?
我看到MRTK v2计划将输入管理器类中的所有指针(凝视和控制器/手)组合在一起,但除非我错了,否则HoloLens v1不能使用它,我的意思是能够获得控制器的指针,因为我查看了v1的InputManager预制件,却找不到类似于that...right的东西?
发布于 2019-05-02 08:19:42
可以使用带有运动控制器参数的Physics.Raycast()来实现简单的光线投射。这些参数可以从MRTK输入中提取。作为一个例子
void InteractionManager_InteractionSourcePressed(InteractionSourcePressedEventArgs args)
{
var interactionSourceState = args.state;
var sourcePose = interactionSourceState.sourcePose;
Vector3 sourceGripPosition;
Quaternion sourceGripRotation;
if ((sourcePose.TryGetPosition(out sourceGripPosition, InteractionSourceNode.Pointer)) &&
(sourcePose.TryGetRotation(out sourceGripRotation, InteractionSourceNode.Pointer))) {
RaycastHit raycastHit;
if (Physics.Raycast(sourceGripPosition, sourceGripRotation * Vector3.forward, out raycastHit, 10)) {
var targetObject = raycastHit.collider.gameObject;
// ...
}
}
}发布于 2019-05-02 12:48:28
我不熟悉MRTK v1的方法,但是在MRTK v2中,对于您的用例来说,一种或多或少简单的方法是使用附在运动控制器上的MRTK指针。该指针执行每个帧的光线投射,并将结果存储在IMixedRealityPointer.Result中。您可以通过脚本中的指针事件侦听指针事件或通过IMixedRealityInputSystem.DetectedInputSources.手动迭代所有指针来访问数据。
https://stackoverflow.com/questions/55942936
复制相似问题