【问题标题】:How do you get the UIKit coordinates of an ARKit feature point?你如何获得一个 ARKit 特征点的 UIKit 坐标?
【发布时间】:2018-07-14 03:13:24
【问题描述】:

我有一个 ARSCNView,我正在跟踪场景中的特征点。如何从特征点的 3D 世界坐标中获取特征点的 2D 坐标(如屏幕中该点的坐标)?

(本质上与sceneView.hitTest相反)

【问题讨论】:

    标签: ios swift scenekit arkit


    【解决方案1】:

    将一个点从 3D 空间(通常是相机或世界空间)转换为 2D 视图(像素)空间称为投影该点。 (因为它涉及到一个projection transform,它定义了如何展平第三维。)

    ARKit 和 SceneKit 都提供了投影点的方法(以及非投影点,即需要额外输入来推断第三维的反向变换)。

    由于您使用的是ARSCNView,因此您可以只使用projectPoint 方法。 (这继承自超类SCNView 并在SCNSceneRenderer 协议中定义,但仍然适用于AR,因为ARKit 世界空间与SceneKit 世界/场景/根节点空间相同。)请注意,您需要来回转换该方法在float3SCNVector3 之间。

    还要注意返回的“2D”点仍然是一个 3D 向量——xy 坐标是屏幕像素(嗯,在 UIKit 布局单元中是“点”),第三个是相对深度值.只需从前两个坐标中创建一个CGPoint,即可用于其他 UIKit API。

    顺便说一句,如果您在没有 SceneKit 的情况下使用 ARKit,那么在 ARCamera 上还有一个 projectPoint 方法。

    【讨论】:

      猜你喜欢
      • 2018-03-28
      • 2012-07-25
      • 2018-03-18
      • 1970-01-01
      • 2021-06-13
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      相关资源
      最近更新 更多