ARKit

2017-12-08 14 views
1

내가 ARKit의 절두체의 경계를 구성하는 네 개의 벡터를 얻으려고 카메라의 위쪽 벡터를 취득하고, 내가 생각 해낸 해결책은 다음과 같습니다ARKit

  • 것은 찾기 카메라의 뷰 각도의 필드
  • 그런 다음 교차 제품 및 회전

를 사용하여 네 개의 벡터를 찾을 방향과 최대 이러한 정보를 이용하여 카메라

  • 의 벡터를 찾는이의 실수 방법이 될 수 있습니다 도이 ng 그것, 그러나 그것은 나가 이제까지 가지고있는 제일 것이다.

    ARCamera.intrinsicsARCamera.transform 속성에서 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) 
    } 
    

    :

    다음은 내가 FOV 각도를 찾기 위해 사용하는 코드의 조각과 방향 벡터이다.

  • 답변

    0

    I이 광고가 어떻게 작동하는지 알 않았다는 : 변환 행렬의 제 3 행은 여기서 변환 카메라 점의 새로운 Z 방향에주기 때문에

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

    이 카메라의 방향 벡터를 제공한다. 카메라의 기본 방향이 음의 z 축이므로 -1을 곱합니다.

    이 정보와 카메라의 기본 상향 벡터가 양의 y 축인 사실을 고려하면 변형 행렬의 두 번째 행은 카메라의 상향 벡터를 제공합니다. 다음 코드는 내가 원하는 것을 제공합니다.

    let cameraUp = SCNVector3(cameraTransform.m21, 
              cameraTransform.m22, 
              cameraTransform.m23)