Vidéo sur fond vert
Vidéo sur fond vert
Bonjour,
Je souhaite intégrer une vidéo sur fond vert (avec un fond transparent).
Le but est de diffuser une vidéo d'un personnage détouré dans un monde 3D.
Quelqu'un a des pistes ... ?
Merci pour vos propositions.
Je souhaite intégrer une vidéo sur fond vert (avec un fond transparent).
Le but est de diffuser une vidéo d'un personnage détouré dans un monde 3D.
Quelqu'un a des pistes ... ?
Merci pour vos propositions.
kealkeal
Re: Vidéo sur fond vert
Salut,
Tu veux faire un "Chroma key"?
Ton personnage est filmé sur un fond vert (ou bleu), cette vidéo serait diffusée sur une texture placée devant la caméra, texture elle même placée devant un décor?
Bon résumé??
Si c'est la cas, un shader "Chroma key" ou un truc identique qui ferait disparaitre le fond vert.
JP
Edit : http://forum.unity3d.com/threads/48938- ... ght=chroma
Ou
http://forum.unity3d.com/threads/11512- ... s-an-Alpha
De façon générale un recherche avec "chroma key"
Pas mal ici : http://www.quasimondo.com/archives/000615.php
Tu veux faire un "Chroma key"?
Ton personnage est filmé sur un fond vert (ou bleu), cette vidéo serait diffusée sur une texture placée devant la caméra, texture elle même placée devant un décor?
Bon résumé??
Si c'est la cas, un shader "Chroma key" ou un truc identique qui ferait disparaitre le fond vert.
JP
Edit : http://forum.unity3d.com/threads/48938- ... ght=chroma
Ou
http://forum.unity3d.com/threads/11512- ... s-an-Alpha
De façon générale un recherche avec "chroma key"
Pas mal ici : http://www.quasimondo.com/archives/000615.php
Re: Vidéo sur fond vert
J'aimerai avoir la possibilité de faire apparaitre et disparaitre ma video avec un systeme de fade out et fade in.
Quelqu'un a dejà testé cela sur une VIDEO.
J'ai vu qu'il etait possible de la faire sur un "simple" shader, mais sur une vidéo ....
Quelqu'un a dejà testé cela sur une VIDEO.
J'ai vu qu'il etait possible de la faire sur un "simple" shader, mais sur une vidéo ....
kealkeal
Re: Vidéo sur fond vert
Bonjour,
J'utilise ce shader pour intégrer ma vidéo sur fonc vert :
J'aimerais avoir la possibilité d'adoucir le contour du détourge. C'est un peu grossier parfois.
Quelqu'un a une idée ?
Merci.
J'utilise ce shader pour intégrer ma vidéo sur fonc vert :
Code : Tout sélectionner
Shader "FX/GreenToAlpha" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Cutoff ("Cutoff", Range (0,1)) = .5
}
SubShader {
Pass {
Program "" {
// Fragment combos: 1
// opengl - ALU: 4 to 4, TEX: 1 to 1
// d3d9 - ALU: 3 to 3, TEX: 1 to 1
SubProgram "opengl " {
Keywords { }
SetTexture [_MainTex] {2D}
"!!ARBfp1.0
# 4 ALU, 1 TEX
PARAM c[1] = { { 0.5 } };
TEMP R0;
TEX R0.xyz, fragment.texcoord[0], texture[0], 2D;
ADD R0.w, R0.x, R0.z;
MAD R0.w, -R0, c[0].x, R0.y;
MOV result.color, R0;
END
# 4 instructions, 1 R-regs
"
}
SubProgram "d3d9 " {
Keywords { }
SetTexture [_MainTex] {2D}
"ps_2_0
; 3 ALU, 1 TEX
dcl_2d s0
def c0, 0.50000000, 0, 0, 0
dcl t0.xy
texld r0, t0, s0
add_pp r1.x, r0, r0.z
mad_pp r0.w, -r1.x, c0.x, r0.y
mov_pp oC0, r0
"
}
}
#LINE 30
AlphaTest Less [_Cutoff]
} // pass
} // subshader
Fallback "Transparent/Diffuse"
} // shader
Quelqu'un a une idée ?
Merci.
kealkeal
Re: Vidéo sur fond vert
Salut,
Si ta vidéo est en temps réel (webcam, ...) tu peux utiliser Max Jsp pour capturer les images et les envoyer directement dans Unity. L’intérêt c'est que tu peux facilement faire du keying avec Max ! J'avais eu le même problème que toi concernant la "précision" de la découpe, et la meilleure solution que j'ai trouvée à été de faire ce keying sur deux couleurs (deux tons de vert différent), avec deux valeurs de tolérances...
Si tu veux continuer sur l'idée les shaders peut être qu'il serait intéressant de pouvoir spécifier plusieurs couleurs au shader... Mais ça je sais pas faire ...
En espérant avoir aidé ...
Si ta vidéo est en temps réel (webcam, ...) tu peux utiliser Max Jsp pour capturer les images et les envoyer directement dans Unity. L’intérêt c'est que tu peux facilement faire du keying avec Max ! J'avais eu le même problème que toi concernant la "précision" de la découpe, et la meilleure solution que j'ai trouvée à été de faire ce keying sur deux couleurs (deux tons de vert différent), avec deux valeurs de tolérances...
Si tu veux continuer sur l'idée les shaders peut être qu'il serait intéressant de pouvoir spécifier plusieurs couleurs au shader... Mais ça je sais pas faire ...
En espérant avoir aidé ...
Tamaya - Dev freelance
Re: Vidéo sur fond vert
Hello,
Je vais relancer le post car je suis actuellement en plein dedans...applique une image avec des persos sur fond vert, j'utilise le script ci dessus pour retirer le fond vert...
j'ai juste adapté pour avoir un keying plus fin et le résultat est passable.
Aussi j'aimerais appliquer un léger blur sur mon keying cad avoir mon image de base - le vert du fond + un léger blur sur les bords...
J'ai beau chercher, je vois pas comment appliquer un blur a un shader. Si quelqu'un a une idée la dessus......
Je vais relancer le post car je suis actuellement en plein dedans...applique une image avec des persos sur fond vert, j'utilise le script ci dessus pour retirer le fond vert...
j'ai juste adapté pour avoir un keying plus fin et le résultat est passable.
Aussi j'aimerais appliquer un léger blur sur mon keying cad avoir mon image de base - le vert du fond + un léger blur sur les bords...
J'ai beau chercher, je vois pas comment appliquer un blur a un shader. Si quelqu'un a une idée la dessus......
Re: Vidéo sur fond vert
Salut,
Pour ma part j'ai fais le blur en amont et non pas dans le shader ... mais c'est surement faisable dans le shader. J'espere que des gens pourrons t'aider mieux que moi
Pour ma part j'ai fais le blur en amont et non pas dans le shader ... mais c'est surement faisable dans le shader. J'espere que des gens pourrons t'aider mieux que moi
Tamaya - Dev freelance
Re: Vidéo sur fond vert
Bonjour,
Le script précédent de KealKeal me fait une erreur de syntaxe à la ligne 18,
aussi j'utilise ce script qui fonctionne pas trop mal..;
Cependant, il génère un liseré vert autour du personnage qui n'est pas élégant.
du coup je viens d'avoir une idée pour générer une vidéo avec Alpha synchrone, qui est de fabriquer un fichier vidéo comportant l'image de foreground, et sa découpe dans la même image. comme ceci
Ensuite, il faudrait fabriquer un shader de type alpha, qui fonctionne avec deux textures. La texture pour l'image, et la texture pour la découpe qu'on ajustent avec l'offset et tiling.
Hélas, je ne sais pas programmer... quelqu'un aurait un peu de temps pour développer ce shader ?
Il permettrait de réaliser des incrustations de bonne qualité dans Unity.
Merci...
Yann, NooIncrustateur...
Le script précédent de KealKeal me fait une erreur de syntaxe à la ligne 18,
aussi j'utilise ce script qui fonctionne pas trop mal..;
Code : Tout sélectionner
Shader "Matte/RGB Color"
{
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Matte ("Matte Color", Color) = (1,0,1,1)
_Thresh ("Threshold", Range (0,1)) = 0.0
_Cutoff ("Cutoff", Range (0,1)) = .5
}
SubShader {
Pass {
AlphaTest Less [_Cutoff]
CGPROGRAM
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f {
float4 pos : POSITION;
float4 uv : TEXCOORD0;
};
sampler2D _MainTex;
uniform half4 _Matte;
uniform float _Thresh;
uniform float _Cutoff;
half4 frag (v2f i) : COLOR
{
//return _Matte;
half4 color = tex2D(_MainTex, i.uv.xy);
half3 keyMinus = half3( (_Matte.r - _Thresh), (_Matte.g - _Thresh), (_Matte.b - _Thresh) );
half3 keyPlus = half3( (_Matte.r + _Thresh), (_Matte.g + _Thresh), (_Matte.b + _Thresh) );
if ( ((color.r > keyMinus.r) && (color.r < keyPlus.r)) && ((color.g > keyMinus.g) && (color.g < keyPlus.g)) && ((color.b > keyMinus.b) && (color.b < keyPlus.b)) )
{
return _Cutoff;
}
return float4(color.rgb, max(0, _Cutoff-0.01));
}
ENDCG
} // pass
} // subshader
//Fallback "Transparent/Diffuse"
} // shader
du coup je viens d'avoir une idée pour générer une vidéo avec Alpha synchrone, qui est de fabriquer un fichier vidéo comportant l'image de foreground, et sa découpe dans la même image. comme ceci
Ensuite, il faudrait fabriquer un shader de type alpha, qui fonctionne avec deux textures. La texture pour l'image, et la texture pour la découpe qu'on ajustent avec l'offset et tiling.
Hélas, je ne sais pas programmer... quelqu'un aurait un peu de temps pour développer ce shader ?
Il permettrait de réaliser des incrustations de bonne qualité dans Unity.
Merci...
Yann, NooIncrustateur...
Dernière édition par yannminh le 16 Déc 2011 10:30, édité 1 fois.
Re: Vidéo sur fond vert
Ha le chroma key. une grande histoire d'amour.
De passer par deux videos une pour le RGB et une comme mask alpha n'est pas une si mauvaise idée. A ceci pres que, pour avoir été confronté au probleme, si la video est trop lourde, un decalage va se creer entre les deux vidéos et c'est pas beau a voir.
Au cas ou je viens quand meme de fouiller dans mes anciens fichiers, il me semble que celui la fonctionnne :
Edit : oups desolé, j'avais pas reussi a tous lire dans ton message.
De passer par deux videos une pour le RGB et une comme mask alpha n'est pas une si mauvaise idée. A ceci pres que, pour avoir été confronté au probleme, si la video est trop lourde, un decalage va se creer entre les deux vidéos et c'est pas beau a voir.
Au cas ou je viens quand meme de fouiller dans mes anciens fichiers, il me semble que celui la fonctionnne :
Code : Tout sélectionner
Shader "Video/VideoMask" {
Properties {
_MainTex ("Video (RGB)", 2D) = "white" {}
_MaskTex ("Video mask (RGB)", 2D) = "white" {}
}
SubShader {
pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _MaskTex;
struct v2f {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
};
float4 _MainTex_ST;
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
return o;
}
half4 frag (v2f i) : COLOR {
half4 mainTex = tex2D (_MainTex, i.uv);
half4 maskTex = tex2D (_MaskTex, i.uv);
half4 o;
o.rgb = mainTex.rgb;
o.a = maskTex.r;
return o;
}
ENDCG
}
}
}
Fais attention a la taille de tes images.avec Alpha synchrone, qui est de fabriquer un fichier vidéo comportant l'image de foreground, et sa découpe dans la même image. comme ceci
Dernière édition par Loulou le 14 Déc 2011 12:06, édité 1 fois.