Page 1 sur 1

[RÉSOLU] Impossible de réaliser une capture d'écran avec le postprocess

Publié : 13 Mars 2020 19:12
par Assis
Bonjour :!: ,

Ayant chercher et chercher je viens vers vous.

J'utilise les lignes suivantes dans OnPostRender() mais je ne reçois qu'une image sans postprocess...
Mon script est attaché à ma caméra.

J'ai essayé avec OnRenderImage () sans résultat.
J'ai également trouvé ce sujet mais je ne le comprends pas https://forum.unity.com/threads/how-to- ... ng.701432/

Code : Tout sélectionner

            screenshot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
            screenshot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
            screenshot.Apply();
Merci d'avance :hello:

Re: Impossible de réaliser une capture d'écran avec le postprocess

Publié : 13 Mars 2020 20:30
par djulio74
Je pense que c'est tout a fait normal.
En fait le readPixel copie les pixels du rendertexture de ta camera, qui lui est bien avant le post-process, et non les pixels affiché à l'écran.
en gros dans l'ordre, tu as le rendu de ta camera, stocké dans son renderTexture, ensuite les post-process utilisent cette texture pour y appliquer des effets.

dans ton cas, faudrait trouver ou est stockée l'image final du post-process pour la récupérer, mais là.... aucune idée.

Re: Impossible de réaliser une capture d'écran avec le postprocess

Publié : 13 Mars 2020 21:41
par djulio74
Bon ton probleme m'as interpelé, j'ai donc fais quelques essai recherches.
en fait le readPixel peut marcher, mais soit le mettre dans une coroutine avec instruction d’attendre la fin de la frame :

Code : Tout sélectionner

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

public class ScreenCapture : MonoBehaviour
{
    public Texture2D screenshot;

    void Start()
    {
        screenshot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
    }

    void Update()
    {
        if (Input.GetKeyDown("r"))
        {
            StartCoroutine("capture");
        }
    }
    void OnGUI()
    {
        GUI.DrawTexture(new Rect(0, 0, Screen.width / 2, Screen.height / 2), screenshot, ScaleMode.StretchToFill);        
    }
    IEnumerator capture()
    {
        yield return new WaitForEndOfFrame();
        screenshot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
        screenshot.Apply();
    }
}

Re: Impossible de réaliser une capture d'écran avec le postprocess

Publié : 14 Mars 2020 12:04
par Assis
Merci pour ton aide djulio74.

Ton premier message correspond à ce que je me suis dit quand j'ai fait face au problème.
J'ai essayé avec une coroutine et ça marche!

Encore merci ! :malin1: