using System.Collections; using System.Collections.Generic; using Unity.Collections; using UnityEngine; public class CameraSensor : MonoBehaviour { public Camera sensorCam; public int width = 256; public int height = 256; public int depth = 3; public string img_enc = "JPG"; //accepts JPG, PNG, TGA Texture2D tex; RenderTexture ren; Rect ImageRect; public void SetConfig(float fov, float offset_x, float offset_y, float offset_z, float rot_x, float rot_y, float rot_z, int img_w, int img_h, int img_d, string _img_enc) { if (img_d != 0) { depth = img_d; } if (img_w != 0 && img_h != 0) { width = img_w; height = img_h; Awake(); } if(_img_enc.Length == 3) img_enc = _img_enc; if(offset_x != 0.0f || offset_y != 0.0f || offset_z != 0.0f) transform.localPosition = new Vector3(offset_x, offset_y, offset_z); if (rot_x != 0.0f || rot_y != 0.0f || rot_z != 0.0f) { transform.localEulerAngles = new Vector3(rot_x, rot_y, rot_z); } if(fov != 0.0f) sensorCam.fieldOfView = fov; } void Awake() { tex = new Texture2D(width, height, TextureFormat.RGB24, false); ren = new RenderTexture(width, height, 16, RenderTextureFormat.ARGB32); sensorCam.targetTexture = ren; } Texture2D RTImage() { var currentRT = RenderTexture.active; RenderTexture.active = sensorCam.targetTexture; sensorCam.Render(); tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); if(depth == 1) { //assumes TextureFormat.RGB24. Convert to grey scale image NativeArray bytes = tex.GetRawTextureData(); for (int i=0; i