如果部署在 HoloLens2 上,Unity 中的蒙面精灵和模板缓冲区是不是仅在一只眼睛上可见?

Posted

技术标签:

【中文标题】如果部署在 HoloLens2 上,Unity 中的蒙面精灵和模板缓冲区是不是仅在一只眼睛上可见?【英文标题】:Are masked sprites and Stencil Buffers in Unity only visible on one eye if deployed on HoloLens2?如果部署在 HoloLens2 上,Unity 中的蒙面精灵和模板缓冲区是否仅在一只眼睛上可见? 【发布时间】:2021-02-05 12:13:01 【问题描述】:

HoloLens2 Unity 项目中的 Sprite 渲染器是否有可能在最终的 HoloLens2 构建中仅在一只眼睛上可见(通过部署在 HoloLens2 设备上的 VisualStudio2019 的 UWP)。 我在使用 StencilShader 遮罩的元素上也遇到了相同的行为。 如果有帮助,我将在我的统一项目中使用 24 位深度缓冲区,否则 StencilShader 将无法工作。

【问题讨论】:

【参考方案1】:

要将某些对象显示给一只眼睛,对于不同的渲染配置,需要使用不同的方式。

使用MultiPass,您应该能够将相机设置为只渲染到一只眼睛(相机组件-> 输出-> 目标眼睛),因此每只眼睛的操作都非常简单。使用Stereo Instancing,您可以在 Shader 中绘图,但您需要乘以当前眼睛的投影矩阵。

【讨论】:

是的,但我的问题实际上是,这些精灵只显示在我不喜欢的一只眼睛上。每个被模板或蒙版操作覆盖的精灵仅显示在 HoloLens 的右眼显示屏上。我想知道这背后的原因实际上是模板缓冲区还是 Sprite 蒙版。我需要那些模板和面具,但我还需要在双眼上看到结果。 我想问的问题是,如何在着色器中使用模板缓冲区,同时能够在双眼上看到结果。抱歉,也许我问的问题不太好。 您使用的是哪种深度缓冲区格式?根据 MRTK Doc,模板缓冲区仅适用于 24 位深度格式:microsoft.github.io/MixedRealityToolkit-Unity/Documentation/… 此外,例如,您可以在 MRTK/Examples/Demos/StandardShader/Scenes/ 下的 MaterialGallery 场景中找到着色器材质示例。跨度> 抱歉回复晚了!我有一段时间没空。我正在使用 MRTK Doc 中提到的 24 位深度格式,这个问题的原因实际上是关于相应着色器中模板缓冲的代码。如果我从我编写的着色器脚本中删除模板缓冲区代码,则 Sprite 会正确显示。

以上是关于如果部署在 HoloLens2 上,Unity 中的蒙面精灵和模板缓冲区是不是仅在一只眼睛上可见?的主要内容,如果未能解决你的问题,请参考以下文章

Unity开发Hololens2—环境配置和官方案例发布并部署到设备上

使用 Unity 和 HoloLens2 导入 .dll

Unity+Hololens2 HoloLens2-Unity-ResearchModeStreamer-master打开RGB相机总结

Unity开发Hololens2—交互发布配置

如何在 HoloLens 2 中将 SimpleITK 集成到 Unity for app 中

Unity开发Hololens2—环境配置