获取用于立体渲染的每只眼睛的 RealityKit 视图变换

问题描述 投票:0回答:1

我无法找到有关 RealityKit 如何执行立体渲染的详细信息。我习惯于具有两个渲染管道的系统——每只眼睛一个,并且我知道每只眼睛的视图变换是什么(通常根据眼间距离计算为距中心单眼相机位置的 x 偏移量)。例如,在 WebXR 中,您知道每个立体眼睛的视图和投影变换:

let pose = xrFrame.getViewerPose(xrReferenceSpace);
...
for (let view of pose.views) {
    viewMatrix = view.transform.inverse.matrix;
    projectionMatrix = view.projectionMatrix;
    drawSceneWithCameraData(viewMatrix, projectionMatrix);
}

RealityKit 与现代 Unity URP 一样,显然通过 单通道 执行 立体渲染 ,但每只眼睛 仍然有两个不同的视图。 如何在 VisionOS 上检索 RealityKit 的立体相机详细信息?

3d realitykit stereo-3d visionos
1个回答
0
投票
当您使用 Metal 在完全沉浸式空间内进行渲染时,您可以使用

Compositor Services

 获取每只眼睛的视图矩阵。

https://developer.apple.com/documentation/compositorservices/drawing_filled_immersive_content_using_metal

Apple 对于提供可在应用程序中使用的用户姿势信息似乎非常严格。

Compositor Service 是一个抽象,如果您进行自己的完全自定义 Metal 渲染,则需要使用它,它只为您提供进行透视渲染所需的基本信息。

在 RealityKit 中,由于您所做的只是将对象放置到世界中并且不触摸渲染器,因此不需要视图变换,因此他们不会将其提供给您。

这里有一些人讨论这个问题:

https://forums.developer.apple.com/forums/thread/732792

© www.soinside.com 2019 - 2024. All rights reserved.