Визуализация полного обзора камеры (16:9) на текстуре в Unity3d
Я играл с текстурами рендеринга Unity, где вы можете визуализировать вид камеры на текстуру. Тем не менее, я заметил, что он не отображает весь вид камеры. Это только отрисовывает квадратный срез вида камеры.
Я пытаюсь сделать так, чтобы весь вид камеры (соотношение сторон 16:9) отображался на текстуре (также соотношение сторон 16:9). Но сейчас кажется, что он способен проецировать только квадратную часть своего обзора на квадратную поверхность. Есть ли какое-то решение этого?
3 ответа
Казалось, я решил свою проблему. Учебник, найденный здесь, предоставит вам проект, который делает именно то, что я просил:) http://unity.grogansoft.com/in-game-security-camera-using-render-texture/
С помощью RenderTexture вы можете указать размер текстуры: http://docs.unity3d.com/ScriptReference/RenderTexture.Create.html
Это должно идти так:
Camera camera = GameObject.Find("Main Camera");
int resWidth = Screen.width;
int resHeight = Screen.height;
RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);
camera.targetTexture = rt; //Create new renderTexture and assign to camera
Texture2D screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false); //Create new texture
camera.Render();
RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0); //Apply pixels from camera onto Texture2D
camera.targetTexture = null;
RenderTexture.active = null; //Clean
Destroy(rt); //Free memory
Это довольно просто. Код не требуется. У вас должны быть одинаковые значения между размером RenderTexture (x,y) и RectTransform (ширина / высота), который вы используете для визуализации вашей текстуры (той, с которой прикреплен компонент RawImage). Допустим, вы хотите стандартное соотношение сторон 16:9 HD. Вам необходимо настроить размер RenderTexture на 1280x720, а ширину и высоту RectTransform - на 1280x720. Затем вы можете масштабировать RectTransform до любого размера, который вам нужен, чтобы соответствовать макету пользовательского интерфейса, который вы разрабатываете.