问题标签 [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.
c++ - 为什么 openxr 'xrCreateSession' 会导致许多 vulkan“SPIR-V 模块无效:”验证错误(以及如何修复它)?
xrCreateSession
接受一个XrInstance
和一个XrSessionCreateInfo
。
XrInstanceCreateInfo
用于创建实例的 不是特别有趣:唯一需要注意的参数是( enabledExtensionCount
)= 1
和enabledExtensionNames
( = XR_KHR_VULKAN_ENABLE_EXTENSION_NAME
)。其余的是任意标题/版本信息。
XRSessionCreateInfo
用于创建会话的 已设置systemId
为 的结果xrGetSystem
,并next
设置为类型的指针XrGraphicsBindingVulkanKHR
。
它的值只是指向一个 vulkan 实例、physicalDevice、device、queueFamilyIndex 和 queueIndex,我有理由相信我已经正确收集(没有 openXR,我的 vulkan 工作正常)。
但是第二个xrCreateSession
被调用,我得到了大约 20 个以下形式的验证错误:
(对于标题块、以、合并块等为首的具有不同的编号......)。
目前我还没有向 vulkan 和 openXR 提供任何 SPIR-V,所以我不确定什么在我的控制范围内。
为什么我会收到这些错误?可以做些什么来防止它们?
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
功能。
有没有其他方法可以允许文件访问,或者我只是缺少一些我需要启用的东西?
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。
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?
native - 原生 VR 应用开发
我想在不使用任何游戏引擎的情况下为 oculus rift(使用 PC SDK)和 oculus quest 2(使用 Mobile SDK)构建一个原生 VR 应用程序。我想开始这个,因为我不知道如何继续。谁能告诉我这个发展的路线图?
windows-mixed-reality - 为什么 OpenXR Actions 仅由控制器模拟触发?
我看到我的 OpenXR 应用程序出现奇怪的行为,因为我的操作处理是由 Windows Mixed Reality Portal 控制器模拟器正确触发的,但不是由控制器本身触发的。
这显然是一个广泛的问题,我想当我找到原因时我可能会自己回答!
同时,我们将不胜感激有关如何查看的建议,当然......!
unity3d - 使用基于动作的输入系统从 VR Rig 外部读取控制器数据
我在 Unity OpenXR 中使用基于动作的新输入系统时遇到问题。
InputDevices.GetDeviceAtXRNode(<node>)
使用旧的(基于设备的)输入系统,可以使用该功能从 XR Rig 外部检索输入设备对象。
例如:这是我在旧系统中检索右手控制器位置数据的方法:
不幸的是,我找不到用新的基于动作的输入系统做同样事情的方法。我能找到的关于这个主题的所有文档都指的是旧的做法。看来这种方法不再起作用了。
那么,有没有办法使用新的基于动作的输入系统从 XR Rig 外部检索输入设备?
如果有帮助:我的 Unity 版本是2020.3.4f1
并且我正在使用 OpenXR 插件版本1.0.3
。
任何帮助是极大的赞赏。
unity3d - Unity OpenXR 从 VR 控制器读取触发器和手柄数据
我在 Unity OpenXR 中使用新的基于动作的输入系统时遇到了问题。
我想用ActionBasedController
. 一般来说,这有效,但只提供 0 或 1。这样动画看起来很简单。我正在寻找一种读取真实浮动的方法,因此动画只会部分改变。
这是我读取触发器和抓地力值的代码:
我试图研究这个话题,但我只找到关于旧输入系统的答案。
非常感谢任何帮助或新想法。
如果需要,我正在使用 Unity 2020.3.4f1,并且我正在使用 OpenXR 插件版本 1.0.3。
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,所以现在我们不能交换运行时。
显然我们有一个解决方法,就是设置首选设备。但是了解这个问题如何/为什么会发生会很棒。