Как захватывать кадры с камеры Unity3d и отображать их на другом rawImage в режиме реального времени? - PullRequest
0 голосов
/ 27 июня 2019

the results

Я хочу захватывать кадры с виртуальной камеры Unity3d и затем отображать их на другом необработанном изображении. В результате экран необработанного изображения очень сильно мерцает.

using UnityEngine;
using UnityEngine.UI;

public class RawImageVirtualWebCamTexture : MonoBehaviour
{
    private RawImage rawimage;

    void Start()
    {
        GameObject obj = GameObject.Find("RawImageTransform");
        rawimage = obj.GetComponent<RawImage>();
    }

    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        if (source != null)
        {
            rawimage.texture = source;
        }
        Graphics.Blit(source, destination);
    }
}

Я хочу видеть плавные картинки.Но как это сделать?

1 Ответ

0 голосов
/ 27 июня 2019

Если речь идет о Unity Camera, вам не нужно ничего захватывать.

Просто создайте новый RenderTexture

Assets -> щелкните правой кнопкой мыши -> Create -> RenderTexture

enter image description here

пусть ваш Camera визуализирует в этом RenderTexture вместо рендеринга игрового вида, просто ссылаясь на созданный RenderTexture в Target Texture (что делает этот Camera не визуализируемым больше в Game View, а на ссылочный RenderTexture)

enter image description here

и, наконец, просто используйте созданный RenderTexture как Texture для RawImage

enter image description here


Если вам нужно, чтобы Camera одновременно отображалось в обычном игровом представлении, просто используйте еще один Camera на дочернем объекте для вышеуказанного процесса.

enter image description here


Результат

enter image description here

...