【发布时间】:2020-12-10 21:59:40
【问题描述】:
我在这里有一个我正在为 HoloLens 开发的 AR 游戏,它涉及根据用户的相对位置渲染全息图。这是一种多人共享体验,同一个物理房间中的每个人都通过云或 LAN 连接到同一个实例(共享 Unity 场景),加入的玩家可以在其他玩家的位置看到全息图渲染。
例如:玩家 A 和 B 加入一个实例,他们一起在同一个房间里。玩家 A 可以看到玩家 B 上方的全息图,跟踪玩家 B 的位置(如果您愿意,可以使用模拟人生光标)。然后,一旦玩家 A 靠近玩家 B,就会打开更多的全息面板,显示玩家 B 的统计数据。这些面板还跟踪玩家 B 的位置,并且总是相对于玩家 B 的耳机位置略微偏移渲染。玩家 B 也会在玩家 A 上看到相同的内容,反之亦然。
这基本上就是我的 AR 游戏目前所做的。
问题:
我要解决的问题是绝对跟踪用户的位置到房间本身,而不是使用 Unity 说玩家 A 的游戏对象和玩家 B 的坐标位置。
如果我在地板上标记一个物理位置以及所有玩家在启动 Unity 应用程序时必须采取的朝向,我的应用程序就会运行良好。然后,这会强制所有玩家的 Unity 应用程序中的坐标系在现实世界中具有匹配的原点和初始航向。只有这样我才能相对于用户的位置渲染全息图,并使其在 Unity 空间和耳机周围的真实物理空间之间以 1:1 的比例关联。
但是,如果我希望玩家 A 在房间的一侧启动应用程序并让玩家 B 在房间的另一侧启动应用程序怎么办?当我这样做时,玩家 A 的 Unity 世界的原点与玩家 B 位于不同的物理位置。然后这将导致全息图渲染 A 的位置或 B 的位置以巨大的偏移量。
我有一些截图说明我的意思。
在这个中,我有 3 个 HoloLense。地板上的两个,加上我用来截屏的那个。 地板上有一个蓝色的 X(它是一张纸。我意识到你在图像中看不到它。)我在所有三个 HoloLense 上启动了我的 Unity 应用程序。所以这三者的 Unity 世界起源于那个特定的物理位置。如您所见,显示已连接玩家的蓝色光标可以很好地跟踪耳机的位置。您甚至可以在小地图上看到耳机相对于屏幕截图的位置。
现在,我介绍了一个红色 X。我在其中一个耳机上重新启动了 Unity 应用程序,并使用红色 X 作为它的起始点。正如您在此屏幕截图中看到的那样,跟踪仍然是精确的,但它有一个巨大的偏移量。因为我在 Unity 中的相对原点(蓝色 X)与其他耳机的相对原点(红色 X)不同。
问题:
所以这就是我要解决的问题。我不希望我的所有用户都必须一个接一个地在同一个物理位置初始化应用程序,以使全息图出现在用户的正确位置。 HoloLens 可以扫描整个房间,对吗?
有没有办法将这些地图与所有连接的 HoloLense 同步在一起,然后它们可以共享它们的绝对坐标是什么?然后我可以将它们用作 Unity 场景中的变换点,而不必跟踪多人游戏对象。
【问题讨论】:
-
您将需要一个共同的现实世界参考(例如 QR Tracking、Vuforia 等),然后将其用作共享世界原点(-> 将一个对象放在跟踪器上并生成下面的所有内容 => 相对给它)。还有一些实验性的东西可以分享相对于公共房间网格的 WorldAnchor 参考……不知道结果如何^^
标签: unity3d simulation multiplayer hololens windows-mixed-reality