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

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Assis
Messages : 33
Inscription : 12 Août 2019 19:26

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

Message par Assis » 13 Mars 2020 19:12

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:
Dernière édition par Assis le 14 Mars 2020 12:06, édité 1 fois.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

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

Message par djulio74 » 13 Mars 2020 20:30

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.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

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

Message par djulio74 » 13 Mars 2020 21:41

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();
    }
}

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Assis
Messages : 33
Inscription : 12 Août 2019 19:26

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

Message par Assis » 14 Mars 2020 12:04

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:

Répondre

Revenir vers « Scripting »