Unity 相机截图并投影


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraScreen : MonoBehaviour {

    public Camera arcamera;//截图相机
    public GameObject projectionModel; //投影模型
    public GameObject hiddenModel; //隐藏模型
    private void Start()
    {
        //旋转相机角度
        //arcamera.transform.Rotate(new Vector3(0, 0, -90));
        //将物体移出视野
        hiddenModel.transform.position = new Vector3(100, 100, 100);
    }

    private void Update()
    {
        ScreenPicture();
    }

    /// <summary>
    /// 获取摄像机截图图片,并将图片贴到模型上
    /// </summary>
    public void ScreenPicture()
    {
        //投影
        projectionModel.GetComponent<Renderer>().material.mainTexture = CaptureCamera(arcamera, new Rect(0, 0, 500, 500));
    }

    /// <summary>
    /// 摄像机截图
    /// </summary>
    /// <param name="camera"></param>
    /// <param name="rect"></param>
    /// <returns></returns>
    Texture2D CaptureCamera(Camera camera, Rect rect)
    {
        RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0);
        camera.targetTexture = rt;
        camera.Render();

        RenderTexture.active = rt;
        Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24, false);
        screenShot.ReadPixels(rect, 0, 0);
        screenShot.Apply();
        camera.targetTexture = null;
        RenderTexture.active = null;
        GameObject.Destroy(rt);

        //保存图片
        //byte[] bytes = screenShot.EncodeToPNG();
        //string filename = Application.dataPath + "/picture/Screenshot.png";
        //System.IO.File.WriteAllBytes(filename, bytes);

        return screenShot;
    }
}

猜你喜欢

转载自blog.csdn.net/l1336037686/article/details/80974794