Exemple #1
0
        private static Tuple <int, StreamEntry> StreamFromBatch(string name, RenderBatch.CameraBatch batch_stream)
        {
            StreamEntry stream = new StreamEntry();

            stream.Name = name;

            int count = 0;

            foreach (KeyValuePair <RenderBatch.CameraBatch.RenderType, List <Texture2D> > pair in batch_stream.images_)
            {
                int i = 0;
                foreach (Texture2D image in pair.Value)
                {
                    BatchResponseEntry entry;
                    if (i + 1 > stream.Entries.Count)
                    {
                        entry = new BatchResponseEntry();
                        stream.Entries.Add(entry);
                    }
                    else
                    {
                        entry = stream.Entries[i];
                    }
                    ++i;

                    ByteString data = null;
                    switch (pair.Key)
                    {
                    case RenderBatch.CameraBatch.RenderType.RGB:
                        data            = ByteString.CopyFrom(image.GetRawTextureData());
                        entry.ImageData = data;
                        break;

                    case RenderBatch.CameraBatch.RenderType.DEPTH:
                        entry.DepthData = ReadDepth(image);
                        break;

                    case RenderBatch.CameraBatch.RenderType.NORMALS:
                        entry.NormalsData = ReadNormals(image);
                        break;

                    case RenderBatch.CameraBatch.RenderType.SEGMENTATION:
                        entry.SegmentationData = ReadSegmentation(image);
                        break;

                    default:
                        Logger.Error("Unsupported Batch.Stream.Type {0}", pair.Key);
                        break;
                    }
                }
                count = i;
            }

            Tuple <int, StreamEntry> stream_info = new Tuple <int, StreamEntry>(count, stream);

            return(stream_info);
        }
Exemple #2
0
    private void ProcessBatch()
    {
        RenderBatch batch = new RenderBatch();

        foreach (List <CameraSetup> camera_setups in camera_setups_.Values)
        {
            foreach (CameraSetup camera_setup in camera_setups)
            {
                RenderBatch.CameraBatch camera_batch;
                if (batch.camera_batches_.ContainsKey(camera_setup.camera_name_))
                {
                    camera_batch = batch.camera_batches_[camera_setup.camera_name_];
                }
                else
                {
                    camera_batch = new RenderBatch.CameraBatch();
                    batch.camera_batches_.Add(camera_setup.camera_name_, camera_batch);
                }

                switch (camera_setup.camera_type_)
                {
                case CameraSetup.CameraType.RGB:
                    camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.RGB, camera_setup.ApplyAndGetImages());
                    break;

                case CameraSetup.CameraType.SEGMENTATION:
                    camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.SEGMENTATION, camera_setup.ApplyAndGetImages());
                    break;

                case CameraSetup.CameraType.DEPTH_NORMALS:
                    List <Texture2D> images = camera_setup.ApplyAndGetImages();
                    if (capture_depth_)
                    {
                        camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.DEPTH, images);
                    }
                    if (capture_normals_)
                    {
                        camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.NORMALS, images);
                    }
                    break;
                }
            }
        }

        batch_consumer_.ConsumeImageBatch(batch);

        capture_count_ = 0;
        batch_count_++;
    }