【问题标题】:Why do we need `rotateToARCamera` in Apple's `Visualizing a Point Cloud Using Scene Depth` sample code?为什么我们在 Apple 的“使用场景深度可视化点云”示例代码中需要“rotateToARCamera”?
【发布时间】:2021-04-25 17:39:17
【问题描述】:

示例代码:https://developer.apple.com/documentation/arkit/visualizing_a_point_cloud_using_scene_depth

在代码中,当将深度图不投影到世界点时,我们使用的是正 z 值(深度值)。但据我了解,ARKit 使用右手坐标系,这意味着 z 值为正的点位于相机后面。所以也许我们需要做一些额外的工作来对齐坐标系(使用rotateToARCamera矩阵?)。但我不明白为什么我们需要同时翻转 Y 和 Z 平面。

static func makeRotateToARCameraMatrix(orientation: UIInterfaceOrientation) -> matrix_float4x4 {
    // flip to ARKit Camera's coordinate
    let flipYZ = matrix_float4x4(
        [1, 0, 0, 0],
        [0, -1, 0, 0],
        [0, 0, -1, 0],
        [0, 0, 0, 1] )

    let rotationAngle = Float(cameraToDisplayRotation(orientation: orientation)) * .degreesToRadian
    return flipYZ * matrix_float4x4(simd_quaternion(rotationAngle, Float3(0, 0, 1)))
}

更新:我猜关键点是用于相机内在矩阵的针孔模型的坐标系与 ARKit 中的正常相机空间相比具有相反的方向。

【问题讨论】:

    标签: ios graphics computer-vision arkit metal


    【解决方案1】:

    Depth Map 是一个 Y 坐标在顶部较小而在底部较大的坐标系,就像图像数据一样,但 ARKit 是一个 Y 坐标从底部较小而在顶部较大的坐标系。

    因此,我认为有必要将Y坐标倒置。

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多