Esempio n. 1
0
        void SetupVisualizationCamera(Camera cam)
        {
            var visualizationAllowed = s_VisualizedPerceptionCamera == null;

            if (!visualizationAllowed && showVisualizations)
            {
                Debug.LogWarning($"Currently only one PerceptionCamera may be visualized at a time. Disabling visualization on {gameObject.name}.");
                showVisualizations = false;
                return;
            }
            if (!showVisualizations)
            {
                return;
            }

            m_ShowingVisualizations      = true;
            s_VisualizedPerceptionCamera = this;

            // set up to render to a render texture instead of the screen
            var visualizationRenderTexture = new RenderTexture(cam.pixelWidth, cam.pixelHeight, 8, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);

            visualizationRenderTexture.name = cam.name + "_visualization_texture";
            cam.targetTexture = visualizationRenderTexture;

            s_VisualizationCamera = new GameObject(cam.name + "_VisualizationCamera");
            var visualizationCameraComponent = s_VisualizationCamera.AddComponent <Camera>();
            int layerMask = 1 << LayerMask.NameToLayer("UI");

            visualizationCameraComponent.orthographic = true;
            visualizationCameraComponent.cullingMask  = layerMask;

            s_VisualizationCanvas      = GameObject.Instantiate(Resources.Load <GameObject>("VisualizationUI"));
            s_VisualizationCanvas.name = cam.name + "_VisualizationCanvas";

            var canvas = s_VisualizationCanvas.GetComponent <Canvas>();

            canvas.renderMode  = RenderMode.ScreenSpaceCamera;
            canvas.worldCamera = visualizationCameraComponent;

            var imgObj = new GameObject(cam.name + "_Image");
            var img    = imgObj.AddComponent <RawImage>();

            img.texture = visualizationRenderTexture;

            var rect = imgObj.transform as RectTransform;

            rect.SetParent(s_VisualizationCanvas.transform, false);
            //ensure the rgb image is rendered in the back
            rect.SetAsFirstSibling();
            rect.anchorMin = new Vector2(0, 0);
            rect.anchorMax = new Vector2(1, 1);
            rect.pivot     = new Vector2(0.5f, 0.5f);
            rect.offsetMax = Vector2.zero;
            rect.offsetMin = Vector2.zero;
        }
Esempio n. 2
0
 void CleanupVisualization()
 {
     if (s_VisualizedPerceptionCamera == this)
     {
         Destroy(s_VisualizationCamera);
         Destroy(s_VisualizationCanvas);
         s_VisualizedPerceptionCamera = null;
         s_VisualizationCamera        = null;
         s_VisualizationCanvas        = null;
     }
 }
Esempio n. 3
0
 internal void Init(PerceptionCamera newPerceptionCamera)
 {
     try
     {
         this.perceptionCamera = newPerceptionCamera;
         sensorHandle          = newPerceptionCamera.SensorHandle;
         Setup();
         isInitialized = true;
     }
     catch (Exception)
     {
         this.enabled = false;
         throw;
     }
 }