Ejemplo n.º 1
0
        public async void QueryCineastAndProcess(SimilarityQuery query, bool camera)
        {
            bool f = false;

            var res = await Task.Run(async() =>
            {
                var results = await Task.Run(async() => await CineastWrapper.ExecuteQuery(query, 100, 100));
                Debug.Log("Results received. Fetching objectdata");
                await ObjectRegistry.Initialize(false); // Works due to collection being less than 100 and 100 are prefetched
                Debug.Log("Objectdata Fetched");
                await ObjectRegistry.BatchFetchObjectMetadata(ObjectRegistry.Objects);
                Debug.Log("Metadata fetched");
                Debug.Log("Fetched resutls: " + results.results.Count);
                f = true;
                return(results);
            });

            Debug.Log("Handling Result");

            while (f == false)
            {
                Debug.Log("waiting");
            }

            Debug.Log("finished");

            HandleCineastResult(ObjectRegistry.Objects, camera); // TODO more sophisticated
        }
Ejemplo n.º 2
0
        public async void QueryCineastAndProcess(SimilarityQuery query)
        {
            var res = await Task.Run(async() =>
            {
                var results = await Task.Run(async() => await CineastWrapper.ExecuteQuery(query, 100, 100));
                Debug.Log("Results received. Fetching objectdata");
                await ObjectRegistry.Initialize(false); // Works due to collection being less than 100 and 100 are prefetched
                Debug.Log("Objectdata Fetched");
                await ObjectRegistry.BatchFetchObjectMetadata(ObjectRegistry.Objects);
                Debug.Log("Metadata fetched");
                return(results);
            });

            HandleCineastResult(ObjectRegistry.Objects); // TODO more sophisticated
        }
        public async Task PerformAsync(List <string> categories, string modelJson, Callback callback, Handler handler)
        {
            var testModelData = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(modelJson));

            var terms = new List <QueryTerm>
            {
                new QueryTerm(categories, QueryTerm.TypeEnum.MODEL3D, "data:application/3d-json," + testModelData)
            };

            var components = new List <QueryComponent>
            {
                new QueryComponent(terms)
            };

            var conf = new QueryConfig();

            var query = new SimilarityQuery(components, conf);

            if (handler != null)
            {
                query = handler.OnStartQuery(query);
            }

            var response = await Api.ApiV1FindSegmentsSimilarPostAsync(query);

            if (handler != null)
            {
                response = handler.OnFinishQuery(response);
            }

            var segmentQueries      = new List <Task <MediaSegmentQueryResult> >();
            var segmentQueryContext = new Dictionary <Task <MediaSegmentQueryResult>, Tuple <SimilarityQueryResult, StringDoublePair> >();

            foreach (var similarityResult in response.Results)
            {
                foreach (var similarityContent in similarityResult.Content)
                {
                    var segmentsIdList = new IdList(new List <string>()
                    {
                        similarityContent.Key
                    });
                    if (handler != null)
                    {
                        segmentsIdList = handler.OnStartSegmentsByIdQuery(similarityResult, similarityContent, segmentsIdList);
                    }

                    var segmentQuery = Api.ApiV1FindSegmentsByIdPostAsync(segmentsIdList);

                    segmentQueries.Add(segmentQuery);
                    segmentQueryContext[segmentQuery] = Tuple.Create(similarityResult, similarityContent);
                }
            }

            while (segmentQueries.Count > 0)
            {
                var task = await Task.WhenAny(segmentQueries);

                var segmentsResult = await task;

                segmentQueries.Remove(task);

                var context           = segmentQueryContext[task];
                var similarityResult  = context.Item1;
                var similarityContent = context.Item2;

                if (handler != null)
                {
                    segmentsResult = handler.OnFinishSegmentsByIdQuery(similarityResult, similarityContent, segmentsResult);
                }

                foreach (var segmentContent in segmentsResult.Content)
                {
                    if (handler != null)
                    {
                        handler.OnStartObjectByIdQuery(similarityResult, similarityContent, segmentContent);
                    }
                    var mediaObjectResult = await Api.ApiV1FindObjectByAttributeValueGetAsync("id", segmentContent.ObjectId);

                    if (handler != null)
                    {
                        mediaObjectResult = handler.OnFinishObjectByIdQuery(similarityResult, similarityContent, segmentContent, mediaObjectResult);
                    }

                    if (callback != null)
                    {
                        foreach (var mediaObjectContent in mediaObjectResult.Content)
                        {
                            string objModel;

                            using (var stream = await ObjectDownloader.RequestContentAsync(Api, mediaObjectContent, segmentContent))
                                using (var reader = new StreamReader(stream))
                                {
                                    objModel = reader.ReadToEnd();
                                }

                            callback.OnFullQueryResult(similarityContent, segmentContent, mediaObjectContent, objModel);

                            //Just one result expected
                            break;
                        }
                    }

                    //Just one result expected
                    break;
                }
            }
        }
 public SimilarityQuery OnStartQuery(SimilarityQuery query)
 {
     Console.WriteLine("Start 3D Similarity Query Request");
     return(query);
 }
Ejemplo n.º 5
0
 public SimilarityQuery OnStartQuery(SimilarityQuery query)
 {
     Debug.Log("Start 3D Similarity Query Request");
     return(handler != null?handler.OnStartQuery(query) : query);
 }