public void GetFrameData(int frame, bool lastFrame) { //Vector3 position = DeviationRay(); //Vector3 position = motionAnchor.transform.position; Vector3 position = PosByMarker(); ScreenPosData data = VPToScreenPoint(cam: arCamera, cam_w: camera_width, cam_h: camera_height, target: position, f: frame); string json = JsonUtility.ToJson(data); WriteData(json, lastFrame); }
/// <summary> /// returns a vector with normalized x, y values at a given frame: /// (0, 0) -> bottom left /// (1, 1) -> top right /// z = distance to camera /// </summary> /// <param name="cam"></param> camera used for tracking /// <param name="cam_w"></param> camera pixel width /// <param name="cam_h"></param> camera pixel height /// <param name="pos"></param> vector for screen pos calc /// <param name="f"></param> frame /// <returns></returns> public static ScreenPosData VPToScreenPoint(Camera cam, float cam_w, float cam_h, Vector3 target, int f) { ScreenPosData data = new ScreenPosData(); var point = cam.WorldToScreenPoint(target); //normalized vector var tmpScreenPos = new Vector3(point.x / cam_w, point.y / cam_h, point.z); data.frame = f; data.screenPos = tmpScreenPos; data.objPos = target; return(data); }