如何在 Unity 中获得探戈视野



目前我将TangoARScreen脚本附加到Unity中的Tango相机预制件中,是否可以通过C#脚本在Unity中检索视野值?

此外,是否可以在 Unity 中使用前置摄像头?

当然有可能ddddddddaxing。

做好准备,这是您需要做的:

让我们看一下从 C API 检索内部参数,以大致了解基础逻辑。步骤如下:

  1. 创建一个探戈相机内联结构
  2. 调用TangoService_getCameraIntrinsics函数。将相机的 ID 和结构的地址传递给它。

例如,要获取彩色相机内部函数,请执行以下操作:

TangoCameraIntrinsics ccIntrinsics;
TangoService_getCameraIntrinsics(TANGO_CAMERA_COLOR, &ccIntrinsics);

该函数使用内部信息填充结构。

对于专门用于Unity的 C#,它应该如下所示:

  1. 创建一个TangoCameraIntrinsics结构对象。
  2. 调用Tango.VideoOverlayProvider类的GetIntrinsics方法。

该方法使用内部信息填充结构。

现在,您可以查看使用内联函数根据焦距计算FOV。

计算 FOV 所需的所有参数都可以从 API 中检索。

参数///说明

///宽度///图像传感器上图像的宽度(以像素为单位)。

高度///图像传感器上图像的高度(以像素为单位)。

///fx///焦距,x 轴,以像素为单位。

焦距,y 轴,以像素为单位。

请注意,在大多数系统中,fx = fy。

例如,让我们在 C 中看一下:

TangoCameraIntrinsics ccIntrinsics;
TangoService_getCameraIntrinsics(TANGO_CAMERA_COLOR, &ccIntrinsics);

检查ccIntrinsics结构时,应类似于以下数据:

ccIntrinsics.height=720;
ccIntrinsics.fy=1042.0;

因此:

Vertical FOV = 2*atan(0.5*720.0/1042.0) = 2*19.0549 deg = 38.1098 deg

水平和垂直视场的公式为:

水平视场 = 2 * atan(0.5 * 宽度/Fx)

垂直视场 = 2 * atan(0.5 * 高度/Fy)

如果渲染引擎仅支持一个 FOV 值,请参阅其文档以了解要使用的 FOV。如果需要对角线视野,公式为:

对角线 FOV = 2 * arctan(sqrt((width/2Fx)^2 + (height/2Fy)^2))

相机中的镜头并不完美,会增加一定程度的失真。对于大多数用例,影响很小,可以忽略;但是,当校准 Tango 设备时,它会检查并存储失真信息,这些值在TangoCameraIntrinsics结构(C 和 Unity)中可用。

如果您使用的是运动跟踪相机(有时称为">鱼眼镜头">),则使用"FOV"畸变模型,并且TangoCameraIntrinsics结构/对象将包含校准类型TANGO_CALIBRATION_EQUIDISTANT

如果您使用的是彩色相机,则使用多项式失真模型,并且TangoCameraIntrinsics结构/对象将包含校准类型TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS

有关更深入的内容,请查看 Git 上的 VideoOverlayProvider.cs 脚本

这里第二个问题——

访问前置摄像头需要您放弃 Tango 功能并断开与TangoCore服务的连接。您可以通过强制TangoUx包并重新本地化来重新启用此中间应用程序,但是您将失去运动跟踪,除非您的应用程序正在使用区域学习,否则这可能会使最终用户迷失方向。 如果我没记错的话,您可以通过TangoMultiCamera预制件检查器中的下拉列表选择它。

相关内容

  • 没有找到相关文章

最新更新