问题标签 [openxr]

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.

0 投票
0 回答
134 浏览

c++ - 为什么 openxr 'xrCreateSession' 会导致许多 vulkan“SPIR-V 模块无效:”验证错误(以及如何修复它)?

xrCreateSession接受一个XrInstance和一个XrSessionCreateInfo

XrInstanceCreateInfo用于创建实例的 不是特别有趣:唯一需要注意的参数是( enabledExtensionCount)= 1enabledExtensionNames( = XR_KHR_VULKAN_ENABLE_EXTENSION_NAME)。其余的是任意标题/版本信息。

XRSessionCreateInfo用于创建会话的 已设置systemId为 的结果xrGetSystem,并next设置为类型的指针XrGraphicsBindingVulkanKHR

它的值只是指向一个 vulkan 实例、physicalDevice、device、queueFamilyIndex 和 queueIndex,我有理由相信我已经正确收集(没有 openXR,我的 vulkan 工作正常)。

但是第二个xrCreateSession被调用,我得到了大约 20 个以下形式的验证错误:

(对于标题块、以、合并块等为首的具有不同的编号......)。

目前我还没有向 vulkan 和 openXR 提供任何 SPIR-V,所以我不确定什么在我的控制范围内。

为什么我会收到这些错误?可以做些什么来防止它们?

0 投票
1 回答
131 浏览

vulkan - 使用 Vulkan + OpenXR,在任务中获得奇怪的透明度结果(PCVR 中不存在)

长话短说,alpha 值的表现非常奇怪:合理地在 1.0 到 0.5 之间过渡,但从 0.5 到 0.0 从半不透明-{颜色}过渡到不透明-黑色。

在此处输入图像描述

^ 这是我的字体渲染器(从发送到 iphone 的任务中捕获)替换了着色器。它应该根据片段 x 坐标的 sin 显示淡入和淡出透明度的红色四边形,而不是显示字体。我不知道“黑色”是从哪里来的。这是着色器:

我的管道混合配置是:

最古怪的是,当从 pcvr 运行时,它可以完美地工作(如预期的那样)(两者之间的代码路径没有重大差异:相同的 spirv、相同的管道生成等......)

0 投票
1 回答
65 浏览

c++ - 无法访问 CMake UPW 项目中的文件系统

我构建了一个应用程序,它使用 OpenXR 和 DirectX 在 VR 中显示一个简单的场景。由于我的任务是在现有项目中实现此功能,因此它是使用 CMake 构建的,与 Visual Studio 2019 完美配合。

该应用程序可以在 Windows MR Portal 以及带有 Oculus OpenXR 运行时的 Oculus Rift S 上毫无问题地运行。

现在下一步是让它在全息透镜上运行。由于我需要一个 UWP 项目来执行此操作,因此我为要使用 CMake 在 hololens 上运行的应用程序创建了一个 .sln,如下所示:

有了这个,我可以打开项目并将其编译为 UWP,没有任何问题。现在,当我想运行应用程序来调试它时,我收到以下错误:

经过一番谷歌搜索,我发现我可能需要将相关功能添加到Package.appxmanifest,所以我添加了

在 Windows 设置面板中为我Package.appxmanifest的应用程序启用文件系统访问权限。

但是,我仍然收到上述错误,我还尝试访问我 PC 上的其他文件(因为我认为 system32 可能会受到更多限制),但没有成功。

我特别困惑,因为 Microsoft 的OpenXR 示例应用程序没有任何问题,而且他们没有声明该broadFileSystemAccess功能。

有没有其他方法可以允许文件访问,或者我只是缺少一些我需要启用的东西?

0 投票
1 回答
252 浏览

uwp - 是否可以访问 SpatialSurfaceMesh 的空间图节点 ID?

Microsoft.MixedReality.QR API为检测到的 QR 码提供空间图节点 ID 。我需要访问Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh类的空间图节点 ID (与OpenXR XR_MSFT_spatial_graph_bridge扩展一起使用)。是否可以?

我尝试使用 SurfaceMesh.SurfaceInfo.Id 属性。但这似乎不是 OpenXR 正在寻找的 id。

0 投票
0 回答
380 浏览

graphics - How to render a UNORM formatted texture to an sRGB DirectX11 swapchain?

I'm writing a DirectX 11 OpenXR app. OpenXR creates the DX11 swapchain with a format of DXGI_FORMAT_R8G8B8A8_UNORM_SRGB (the device doesn't support non sRGB formats).

The problem I have is that I need to render a video texture. And IMFMediaEngine::TransferVideoFrame() won't work unless the texture is in a non sRGB format like DXGI_FORMAT_R8G8B8A8_UNORM. So if I use the UNORM texture format for the video frame it works.

The problem is that in the headset the colors of the texture are off. They are too bright. I suspect converting them from sRGB->Linear inside the pixel shader would make them look like they are supposed to. But I'm not sure what is happening.

I'm a bit confused about how to handle this situation where the swapchain (sRGB) is created by OpenXR and it does the presenting but I have to sample from UNORM textures.

Can anyone provide guidance?

0 投票
1 回答
288 浏览

native - 原生 VR 应用开发

我想在不使用任何游戏引擎的情况下为 oculus rift(使用 PC SDK)和 oculus quest 2(使用 Mobile SDK)构建一个原生 VR 应用程序。我想开始这个,因为我不知道如何继续。谁能告诉我这个发展的路线图?

0 投票
1 回答
39 浏览

windows-mixed-reality - 为什么 OpenXR Actions 仅由控制器模拟触发?

我看到我的 OpenXR 应用程序出现奇怪的行为,因为我的操作处理是由 Windows Mixed Reality Portal 控制器模拟器正确触发的,但不是由控制器本身触发的。

这显然是一个广泛的问题,我想当我找到原因时我可能会自己回答!

同时,我们将不胜感激有关如何查看的建议,当然......!

0 投票
1 回答
775 浏览

unity3d - 使用基于动作的输入系统从 VR Rig 外部读取控制器数据

我在 Unity OpenXR 中使用基于动作的新输入系统时遇到问题。

InputDevices.GetDeviceAtXRNode(<node>)使用旧的(基于设备的)输入系统,可以使用该功能从 XR Rig 外部检索输入设备对象。

例如:这是我在旧系统中检索右手控制器位置数据的方法:

不幸的是,我找不到用新的基于动作的输入系统做同样事情的方法。我能找到的关于这个主题的所有文档都指的是旧的做法。看来这种方法不再起作用了。

那么,有没有办法使用新的基于动作的输入系统从 XR Rig 外部检索输入设备?

如果有帮助:我的 Unity 版本是2020.3.4f1并且我正在使用 OpenXR 插件版本1.0.3

任何帮助是极大的赞赏。

0 投票
1 回答
240 浏览

unity3d - Unity OpenXR 从 VR 控制器读取触发器和手柄数据

我在 Unity OpenXR 中使用新的基于动作的输入系统时遇到了问题。

我想用ActionBasedController. 一般来说,这有效,但只提供 0 或 1。这样动画看起来很简单。我正在寻找一种读取真实浮动的方法,因此动画只会部分改变。

这是我读取触发器和抓地力值的代码:

我试图研究这个话题,但我只找到关于旧输入系统的答案。

非常感谢任何帮助或新想法。

如果需要,我正在使用 Unity 2020.3.4f1,并且我正在使用 OpenXR 插件版本 1.0.3。

0 投票
1 回答
91 浏览

directx-12 - xrEndFrame 上的奇怪 OpenXR 行为

首先:上下文是带有 HP Reverb G2、WMR 运行时、DX12 的 VR。

在使用 OpenXR 时,我们在开发人员机器上看到了一些无法解释的行为。看起来 OpenXR 运行时正在改变它的呈现方式,具体取决于首选 GPU 的机器设置。

更具体地说,我们注意到,根据首选 GPU 的机器设置,我们看到XrEndFrame调用时使用的方法不同。这很重要,因为不同的方法会导致空白屏幕被绘制到我们当前的 renderTarget 中!

不同之处在于,当首选设备是 Nvidia GPU 时,xrEndFrame 在 PIX 中看起来像这样(在与我们的主渲染分开的图形队列中):

而当它不是时,(即以某种方式可能会在板载英特尔?)它看起来像这样:

后者清除当前的 renderTargetView 并在顶部绘制一个四边形,即耳机显示的尺寸。

然而 - 我们检查了渲染代码,它肯定没有选择英特尔图形设备。但是,如果我们在 nvidia 控制面板中将“首选图形处理器”设置为 nvidia gpu,第二个行为就会消失。

我们还可以看到上述行为是调用的结果XrEndFrame,并且我们的渲染代码在其他方面是相同的。

关于运行时的哪个部分可能正在查看或受此设置影响的任何线索?

不幸的是(幸运的是?)我们发现我们需要处理渲染代码才能将运行时交换为 SteamVR,所以现在我们不能交换运行时。

显然我们有一个解决方法,就是设置首选设备。但是了解这个问题如何/为什么会发生会很棒。