【Unity】RendererTextureからTexture2Dの作り方
今回やること
Cameraで描画されているものをTexture2Dに変換させる。
用意するもの
- RendererTexture (ProjectWindowで右クリック > Create > RendererTextureで作成可能)
- Camera
Script
//このScriptはMainCameraにアタッチしてください public RenderTexture renderTexture; //mainCameraにつけるRendertexture(アタッチしてね) public Texture2D kakunin; //ほんとに保存されているかの確認用 Camera mainCamera; void Start () { mainCamera = GetComponent<Camera>(); kakunin = CreateTexture2D(renderTexture); } /// <summary> /// ここでTextur2Dに変換しているよ /// </summary> /// <param name="rt"></param> /// <returns></returns> Texture2D CreateTexture2D(RenderTexture rt) { //Texture2Dを作成 Texture2D texture2D = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false, false); //subCameraにRenderTextureを入れる mainCamera.targetTexture = rt; //手動でカメラをレンダリングします mainCamera.Render(); RenderTexture.active = rt; texture2D.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); texture2D.Apply(); //元に戻す別のカメラを用意してそれをRenderTexter用にすれば下のコードはいらないです。 mainCamera.targetTexture = null; RenderTexture.active = null; return texture2D; }
上のScriptをMainCameraにアタッチしてください。 作ったRendererTextureをアタッチし忘れに注意。
注意!
この処理はそこそこ重いので毎フレームやることは推奨しません。 やるのであれば数フレームに一回や何かのボタンを押したら1度だけ動くようにするのがいいと思います。
おわり
何か質問などがある方はコメントください。