首页 > 解决方案 > 如何设置图像目标以检测同一图像目标的所有尺寸

问题描述

我想做的是增加一个关于徽标外观的视频。

但我的疑问是,如果这个标志在不同的地方以不同的尺寸出现怎么办?

vuforia 可以检测到这些大小差异并仍然增强视频吗?

我希望能够做到这一点

标签: c#unity3dvuforia

解决方案


简短的回答:你不能。

Vuforia 需要知道目标的实际真实世界大小,以便将您的虚拟 3D 对象放置到正确的位置,尤其是在深度方面。

如果尺寸不匹配,它会刹车(只是返回不正确的深度位置)。例如,如果您的真实目标比您在 Unity 中配置的要小,那么您的虚拟内容将始终放置“太远”,因为 Vuforia 期望您的真实目标更大。

不同缩放但相等的图像目标之间没有任何区别..我知道的任何跟踪软件都无法做到这一点,因为它通常用于将 3D 内容实际放置到 3D 世界位置..如果您这样做,这将是不可能的没有固定的预期目标大小,因为如果您靠近,目标对于相机来说会变得更大。

如果 Vuforia 可以同时看到多个具有相同图像的目标,则它只会采用它找到的第一个目标。

Vuforia 提供了一种在运行时更改预期目标大小的方法,请参阅Targets以获取更多信息,但是在您的情况下这将无法自动检测正确的大小。

请参阅 [图像目标]

目标尺寸

  • 以 3D 场景为单位的图像目标的实际大小。
  • 在线创建目标时或在数据库配置 XML 文件中,开发人员必须指定目标大小。数据库配置 XML 文件由目标管理器生成,但一旦创建,开发人员就可以对其进行修改。
  • 目标尺寸参数很重要,因为在跟踪过程中返回的位姿信息将是相同的比例。例如,如果目标图像的宽度为 16 个单位,则将相机从目标的左边界移动到目标的右边界会将返回的位置沿 x 轴更改 16 个单位。
    • (x, y) - 沿矩形目标的水平和垂直轴测量的场景单位的目标大小。

注意:图像目标的大小可以在运行时更改。这为定义或更新 3D 场景中目标的比例提供了灵活性。

注意:希望将图像目标与 Positional Device Tracker 结合使用的开发人员应指定目标大小(以米为单位)


另一方面,如果您只关心一个纯bool值“是否完全找到目标”来启用和禁用某些东西而不关心 3D 位置,并且只有在这种情况下,您可以使用它,您不会得到任何关于找到或没有找到不同尺寸的信息,或者它实际离相机多远或任何有用的 3D 位置的任何信息。

您也许可以使用空间映射在现代 AR 头显上解决这个问题,因为 x/y 位置仍然应该是正确的,而不仅仅是深度 z 位置(相机空间中的轴)


推荐阅读