如何在 Unity 中使用 Google Tango 进行遮挡?

How to do occlusion with Google Tango in Unity?

我正在尝试在 Unity 中使用 Google Tango 进行遮挡。

我想要的很简单理解:当虚拟对象前面有真实对象时,虚拟对象被隐藏(或以不同方式呈现)

完美的结果就像我发现的这个令人印象深刻的视频:https://www.youtube.com/watch?v=EpDhaM7ZhZs .

我已经尝试了 Tango Camera 的 "Enable occlusion" 选项,但我对结果不太满意(它不准确且不是实时的,因为它基于点云的网格重建)。

如果您有关于如何实现此目的的提示、技巧或想法(如视频中所示),那就太棒了!

遮挡在 Tango 上仍然是一个非常实验性的功能。问题是很难做到高保真和高性能的遮挡,这里有几个关于如何使用不同方法实现它的想法:

  1. 使用 3D 重建。

Tango 确实提供了从点云构建 3D 网格的功能,您可以从 Tango 示例代码库 (C, Java, Unity) 中找到示例代码。如果您有一个预扫描的世界,您基本上可以使用该网格数据来遮挡虚拟对象。

  1. 运行时间上采样深度图像。

您还可以将所有点云投影到图像平面上,对其进行上采样,然后将图像用作深度缓冲区进行渲染。这就是 ARScreen 遮挡在 TangoUnitySDK 中所使用的。由于Tango深度感应硬件的限制,结果质量不是很理想,如果所有物理对象都离设备很远(超过4米),它将无法工作。