ARKit

2017-12-08 29 views
1

でカメラのベクトルを取得し、私はARKitに錐台の境界を構成する4つのベクトルを取得しようとしている、と次のように私が思いついた解決策は次のとおりです。ARKit

  • 検索カメラ
  • の視野角のフィールドは、これはのずさんな方法かもしれクロス製品と回転

を使用して4つのベクトルを見つけ、これらの情報を使用してカメラ

  • の方向とアップベクトルを見つけます。ドイそれは、これまでのところ最高のものです。

    ARCamera.intrinsicsARCamera.transformプロパティから、FOVの角度と方向ベクトルを取得できます。しかし、私はこの時点でカメラのアップベクトルを得る方法を知らない。以下は

    私はFOV角度と方向ベクトルを見つけるために使用するコードです:

    func session(_ session: ARSession, didUpdate frame: ARFrame) { 
        if xFovDegrees == nil || yFovDegrees == nil { 
        let imageResolution = frame.camera.imageResolution 
        let intrinsics = frame.camera.intrinsics 
        xFovDegrees = 2 * atan(Float(imageResolution.width)/(2 * intrinsics[0,0])) * 180/Float.pi 
        yFovDegrees = 2 * atan(Float(imageResolution.height)/(2 * intrinsics[1,1])) * 180/Float.pi 
        } 
    
        let cameraTransform = SCNMatrix4(frame.camera.transform) 
        let cameraDirection = SCNVector3(-1 * cameraTransform.m31, 
                -1 * cameraTransform.m32, 
                -1 * cameraTransform.m33) 
    } 
    

    私も、私が取得しようとしている4つのベクトルを見つけるための方法のための提案を開いています。

  • 答えて

    0

    私は、この行が働い方法を理解していなかった。

    let cameraDirection = SCNVector3(-1 * cameraTransform.m31, 
               -1 * cameraTransform.m32, 
               -1 * cameraTransform.m33) 
    

    変換行列の3行目は、ここで、形質転換カメラポイントの新たなz方向を与えるので、これは、カメラの方向ベクトルを与えます。カメラのデフォルトの方向が負のz軸であるため、-1を掛けます。

    この情報と、カメラのデフォルトの上向きベクトルが正のy軸であることを考慮すると、変換行列の2番目の行はカメラの上向きベクトルを与えます。次のコードは、私が望むものを私に与えます:

    let cameraUp = SCNVector3(cameraTransform.m21, 
              cameraTransform.m22, 
              cameraTransform.m23) 
    
    関連する問題