2017-12-06 10 views
0

ログの移動軌跡と距離を求めます。ARKitを使用すると、移動軌跡と距離を検出します。

ARKitは実世界の物体を測定できるので、

func distance(from vector: SCNVector3) -> Float { 
    let distanceX = self.x - vector.x 
    let distanceY = self.y - vector.y 
    let distanceZ = self.z - vector.z 

    return sqrtf((distanceX * distanceX) + (distanceY * distanceY) + (distanceZ * distanceZ)) 
} 

私は2 SCNVector3の距離を得ることができます。

が、私はARシーンで

を携帯電話の現在のSCNVector3をログに記録する方法がわからないが、それは可能な利用ARKit対策携帯電話の移動距離と移動軌跡のですか?

答えて

1

ARSessionを作成すると、カメラは0,0,0に配置され、電話機の移動に合わせて移動します。あなたは携帯電話は元の位置からどれだけ離れているかを知りたいのであれば、単に現在のフレームのための変換行列をカメラの翻訳部分を見て:

frame.camera.transform 

のx y、zの翻訳コンポーネントは、それぞれm41, m42 and m43です。数学に精通していない場合は、行列の詳細についてはapple core animationドキュメントを参照してください。

+0

そして、「動く道」を得るためには、時間が経つにつれて変化するようにこれらの値を記録する必要があります。 – rickster

+0

本当にありがとう! SCNVector3Make(transform.columns.3.x、transform.columns.3.y、transform.columns.3.z)は、これはSCNVector3のcamera.transformに対して正しいですか? –

関連する問題