[Résolu] RenderTexture avec background de caméra transparent
[Résolu] RenderTexture avec background de caméra transparent
Salut à tous !
Je cherche à utiliser les render textures dans un projet, pour afficher les NPC dans une case lorsqu'on leur parle.
J'ai donc créé une render texture et je place automatiquement une caméra en face de leur tête, qui les regarde. Et j'affiche la render texture dans un élément de UI, en utilisant NGUI ou pas d'ailleurs ça ne change rien.
Le problème étant que le fond de la caméra est d'une couleur, et donc cette couleur ressort dans la render texture.
J'ai tout essayé, de placer la camera en depth only, de changer de shader pour la render texture, mais sans succès.
Existe-t-il un moyen de rendre le fond de la camera transparent pour la render texture?
Si j'y vais directement en utilisant le view rect ça marche (en depth only) mais je ne peux pas faire ça, pour des raison d'animation.
Je vous met en pièce jointe une image qui illustre le résultat actuel (avec notre cher Ethan): À noter que j'ai déjà été confronté à ce problème y'a 2 ans environ, mais je retrouve aucune trace sur le forum de ma question...
Merci !
Je cherche à utiliser les render textures dans un projet, pour afficher les NPC dans une case lorsqu'on leur parle.
J'ai donc créé une render texture et je place automatiquement une caméra en face de leur tête, qui les regarde. Et j'affiche la render texture dans un élément de UI, en utilisant NGUI ou pas d'ailleurs ça ne change rien.
Le problème étant que le fond de la caméra est d'une couleur, et donc cette couleur ressort dans la render texture.
J'ai tout essayé, de placer la camera en depth only, de changer de shader pour la render texture, mais sans succès.
Existe-t-il un moyen de rendre le fond de la camera transparent pour la render texture?
Si j'y vais directement en utilisant le view rect ça marche (en depth only) mais je ne peux pas faire ça, pour des raison d'animation.
Je vous met en pièce jointe une image qui illustre le résultat actuel (avec notre cher Ethan): À noter que j'ai déjà été confronté à ce problème y'a 2 ans environ, mais je retrouve aucune trace sur le forum de ma question...
Merci !
Dernière édition par cayou66 le 06 Avr 2014 18:19, édité 1 fois.
Re: RenderTexture avec background de caméra transparent
La texture que tu utilises est bien complétement transparente?
Dés fois j'bug, dés fois j'bug pas.
Re: RenderTexture avec background de caméra transparent
Cayou si je me trompe pas c'est ça que tu veux faire ?
http://forum.unity3d.com/threads/98827- ... xplanation
ça devrais fonctionner normalement si tu n'as pas de probleme de Depth entre tes caméras, mais je n'ai jamais trop testé ce truc...
http://forum.unity3d.com/threads/98827- ... xplanation
ça devrais fonctionner normalement si tu n'as pas de probleme de Depth entre tes caméras, mais je n'ai jamais trop testé ce truc...
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: RenderTexture avec background de caméra transparent
Tu parle du shader? Car la render texture elle même tu choisis pas grand chose. Et j'ai essayé différents shader sur mon Quad, en vain.Franck a écrit :La texture que tu utilises est bien complétement transparente?
J'ai du mal à savoir si c'est ça, le gars chercher à afficher deux caméras en même temps, en appliquant un filtre toshop, comme deux calques en fait.F@B a écrit :Cayou si je me trompe pas c'est ça que tu veux faire ?
http://forum.unity3d.com/threads/98827- ... xplanation
ça devrais fonctionner normalement si tu n'as pas de probleme de Depth entre tes caméras, mais je n'ai jamais trop testé ce truc...
Moi c'est plutôt utiliser la render texture normalement, mais effacer le background de la caméra, pour ne laisser que le NPC dans la render texture.
Re: RenderTexture avec background de caméra transparent
une idée comme ça, tu ne dois pas avoir d'alpha sur ton RenderTexture, le fond doit etre noir et c'est tout...
si t'ajoute un fond vert et que tu clip dans ton shader pour créer l'alpha qui te manque?
avec un truc dans le genre :
http://pastebin.com/rxJak3jB
enfin c'est bizarre ton REnderTexture devrait avoir l'alpha en principe, t'as essayé le transparent cutout shader?
si t'ajoute un fond vert et que tu clip dans ton shader pour créer l'alpha qui te manque?
avec un truc dans le genre :
http://pastebin.com/rxJak3jB
enfin c'est bizarre ton REnderTexture devrait avoir l'alpha en principe, t'as essayé le transparent cutout shader?
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: RenderTexture avec background de caméra transparent
Intéressante ton idée Fab ! On fait comme un fond vert en gros, il faut juste admettre qu'aucun personnage n'aura la couleur choisie, mais j'aime bien cette idée.
Faut juste voir ce que ça donne au niveau crénelage, je vais faire des tests, parce que ton shader c'est 0 ou 1 en alpha, ça va forcément crénelé.
Voilà le résultat que j'arrive à avoir avec un cutout: J'avais aussi trouvé un shader de render texture, qui découpe bien le noir mais qui rend aussi la texture un peu additive: Voici le code du shader (je suis une bille en shader...):
Merci à vous !
Faut juste voir ce que ça donne au niveau crénelage, je vais faire des tests, parce que ton shader c'est 0 ou 1 en alpha, ça va forcément crénelé.
Voilà le résultat que j'arrive à avoir avec un cutout: J'avais aussi trouvé un shader de render texture, qui découpe bien le noir mais qui rend aussi la texture un peu additive: Voici le code du shader (je suis une bille en shader...):
Code : Tout sélectionner
Shader "Transparent/RenderTexture" {
Properties {
_MainTex ("Black (RGB)", 2D) = "black" {}
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
Blend SrcAlpha SrcAlpha
ZWrite off
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
sampler2D _MainTex;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord = v.texcoord;
return o;
}
half4 frag (v2f i) : COLOR
{
float4 black = tex2D(_MainTex, i.texcoord);
return float4(black.r, black.g, black.b, 1);
}
ENDCG
}
}
}
Re: RenderTexture avec background de caméra transparent
Non pas le shader.cayou66 a écrit : Tu parle du shader? Car la render texture elle même tu choisis pas grand chose.
Je n'utilise pas de render texture ( pas d'unity pro), je pensais que tu assignais une texture a ton material de façon classique, mais cela n'a pas l'air d'être le cas.
Dés fois j'bug, dés fois j'bug pas.
Re: RenderTexture avec background de caméra transparent
un principe un personnage avec un vert ou magenta a 255 c'est plutôt rare !
par contre je pige pas trop ton shader la, il fait rien a part supprimer l'alpha? ce qui n'est pas vraiment ton but.
d’ailleurs tu pourrais écrire :
ton Maintex devrait avoir l'alpha aussi, bien que je ne soit pas sur que ça joue.
pourquoi fait un tu un blend SrcAlpha SrcAlpha ?
par contre je pige pas trop ton shader la, il fait rien a part supprimer l'alpha? ce qui n'est pas vraiment ton but.
d’ailleurs tu pourrais écrire :
Code : Tout sélectionner
return float4(black.rgb, 1);
Code : Tout sélectionner
_MainTex ("Base (RGB) Trans (A)", 2D) = "black" {}
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !
Re: RenderTexture avec background de caméra transparent
En fait tu créé une render texture, comme si tu avais une texture normale.
Ensuite dans la caméra tu lui assignes la render texture.
Et enfin tu te fais un plane, un quad, un cube, ce que tu veux, et tu lui assigne la texture dans le material, comme n'importe quelle texture en fait.
Et là tu peux choisir le shader et ses propriétés.
Sur les paramètres de la render texture, y'a pas grand choix à faire, tu peux par exemple choisir la résolution de cette dernière et l'antialiasing.
Ensuite dans la caméra tu lui assignes la render texture.
Et enfin tu te fais un plane, un quad, un cube, ce que tu veux, et tu lui assigne la texture dans le material, comme n'importe quelle texture en fait.
Et là tu peux choisir le shader et ses propriétés.
Sur les paramètres de la render texture, y'a pas grand choix à faire, tu peux par exemple choisir la résolution de cette dernière et l'antialiasing.
Re: RenderTexture avec background de caméra transparent
Si tu as vu mon message tu as du lire "je suis très mauvais en shader"F@B a écrit :un principe un personnage avec un vert ou magenta a 255 c'est plutôt rare !
par contre je pige pas trop ton shader la, il fait rien a part supprimer l'alpha? ce qui n'est pas vraiment ton but.
d’ailleurs tu pourrais écrire :ton Maintex devrait avoir l'alpha aussi, bien que je ne soit pas sur que ça joue.Code : Tout sélectionner
return float4(black.rgb, 1);
pourquoi fait un tu un blend SrcAlpha SrcAlpha ?Code : Tout sélectionner
_MainTex ("Base (RGB) Trans (A)", 2D) = "black" {}
J'ai trouvé ça sur le forum officiel, rien de plus. Je comprend pas grand chose de ce qu'il y a écrit...
J'vais essayer de suivre tes conseils