noocrypte.net http://noozone.free.fr/noocrypte/ |
|
Unity 3D - Chromakey Video Alpha http://noozone.free.fr/noocrypte/viewtopic.php?f=47&t=7113 |
Page 1 sur 1 |
Auteur: | yann.minh [ Ven Déc 16, 2011 7:33 am ] |
Sujet du message: | Unity 3D - Chromakey Video Alpha |
Double image with Alpha for Chroma Key in Unity 3D, by Yann Minh (Yannminh.org) Make a movie with both, the foreground and the alpha key image on the same picture. Import this movie in Unity3D create a shader with the script written by LouLou from the french forum http://www.unity3d-france.com http://www.unity3d-france.com/unity/phpBB3/viewtopic.php?f=8&t=901 Apply this shader to a material, and adjust the Tile and offset of the texture of this material to hide the white alpha image. FRANÇAIS Unity ne reconnait pas les movies ayant un alpha, et la suppression par script du vert n'a pas un rendu terrible, il y a des pixels et des liserés vert autour de la découpe. pour contourner le problème, il suffit d'intégrer l'alpha en fabriquant un fichier vidéo comportant l'image de foreground, et sa découpe dans la même image. comme ceci Ensuite, il faut fabriquer un shader de type alpha, qu'on ajuste avec l'offset et tiling. Loulou sur le forum http://www.unity3d-france.com propose un script de shader qui fonctionne très bien Code: Shader "Custom/VideoAlpha" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _AlphaOffsetX ("alpha offset x", float) = 0.5 _AlphaOffsetY ("alpha offset y", float) = 0 _Cutoff ("Cutoff", Range (0,1)) = .5 } SubShader { AlphaTest Less [_Cutoff] CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; float _AlphaOffsetX; float _AlphaOffsetY; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); IN.uv_MainTex.x += _AlphaOffsetX; IN.uv_MainTex.y += _AlphaOffsetY; half4 d = tex2D (_MainTex, IN.uv_MainTex); o.Albedo = c.rgb; o.Alpha = (d.r*-1)+1; } ENDCG } FallBack "Diffuse" } ça marche nickel, c'est beaucoup plus beau que d'utiliser la suppression du vert, qui laisse un liseré... et avec une séquence de 600 pixels en hauteur la qualité est très supportable. Ci joint un lien vers deux séquences que je viens de faire, pour tester, pour ceux qui voudraient expérimenter le truc... http://www.noomuseum.net/mov/YannSteadyDoubleAlpha_674.mov (le fichier .ogv pour Unity http://www.noomuseum.net/mov/YannSteadyDoubleAlpha_674.ogv Modele Soizic Hess http://soizic-hess.com/ http://www.noomuseum.net/mov/SoizicDoubleAlpha-674.mov (le fichier .ogv pour Unity http://www.noomuseum.net/mov/SoizicRotatekey-2-800ogv.ogv 1) Comment rendre la texture lumineuse, de type Unlit... ? ???? 2) comment faire pour que ça marche avec une texture en .ogv téléchargée depuis le net... ? La j'ai la réponse, il suffit de mettre un script de lecture de vidéo dans l'objet qui sert d'écran, et de mettre une image fixe similaire, dans la fenetre du matériaux. Par exemple : Code: private var url = "http://www.noomuseum.net/mov/YannSteadyDoubleAlpha_674.ogv"; // Lien de la video public var object:GameObject; // Objet sur lequel doit être afficher la video function Start () { var www = new WWW(url); var movieTexture = www.movie; while (!movieTexture.isReadyToPlay) yield; object.renderer.material.mainTexture = movieTexture; audio.clip = movieTexture.audioClip; movieTexture.Play(); movieTexture.Loop = true; audio.Play(); } @script RequireComponent (AudioSource) Si vous préférez, plutôt que d'héberger le fichier vidéo .ogv, non pas sur le web, mais sur votre Mac ou Pc pour des versions stand alone, il faut enregistrer le fichier .ogv dans votre dossier "Users", et dans le script Unity, utiliser une adresse de ce type : file:///Users/YannSteadyDoubleAlpha_674.ogv l'url de type http étant remplacée par "file:/// Si vous voulez voir ce que ça donne, j'ai mis en ligne une version du noobunker de cyberesthésie http://www.cyberesthesie.com avec deux videos incrustées à l'intérieur en démo. (les vidéos sont des .ogv hébergés sur le web.) http://www.cyberesthesie.com/cyberesthesia-3d/Cyberesthesia.html C'est une version multiplayer, faire "Heberger" puis "entrez dans les Noobunkers" C'est un niveau un peu lourd de 132 mega, car c'est la version du NooBunker qui est utilisée pendant les performances de cyberesthesie, en particulier celle de la demeure du Chaos qui est ici http://noozone.free.fr/noocrypte/viewtopic.php?f=16&t=1011 ou celle de Souterrain porte VI qui est ici http://noozone.free.fr/noocrypte/viewtopic.php?f=16&t=1797 Dans cette version du Noobunker sous Unity, les collisions avec les sphères envoient des datas vers OSC pour déclencher des E-Stims, et Teledildo. Yann, NooIncrusté... |
Page 1 sur 1 | Heures au format UTC [ Heure d’été ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |