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; }
void CleanupVisualization() { if (s_VisualizedPerceptionCamera == this) { Destroy(s_VisualizationCamera); Destroy(s_VisualizationCanvas); s_VisualizedPerceptionCamera = null; s_VisualizationCamera = null; s_VisualizationCanvas = null; } }
internal void Init(PerceptionCamera newPerceptionCamera) { try { this.perceptionCamera = newPerceptionCamera; sensorHandle = newPerceptionCamera.SensorHandle; Setup(); isInitialized = true; } catch (Exception) { this.enabled = false; throw; } }