如何在Unity

时间:2017-05-26 09:08:50

标签: android unity3d android-camera google-project-tango fieldofview

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

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

1 个答案:

答案 0 :(得分:1)

当然可能是ddddddddaxing。

准备好了,这是你需要做的:

让我们看一下从C API中检索内部参数,以获得基础逻辑的一般概述。步骤如下:

  1. 创建 TangoCameraIntrinsics 结构。
  2. 调用TangoService_getCameraIntrinsics函数。传递相机的ID和结构的地址。
  3. 例如,要获得彩色相机内在函数:

    TangoCameraIntrinsics ccIntrinsics;
    TangoService_getCameraIntrinsics(TANGO_CAMERA_COLOR, &ccIntrinsics);
    

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

    对于专门用于 Unity 的C#,这应该是这样的:

    1. 创建 TangoCameraIntrinsics 结构对象。
    2. 调用GetIntrinsics类的Tango.VideoOverlayProvider方法。
    3. 该方法使用内部信息填充结构。

      现在您可以查看使用内在函数从焦距计算FOV。

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

      ///参数///说明

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

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

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

      /// fy ///焦距,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
      

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

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

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

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

      ///对角线FOV = 2 * arctan(sqrt((宽度/ 2Fx)^ 2 +(高度/ 2Fy)^ 2))

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

      如果您正在使用运动追踪相机(有时称为“鱼眼”镜头),则使用"FOV" distortion modelTangoCameraIntrinsics结构/对象将包含校准类型TANGO_CALIBRATION_EQUIDISTANT

      如果您使用的是彩色相机,则使用polynomial distortion modelTangoCameraIntrinsics结构/对象将包含校准类型TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS

      要进一步深入,请查看Git上的VideoOverlayProvider.cs脚本here

      第二个问题 -

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