我如何获得从摄像机到锚点的方向

时间:2018-10-17 04:13:01

标签: ios arkit

我是ARKit的新手。我想获得从锚点1到锚点2的方向。目前,我可以从transform.columns.3获得位置。但是,这仅适用于固定轴。(z轴始终朝向用户)

如何比较两个锚相对于6个轴(俯仰,偏航,横滚)的位置?我应该阅读什么以获得有关此的更多详细信息?

func showDirection(of object: ARAnchor) { // only work for fixed axis
    if let currentFrame = sceneView.session.currentFrame {
        print("diff(x) = \(currentFrame.camera.transform.columns.3.x - object.transform.columns.3.x)")
        print("diff(y) = \(currentFrame.camera.transform.columns.3.y - object.transform.columns.3.y)")
        print("diff(z) = \(currentFrame.camera.transform.columns.3.z - object.transform.columns.3.z)")
    }
}

1 个答案:

答案 0 :(得分:0)

我认为我对this other user's question的回答可能会有所帮助。基本上,使用SceneKit或ARKit,您可以找到摄影机和目标锚的方向,并进行一些四元数数学运算以找到它们在x,y和z轴上的相对旋转轴和角度。我的示例假定使用SceneKit / ARKit应用程序,该应用程序允许您使用四元数而不是矩阵,但是对于ARKit变换,其数学运算本质上应该是相同的。如果使用ARKit的simd_float4x4变换矩阵,则可以在另一个矩阵(A.inverse * B)中找到一个矩阵,然后使用所得矩阵收集相对位置和方向。

您的问题有点难以理解,因为我不确定您要针对的锚的方向是否适合您的情况,但这应该有助于比较两个锚的俯仰,偏航和卷