示例#1
0
        public override IEnumerator RunJob()
        {
            Debug.Log("*************************** CoroutineJobCapture ***************************");
            Mapper mapper = host as Mapper;

            SDKImageRequest imageRequest = new SDKImageRequest();

            imageRequest.token     = mapper.token;
            imageRequest.run       = this.run;
            imageRequest.bank      = mapper.currentBank;
            imageRequest.index     = this.index;
            imageRequest.anchor    = this.anchor;
            imageRequest.px        = position.x;
            imageRequest.py        = position.y;
            imageRequest.pz        = position.z;
            imageRequest.r00       = rotation.m00;
            imageRequest.r01       = rotation.m01;
            imageRequest.r02       = rotation.m02;
            imageRequest.r10       = rotation.m10;
            imageRequest.r11       = rotation.m11;
            imageRequest.r12       = rotation.m12;
            imageRequest.r20       = rotation.m20;
            imageRequest.r21       = rotation.m21;
            imageRequest.r22       = rotation.m22;
            imageRequest.fx        = intrinsics.x;
            imageRequest.fy        = intrinsics.y;
            imageRequest.ox        = intrinsics.z;
            imageRequest.oy        = intrinsics.w;
            imageRequest.latitude  = latitude;
            imageRequest.longitude = longitude;
            imageRequest.altitude  = altitude;
            imageRequest.b64       = encodedImage;

            string jsonString = JsonUtility.ToJson(imageRequest);

            using (UnityWebRequest request = UnityWebRequest.Put(string.Format(Endpoint.URL_FORMAT, mapper.server, Endpoint.CAPTURE_IMAGE), jsonString))
            {
                request.method          = UnityWebRequest.kHttpVerbPOST;
                request.useHttpContinue = false;
                request.SetRequestHeader("Content-Type", "application/json");
                request.SetRequestHeader("Accept", "application/json");
                yield return(request.SendWebRequest());

                Debug.Log("Response code: " + request.responseCode);

                if (request.isNetworkError || request.isHttpError)
                {
                    Debug.LogError(request.error);
                }
                else if (request.responseCode == (long)HttpStatusCode.OK)
                {
                    Debug.Log(request.downloadHandler.text);
                }
            }
        }
示例#2
0
        public override IEnumerator RunJob()
        {
            Debug.Log("*************************** CoroutineJobCapture ***************************");
            BaseMapper mapper = host as BaseMapper;

            byte[] capture = new byte[channels * width * height + 1024];

            Task <(string, icvCaptureInfo)> t = Task.Run(() =>
            {
                icvCaptureInfo info = Core.CaptureImage(capture, capture.Length, pixels, width, height, channels);
                return(Convert.ToBase64String(capture, 0, info.captureSize), info);
            });

            while (!t.IsCompleted)
            {
                yield return(null);
            }

            string         encodedImage = t.Result.Item1;
            icvCaptureInfo captureInfo  = t.Result.Item2;

            mapper.NotifyIfConnected(captureInfo);

            SDKImageRequest imageRequest = new SDKImageRequest();

            imageRequest.token     = mapper.token;
            imageRequest.run       = this.run;
            imageRequest.bank      = mapper.currentBank;
            imageRequest.index     = this.index;
            imageRequest.anchor    = this.anchor;
            imageRequest.px        = position.x;
            imageRequest.py        = position.y;
            imageRequest.pz        = position.z;
            imageRequest.r00       = rotation.m00;
            imageRequest.r01       = rotation.m01;
            imageRequest.r02       = rotation.m02;
            imageRequest.r10       = rotation.m10;
            imageRequest.r11       = rotation.m11;
            imageRequest.r12       = rotation.m12;
            imageRequest.r20       = rotation.m20;
            imageRequest.r21       = rotation.m21;
            imageRequest.r22       = rotation.m22;
            imageRequest.fx        = intrinsics.x;
            imageRequest.fy        = intrinsics.y;
            imageRequest.ox        = intrinsics.z;
            imageRequest.oy        = intrinsics.w;
            imageRequest.latitude  = latitude;
            imageRequest.longitude = longitude;
            imageRequest.altitude  = altitude;
            imageRequest.b64       = encodedImage;

            string jsonString = JsonUtility.ToJson(imageRequest);

            using (UnityWebRequest request = UnityWebRequest.Put(string.Format(Endpoint.URL_FORMAT, mapper.server, Endpoint.CAPTURE_IMAGE), jsonString))
            {
                request.method          = UnityWebRequest.kHttpVerbPOST;
                request.useHttpContinue = false;
                request.SetRequestHeader("Content-Type", "application/json");
                request.SetRequestHeader("Accept", "application/json");
                yield return(request.SendWebRequest());

                Debug.Log("Response code: " + request.responseCode);

                if (request.isNetworkError || request.isHttpError)
                {
                    Debug.LogError(request.error);
                }
                else if (request.responseCode == (long)HttpStatusCode.OK)
                {
                    SDKImageResult result = JsonUtility.FromJson <SDKImageResult>(request.downloadHandler.text);
                    if (result.error == "none")
                    {
                        Debug.Log("Image uploaded successfully");
                    }
                }
            }
        }
示例#3
0
        public override IEnumerator RunJob()
        {
            Debug.Log("*************************** CoroutineJobCapture ***************************");

            byte[] capture = new byte[4 * 1024 * 1024];    // should need less than 2 megs when reso is 1440p
            Task <(string, icvCaptureInfo)> t = Task.Run(() =>
            {
                icvCaptureInfo info = Core.CaptureImage(capture, capture.Length, pixels, width, height, channels);
                return(Convert.ToBase64String(capture, 0, info.captureSize), info);
            });

            while (!t.IsCompleted)
            {
                yield return(null);
            }

            string encodedImage = t.Result.Item1;

            icvCaptureInfo captureInfo = t.Result.Item2;

            if (!sessionFirstImage)
            {
                if (captureInfo.connected == 0)
                {
                    onFailedToConnect.Invoke();
                }
                else
                {
                    onConnect.Invoke();
                }
            }

            SDKImageRequest imageRequest = new SDKImageRequest();

            imageRequest.token  = this.token;
            imageRequest.run    = this.run;
            imageRequest.bank   = this.bank;
            imageRequest.index  = this.index;
            imageRequest.anchor = this.anchor;
            imageRequest.px     = position.x;
            imageRequest.py     = position.y;
            imageRequest.pz     = position.z;
            imageRequest.r00    = rotation.m00;
            imageRequest.r01    = rotation.m01;
            imageRequest.r02    = rotation.m02;
            imageRequest.r10    = rotation.m10;
            imageRequest.r11    = rotation.m11;
            imageRequest.r12    = rotation.m12;
            imageRequest.r20    = rotation.m20;
            imageRequest.r21    = rotation.m21;
            imageRequest.r22    = rotation.m22;
            imageRequest.fx     = intrinsics.x;
            imageRequest.fy     = intrinsics.y;
            imageRequest.ox     = intrinsics.z;
            imageRequest.oy     = intrinsics.w;
            imageRequest.b64    = encodedImage;

            string jsonString = JsonUtility.ToJson(imageRequest);

            using (UnityWebRequest request = UnityWebRequest.Put(string.Format(URL_FORMAT, this.server, "1"), jsonString))
            {
                request.method          = UnityWebRequest.kHttpVerbPOST;
                request.useHttpContinue = false;
                request.SetRequestHeader("Content-Type", "application/json");
                request.SetRequestHeader("Accept", "application/json");
                yield return(request.SendWebRequest());

                Debug.Log("Response code: " + request.responseCode);

                if (request.isNetworkError || request.isHttpError)
                {
                    Debug.Log(request.error);
                }
                else if (request.responseCode == (long)HttpStatusCode.OK)
                {
                    Debug.Log(request.downloadHandler.text);
                }
            }
        }