问题标签 [mrtk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - 从 HoloLens 应用启动 Microsoft Remote Assist 应用程序
我想从我的 HoloLens 应用程序启动Microsoft Remote Assist应用程序。根据我的主要研究,这可以通过 UWP API(LauncherUriAsync 方法)实现,只需传递我的 Azure Active Directory 对象 ID。
现在我面临两个问题......
- 当我从我的应用程序中点击按钮以启动远程协助时,它会成功启动 Remote Assist,但尽管我分配了特定用户的对象 ID,但呼叫并未直接启动。(我需要在人形图标上按两次才能拨打电话)。
- 另一个问题是当我通过bloom 回到我的应用程序时,我的应用程序从头开始,假设从我离开的实例开始。
有没有人遇到过这种问题?
mrtk - 是否可以在构建中强制使用 MRTK 的 InputSimulationService?
我正在开发基于 MixedRealityToolkit v2 的多人游戏应用程序。为了测试网络系统,我需要进行几次构建来启动客户端和服务器,并且我想在同一台机器上执行此操作,而无需使用真实设备(或模拟器)。问题是输入模拟服务只能在 Unity 编辑器中工作,这意味着我不能在同一台机器上测试多个客户端;此外,要使用真实设备(HoloLens 或 Windows Mixed Reality Headset),我必须构建一个 UWP 应用程序,这比为 WindowsStandalone 构建要慢得多。
有没有办法强制 MRTKv2 在构建(可能是 WindowsStandalone 构建)中使用输入模拟服务?
提前感谢任何会尽力帮助我的人!
unity3d - “使用 MRTK 开发 Hololens 应用程序的最佳 Unity 版本是什么?”
我开始为 Hololens 创建应用程序。我打算使用 Unity 和 MRTK。
目前使用 MRTK 开发 Hololens 应用程序的最佳 Unity 版本是什么?
mrtk - 如何在 HoloLens 1 上模拟手部光线?
我正在设置一个新项目,旨在同时部署到 HoloLens 1 和 2,并且我想在两者中都使用手部光线,或者至少能够在 HoloLens 1 上模拟它们,为 HoloLens 2 做准备。
据我所知是:
- 将 InputSimulationService 自定义为仅手势(因此我可以在编辑器中进行测试)
- 将 GGVHand 控制器类型添加到 MRTK/Pointers 部分的 DefaultControllerPointer 选项。
这让它显示并响应编辑器和设备中的点击,但它不使用手坐标,而是从 0,0,0 向前投射,这表明 GGV 手控制器正在提供 GripPosition(当然有由于 HL1 没有旋转)但没有提供指针姿势。
我想最干净的方法是向 GGV 手控制器添加一个指针姿势,或者向 GripPosition 添加(估计的)旋转并将其用作 ShellHandRayPointer 中的姿势动作。我无法立即看到在 MRTK 中自定义/插入的位置。
或者,我可以自定义 DefaultControllerPointer 预制件,但我犹豫是否这样做,因为 MRTK 似乎仍在频繁更改,这可能会导致升级问题。
c# - 每次打开窗口菜单时都会生成新的 InputController
我正在使用 Windows Mixed Reality 耳机(Lenovo Explorer)和 Unity 开发一个小型游戏项目。我目前正在运行最新的 MRTK v2.1 版本。
我正在使用自定义右手控制器。这是一个预制件,其中主要对象具有以下组件:
- mrtk 的
WindowsMixedRealityControllerVisualizer
脚本 - 一个输入控制器脚本(使用
IMixedRealityInputHandler
)来管理动作的输入(射击、跳跃等) - 处理 VR 世界中实际动作的自定义脚本。
除了组件之外,它还有一个子对象,它是我要渲染的对象的 3D 模型预制件。它在一个孩子身上,所以我可以用一些偏移量正确放置它。AFAIK 这不是问题。整个事情是它自己的预制件,然后我在Global Right Hand Controller ModelMixedRealityControllerVisualizationProfile
下添加我的自定义。一般来说,这就像我想要的那样工作。控制器在我的右手上正确呈现,输入的行为也像我想要的那样。
我的问题是,一旦在游戏中,当我单击主页按钮(Windows 徽标)以显示浮动菜单时,一旦我第二次单击返回游戏,就会在 0,0,0 处生成一个新控制器(或者在我回到游戏时我的手在哪里);不过,我手上还有一个,而这个新的也以与我手上的相同的方式响应输入。如果我再次打开/关闭主页按钮,这会重复,我最终会产生几个控制器。所以当我开枪时,我的手和新控制器在 0,0,0 处都开枪(或者从那时我已经在场景中结束的尽可能多的控制器)
我认为我的控制器永远不会丢失跟踪,所以 IDK 为什么 mrtk 会产生一个新控制器。我考虑过在场景中检查额外的控制器对象,并在每次更新时手动删除它们,但这听起来很傻,一定有一些配置可以肯定地解决这个问题,不是吗?可视化脚本不处理这个吗?
我在网上四处查看,但没有找到任何关于此的具体内容。任何线索都将受到欢迎。
mrtk - 如何调试 MRTK UWP IL2CPP?
有什么改变破坏了使用最新的 MRTK 从 Unity 调试 UWP 应用程序的能力吗?
当我使用 Unity 2018.4.2f1 构建时,启用了开发和脚本调试并且所有 3 个网络相关功能都处于活动状态,我无法将 VS 附加到正在运行的 MR Portal 应用程序。
使用“附加 Unity 调试器”时,它甚至没有列出它。
是否有关于使用当前软件和 SDK 状态进行调试的适当文档?
mrtk - 如何暂时禁用 MixedRealityToolkit.InputSystem?
例如,一旦用户单击按钮,我想在某些转换期间禁用所有输入。
当然,我可以禁用该按钮,但我正在寻找更通用的解决方案,以避免每个按钮再次出现相同的错误。
我尝试了PushInputDisable
/ PopInputDisable
,这似乎是我正在寻找的东西,但它inputsimulationservice
在弹出后会出现问题,并且总体而言,从 inputsystem 引发的大多数输入事件都没有插入到该禁用堆栈中。
我可以制作一个实现所有接口并使用的输入处理程序PushModalInputHandler
,但这对于我想要实现的目标来说似乎有点矫枉过正。另外,例如,它可能无法捕捉到语音命令。
任何简单的解决方案?
mrtk - 如何始终获得光线投射的提示?
我想知道 OnPointerDown 上的目标位置是否有一个多合一的解决方案。我想在表面上生成东西,如果我没有击中任何东西,请将其放在光标所在的位置。这并不像我想象的那么微不足道,不是吗?
在 Hololens 的情况下,监听 OnPointerDown 不包含有关默认光标位置的信息,这似乎是唯一知道它在用户面前的所需位置的信息。它也不包含有关使用 DefaultCursor 的 FocusProvider 的任何信息。因此,在指针命中失败的情况下,在 Hololens 上,我需要通过 MixedRealityToolkit 从 FocusProvider 检索默认光标。这有点奇怪,感觉像是 FocusProvider 的信息,和/或光标应该是信息的一部分。
我知道,OnPointerDown 是由手发出的,但如果是 Hololens 1,谁不想使用凝视?更奇怪的是,在命中的情况下,InputEventData 确实包含很多信息,甚至不是来自手,而是来自头部,也就是 FocusProvider,不是吗?
c# - 用于 MRTK v2.1 的 HL1 输入
我正在尝试查找配置,或确定我需要对 MRTK v2.1 进行哪些添加,以便能够在“编辑器”工作中测试 HL1,就像在之前的工作流程中所做的那样。简而言之,它是我们在 MRTK v2 之前使用 Gaze 和鼠标的能力。
我还没有找到一种方法来映射配置文件中的鼠标左键,使其行为与可见的手一样。在手可见的情况下,按下鼠标左键可以进行操作。我们也只需要凝视。注意:将“手部模拟”更改为手势不会产生正确的行为,它只会使凝视光标保持不变而没有交互。
我在很多地方都问过这个问题,而且经常被误解,所以这里有一些背景知识。我们将继续向需要严格质量保证的客户提供应用程序。必须对它们进行测试,就像在使用新的 MRTK 时一样。让我们的 QA 团队在 HL1 项目中使用关节手是不合理的,因为它会引入人为错误,这对错误测试会适得其反。
需求是: 1. 让光标在编辑器中保持不变。(在最新版本中,它在通过空格键使用双手后消失。)我们认为这应该是一个切换。是的,我们知道您可以按“1”来模拟选择,但如上所述,这对于正确的 QA 是不可接受的。2. 用鼠标左键,不用手,触发“选择”和“捏合”。我已经编写了一个服务扩展来处理“选择”,但是添加夹点,因为它与手关节相关联,已经证明是一个挑战。
到目前为止提出的解决方案:将“手部模拟”模式更改为手势。不幸的是,手势消除了使用手进行 HL2 测试的能力,并且不提供鼠标左键的“选择”或“捏合”行为。所以它要么不能正常工作,要么不是正确的解决方案。
我们看不到为什么不能在编辑器中同时测试 HL1 和 HL2 的原因。当手不使用时,我们只是错过了使用鼠标左键。
这是我为鼠标左键创建的用于发送“选择”事件的服务扩展。这将在“Intractable”上触发 OnClick() 事件。它还缺少用鼠标左键移动或操纵“操纵处理程序”的“捏”能力。
需求:
- 在释放空格键以返回注视光标时触发与“1”键相同的事件。
- 扩展上述服务以包含“Pinch”事件/动作,以便可以像使用 Hands 一样使用 Gaze 和 Mouse 操作对象。
提前干杯和感谢!
塔林
mrtk - 如何配置 MRTK 以在编辑器和移动设备上使用触摸输入?
我正在构建一个可以在 HoloLens 和移动设备 (iOS/Android) 上运行的应用程序。我希望能够在所有设备上使用相同的操作处理程序,目标是:
- 使用 ARFoundation 进行移动设备跟踪和输入
- 将触摸输入与 MRTK 与 ManipulationHandler 一起使用,否则将触摸输入用作正常 (UI)
- 在编辑器中模拟触摸输入(使用触摸屏或鼠标),但保留键盘/鼠标控制器用于相机定位。
到目前为止,我已经尝试/发现:
- MixedRealityPlayspace 始终是相机的父级,因此我将 ARSessionOrigin 添加到该组件,并将所有默认 AR 组件添加到相机(ARCameraManager、TrackedPoseDriver、ARRayCastManager 等)
- 自定义 MRTK 指针配置文件以仅计数 MousePointer 和 TouchPointer。
- 删除多余的输入数据提供者。
- 在 InputSimulationService 中禁用手部模拟
一般来说,将 ARSessionOrigin 添加到 MixedRealityPlayspace 的方法按预期工作,并且 ARFoundation 的设置很简单。但是,我很难理解如何让 ManipulationHandler 响应触摸输入。
我遇到了以下问题:
- 用手指在触摸屏上拖动会移动相机(编辑器)。禁用 InputSimulationService 可以解决此问题,但随后我无法移动相机...
- 即使禁用了相机,单击和拖动也不会影响 ManipulationHandler。
- 调试光线以正确的方向绘制,但默认的触摸指针光线绘制在奇怪的位置。 我附上了一个 .gif 来解释这一点。这是在编辑器中使用触摸输入。在设备 (Android) 上运行时观察到相同的效果。
这也适用于 Unity UI(世界空间画布),其中单击 UI 元素不会触发(在设备上或在编辑器中),这向我表明这是一个指针问题而不是处理程序问题。
我将不胜感激有关如何在编辑器和设备上正确配置触摸输入和鼠标输入的一些建议,目标是使用投影矩阵从屏幕点投射光线以创建指针,并在使用两个手射线的方式相同。