[Résolu]Exclure un objet d'un miroir

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Exclure un objet d'un miroir

Message par Alesk » 02 Oct 2019 09:55

J'ai testé en mettant deux miroirs côté à côte, et ça fonctionne...

Peux-tu envoyer un screenshot de ce que tu as ?

Avatar de l’utilisateur
stigma
Messages : 1407
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Exclure un objet d'un miroir

Message par stigma » 02 Oct 2019 10:29

tu as testé la version gratuite ?

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Exclure un objet d'un miroir

Message par Alesk » 02 Oct 2019 10:34

oui

Avatar de l’utilisateur
stigma
Messages : 1407
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Exclure un objet d'un miroir

Message par stigma » 02 Oct 2019 11:40

Et quand tu fais bouger ton personnage devant les 2 miroirs ça marche toujours? Parce que en ne bougeant pas, ça paraît normal mais en se déplaçant, le 2eme miroir se comporte bizarrement

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Exclure un objet d'un miroir

Message par Alesk » 02 Oct 2019 20:16

j'ai juste fait tourner la scène de démo où la caméra pivote, et je n'ai pas vu de bug dans ce cas là.

Avatar de l’utilisateur
stigma
Messages : 1407
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Exclure un objet d'un miroir

Message par stigma » 02 Oct 2019 21:46

Dans la démo, il n'y a pas 2 miroirs cote à cote.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Exclure un objet d'un miroir

Message par Alesk » 02 Oct 2019 22:21

J'ai dupliqué le miroir existant et je l'ai déplacé sur le côté...

Avatar de l’utilisateur
stigma
Messages : 1407
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Exclure un objet d'un miroir

Message par stigma » 02 Oct 2019 23:15

Mais as tu créé un personnage ou une caméra qui se promène le long du mur ?

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Exclure un objet d'un miroir

Message par Alesk » 03 Oct 2019 01:34

Ok, j'ai capté.

J'avais juste dupliqué le gameObject avec le mirroir, mais pas tout l'ensemble du prefab.
Si on duplique le prefab, il y a bien le souci.

Donc, si tu veux deux miroirs côte à côte, tu peux simplement dupliquer l'objet "MirrorReflection" et le déplacer latéralement.

Si les deux miroirs restent alignés dans le même plan, ça marche.

Par contre, si tu veux deux miroirs orientés différemment, la ça déconne car ils partagent tous le même matériau, et donc affichent la même texture.

Pour régler ça, il faut modifier le script "MirrorCameraScript", dans la fonction Start() tu vas trouver une boucle qui va toucher à la propriété sharedMaterial du mirrorRenderer.
Il suffit de remplace "sharedMaterial" par "material", pour que chaque miroir se trouve avec une instance du matériau bien à lui, plutôt que de partager le même matériau pour tous les miroirs.

Il y a 3 remplacements à faire, voici la fonction modifié, j'ai commenté les anciennes lignes :

Code : Tout sélectionner

private void Start()
    {
        mirrorScript = GetComponentInParent<MirrorScript>();
        cameraObject = GetComponent<Camera>();
        //cameraObject.enabled = true;

        if (mirrorScript.AddFlareLayer)
        {
            cameraObject.gameObject.AddComponent<FlareLayer>();
        }

        mirrorRenderer = MirrorObject.GetComponent<Renderer>();
        if (Application.isPlaying)
        {
            //foreach (Material m in mirrorRenderer.sharedMaterials)
            foreach (Material m in mirrorRenderer.materials)
            {
                if (m.name == "MirrorMaterial")
                {
                    //mirrorRenderer.sharedMaterial = m;
                    mirrorRenderer.material = m;
                    break;
                }
            }
        }
        //mirrorMaterial = mirrorRenderer.sharedMaterial;
        mirrorMaterial = mirrorRenderer.material;

        CreateRenderTexture();
    }
Par contre le rendu déconne si les miroirs se reflètent mutuellement... et là c'est beaucoup plus compliqué à corriger.

Avatar de l’utilisateur
stigma
Messages : 1407
Inscription : 17 Nov 2012 18:29
Localisation : Perdu dans les mondes de Myst
Contact :

Re: Exclure un objet d'un miroir

Message par stigma » 03 Oct 2019 08:39

Merci pour tes recherches. Je vais essayer ça.

Edit:
Un grand merci Alesk, ça marche vraiment bien maintenant. :super:
Sans toi, je serais limité à un seul miroir.

Répondre

Revenir vers « Unity le logiciel »