[Résolu]Exclure un objet d'un miroir
Re: Exclure un objet d'un miroir
J'ai testé en mettant deux miroirs côté à côte, et ça fonctionne...
Peux-tu envoyer un screenshot de ce que tu as ?
Peux-tu envoyer un screenshot de ce que tu as ?
- stigma
- Messages : 1407
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Exclure un objet d'un miroir
tu as testé la version gratuite ?
- stigma
- Messages : 1407
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Exclure un objet d'un miroir
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
Re: Exclure un objet d'un miroir
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à.
- stigma
- Messages : 1407
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Exclure un objet d'un miroir
Dans la démo, il n'y a pas 2 miroirs cote à cote.
Re: Exclure un objet d'un miroir
J'ai dupliqué le miroir existant et je l'ai déplacé sur le côté...
- stigma
- Messages : 1407
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Exclure un objet d'un miroir
Mais as tu créé un personnage ou une caméra qui se promène le long du mur ?
Re: Exclure un objet d'un miroir
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 :
Par contre le rendu déconne si les miroirs se reflètent mutuellement... et là c'est beaucoup plus compliqué à corriger.
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();
}
- stigma
- Messages : 1407
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Exclure un objet d'un miroir
Merci pour tes recherches. Je vais essayer ça.
Edit:
Un grand merci Alesk, ça marche vraiment bien maintenant.
Sans toi, je serais limité à un seul miroir.
Edit:
Un grand merci Alesk, ça marche vraiment bien maintenant.
Sans toi, je serais limité à un seul miroir.