获取Unity3D虚拟摄像机的图像

  最新博客地址已转到:

  http://blog.csdn.net/zzlyw?viewmode=contents  

-----------------------------------------------------------------------

  在使用Unity3D这个引擎做科研或者工程的过程中,有时候需要获得某一个虚拟摄像机实时拍到的画面并保存为图片。这里给出一种简单的实现方法。原理很简单,先将虚拟摄像机的图像转移到一个RenderTexture上,然后使用Texture2D的像素读取功能来将图像数据获取到Texture2D类型的数据中,最后保存到图片。

 using UnityEngine;
 using System.Collections;
 using System.IO;

 public class GetImage : MonoBehaviour {

     public Camera mainCam; //待截图的目标摄像机
     RenderTexture rt;  //声明一个截图时候用的中间变量
     Texture2D t2d ;
     ;  //截图计数

     //public GameObject pl;  //一个调试用的板子

     void Start () {
         t2d = ,,TextureFormat.RGB24,false);
         rt = , , );
         mainCam.targetTexture = rt;

     }

     void Update () {
         //按下空格键来截图
         if (Input.GetKeyDown(KeyCode.Space))
         {
             //将目标摄像机的图像显示到一个板子上
             //pl.GetComponent<Renderer>().material.mainTexture = rt;

             //截图到t2d中
             RenderTexture.active = rt;
             t2d.ReadPixels(, , rt.width, rt.height), , );
             t2d.Apply();
             RenderTexture.active = null;

             //将图片保存起来
             byte[] byt = t2d.EncodeToJPG();
             File.WriteAllBytes(Application.dataPath + "//"+ num.ToString() +".jpg", byt);

             Debug.Log("当前截图序号为:"+num.ToString());
             num++;
         }

     }
 }
上一篇:Apache Kafka开发入门指南(1)


下一篇:Android简易实战教程--第二十一话《内容观察者监听数据库变化》