PDA

Voir la version complète : Ecrans videos WWW pour Unity...



yannminh
19/12/2011, 04h59
Bonjour,

Voici un ensemble de scripts qui ont été réalisés pour les bornes vidéo du musée de la SCAM
http://www.scam3d.fr

et qui peuvent être utiles à ceux qui voudraient installer des écrans vidéo dans leurs projets.

Le package de l'écran vidéo simple peut-être téléchargé ici
http://www.noomuseum.net/noomuseum/Simple-www-VideoScreen.unitypackage.zip


Scripts créés, adaptés, améliorés par Eric Wenger (le créateur de Bryce) http://www.metasynth.com/ERICWENGER/ et Edwige Lelièvre http://www.armaghia.fr/ pour le Noomuseum scam3d http://www.scam3d.com/ de Yann Minh http://www.yannminh.org en avril 2010 et sont diffusés avec leur accord. (merci de conserver leurs références dans les codes :-)

Ces scripts permettent de créer un lecteur video avec boutons Play, Pause, Stop, pour diffuser sur un écran une video en format .ogv hébergée sur le web.
http://noozone.free.fr/noocrypte/viewtopic.php?f=6&t=923


http://noozone.free.fr/noocrypte/viewtopic.php?f=16&t=925
http://www.noomuseum.net/noomuseum/img/scam3D-Snapshot017.JPG


Mettre ce script nommé videocontroller dans un object qui fera office d'écran vidéo.

http://www.noomuseum.net/noomuseum/img/scam3D-Snapshot020.JPG


// VIDEOCONTROLLER Script développé en mai 2011 à partir des scripts UNITY, par Eric Wenger http://www.metasynth.com/ERICWENGER/ et Edwige Lelièvre http://www.armaghia.fr/
// pour le musée 3D de la SCAM de Yann Minh, http://www.scam3d.fr/ http://www.noomuseum.net/
// ce script permet, associé à 3 autres scripts pour les boutons play, pause, stop, de pouvoir déclencher la lecture de media vidéo au format OGV stockés sur un serveur web distant.
// mettre ce script "videocontroller" dans le game object qui sert d'écran
// mettre les autres scripts : "videobutton_pause", "videobutton_play", "videobutton_stop", dans les game objects faisant office de boutons.

//VIDEOCONTROLLER Script written in May 2011 from the unity scripts, by Eric Wenger http://www.metasynth.com/ERICWENGER/ and Edwige Lelièvre for the SCAM'S 3D museum of Yann Minh. (http://www.scam3d.fr/ http://www.noomuseum.net/)
// this script, with 3 others scripts for the buttons play, pause, stop, allow to play OGV video from a distant server on the web.
// Put the script "videocontroller" in the screen game object
// put the others scripts : "videobutton_pause", "videobutton_play", "videobutton_stop" in the buttons's game objects.



var url = "http://www.yannminh.org/ShortFilms/NooGenesis-512.ogg"; //lien vers le film (format ogg, ou ogv)
//public var object:GameObject; // Ecran sur lequel la video est affichee
public var isplaying=0; //1 when loading 2 when playing 3 when paused
private var waitimage : Texture;
var www : WWW;
var m : MovieTexture;
var asize : Vector3;

function Awake()
{ waitimage=renderer.material.GetTexture("_MainTex");
this.enabled=false;
}

function reveilleVideo()//fonction appellee par videobutton_play.js
{
this.enabled=true;
asize=transform.localScale;
}
//------------//

function startmovie () {

renderer.material.color =Color.white;
renderer.material.mainTexture= m;
//resize object
renderer.material.SetVector ("_Datas", Vector4(m.width,m.height,0,0));
var fs=renderer.material.GetVector("_Datas");
transform.localScale=Vector3(asize.x,asize.y*(fs.y/fs.x),asize.z);

audio.clip = m.audioClip;
m.Play();
audio.Play();
isplaying=2; //playing
}

//------------//

function stopmovie () {
print("Stop recieved");
if(m!="") m.Stop();
audio.Stop();
isplaying=0;
transform.localScale=asize;//restore size
renderer.material.color =Color.black;
renderer.material.mainTexture=waitimage;

}

//------------//
function loadmovie() {

if(isplaying>0){ stopmovie ();}

isplaying=1; //loading
renderer.material.mainTexture=waitimage;
//renderer.material.SetVector ("_Datas", Vector4(1,1,Time.time*4.0,www.progress));

www = new WWW(url);
m= www.movie; //yield www;
//let update play when ready
}
//------------//

function Start () {
renderer.material.SetVector ("_Datas", Vector4(1,1,0,-1));

MovieController(1); //comme la fonction start n'est activee que lorsqu'on a appuye sur play, alors on joue automatiquement la video une fois que le chargement est fait
}
//------------//
function MovieController( action ) {
switch(action){
case 0:
if (isplaying>=2) stopmovie ();
break;
case 1:
if(isplaying==3){//paused
m.Play();
audio.Play();
isplaying=2; //playing
}else if(isplaying==0){
loadmovie();//start loading update will start play when ready
}
break;
case 2: if(isplaying==2){ m.Pause(); audio.Pause(); isplaying=3; } break;
}
}

//------------//

function Update () {

if(isplaying==1){
if (m.isReadyToPlay) {
startmovie();
}else{
//renderer.material.color =Color.green;
//loading animation
renderer.material.color.r = Mathf.Sin(Time.time*12.0);
renderer.material.color.g =1;
renderer.material.color.b =1;
renderer.material.SetVector ("_Datas", Vector4(1,1,Time.time*4.0,www.progress));
}
}else{ //check if done
if((isplaying==2) && (m.isPlaying==false)){
stopmovie();
}
}
}

//------------//


function OnMouseDown () {

audio.clip = m.audioClip;
if(isplaying==2){
MovieController( 2 );//pause
}else if(isplaying==0){
MovieController( 1 );//start
}
}



@script RequireComponent (AudioSource)


Mettre ce script dans le bouton Play

// videobutton_play Script développé en mai 2011 à partir des scripts UNITY, par Eric Wenger http://www.metasynth.com/ERICWENGER/ et Edwige Lelièvre
// pour le musée 3D de la SCAM de Yann Minh, http://www.scam3d.fr/ http://www.noomuseum.net/

// mettre ce script "videobutton_play" dans le game object qui sert de bouton play: "ButtonPlay"

//videobutton_play Script written in May 2011 from the unity scripts, by Eric Wenger http://www.metasynth.com/ERICWENGER/ and Edwige Lelièvre for the SCAM'S 3D museum of Yann Minh. (http://www.scam3d.fr/ http://www.noomuseum.net/)
// Put this script "videobutton_play" in the play game object : "ButtonPlay"



private var script : videocontroller;
var Target : GameObject;
var videochargee : int;
var highlightColor = Color.red;
var rollover = 0;

function Start () {
script= Target.GetComponent("videocontroller");
videochargee = 0;
}

function OnMouseDown () {
Debug.Log("appuye sur play");

transform.localScale = transform.localScale * 0.9; // Scale up the text
if(videochargee==0)
{
Target.SendMessage("reveilleVideo");
videochargee=1;
}
else
{
script.MovieController(1); //play
}
}
function OnMouseUp () {
// Scale down the text to the original value
transform.localScale = transform.localScale / 0.9;
}

function Update (){
if(script.isplaying>0){
renderer.material.color =Color.green;
}else{
renderer.material.color =rollover ? highlightColor : Color.white;
}
}


function OnMouseEnter () {
rollover =1;
}

function OnMouseExit () {
rollover =0;
}



Mettre ce script dans le bouton Pause

// videobutton_pause Script développé en mai 2011 à partir des scripts UNITY, par Eric Wenger http://www.metasynth.com/ERICWENGER/ et Edwige Lelièvre
// pour le musée 3D de la SCAM de Yann Minh, http://www.scam3d.fr/ http://www.noomuseum.net/

// mettre ce script "videobutton_pause" dans le game object qui sert de bouton pause: "ButtonPause"

//videobutton_pause Script written in May 2011 from the unity scripts, by Eric Wenger http://www.metasynth.com/ERICWENGER/ and Edwige Lelièvre for the SCAM'S 3D museum of Yann Minh. (http://www.scam3d.fr/ http://www.noomuseum.net/)
// Put this script "videobutton_pause" in the pause game object : "ButtonPause"



private var script : videocontroller;
var Target : GameObject;
var highlightColor = Color.red;
var rollover = 0;

function Start () {
script= Target.GetComponent("videocontroller");
}

function OnMouseDown () {
renderer.material.color =Color.green;
transform.localScale = transform.localScale * 0.9;
script.MovieController((script.isplaying==2) ? 2 : 1 ); //pause
}
function OnMouseUp () {
renderer.material.color =Color.white;
transform.localScale = transform.localScale / 0.9;
}

function Update (){
renderer.material.color =(script.isplaying==3) ? Color.green : rollover ? highlightColor : Color.white;
}


function OnMouseEnter () {
rollover =1;
}

function OnMouseExit () {
rollover =0;
}


Mettre ce script dans le bouton Stop

// videobutton_pause Script développé en mai 2011 à partir des scripts UNITY, par Eric Wenger http://www.metasynth.com/ERICWENGER/ et Edwige Lelièvre
// pour le musée 3D de la SCAM de Yann Minh, http://www.scam3d.fr/ http://www.noomuseum.net/

// mettre ce script "videobutton_pause" dans le game object qui sert de bouton pause: "ButtonPause"

//videobutton_pause Script written in May 2011 from the unity scripts, by Eric Wenger http://www.metasynth.com/ERICWENGER/ and Edwige Lelièvre for the SCAM'S 3D museum of Yann Minh. (http://www.scam3d.fr/ http://www.noomuseum.net/)
// Put this script "videobutton_pause" in the pause game object : "ButtonPause"



private var script : videocontroller;
var Target : GameObject;
var highlightColor = Color.red;
var rollover = 0;

function Start () {
script= Target.GetComponent("videocontroller");
}

function OnMouseDown () {
renderer.material.color =Color.green;
transform.localScale = transform.localScale * 0.9;
script.MovieController((script.isplaying==2) ? 2 : 1 ); //pause
}
function OnMouseUp () {
renderer.material.color =Color.white;
transform.localScale = transform.localScale / 0.9;
}

function Update (){
renderer.material.color =(script.isplaying==3) ? Color.green : rollover ? highlightColor : Color.white;
}


function OnMouseEnter () {
rollover =1;
}

function OnMouseExit () {
rollover =0;
}


videobutton_play

a mettre dans l'objet qui sert de bouton play

private var script : videocontroller;
var Target : GameObject;

function Start () {
script= Target.GetComponent("videocontroller");
}

function OnMouseDown () {

script.MovieController(1); //play
}

function Update (){

if(script.isplaying){
renderer.material.color =Color.green;
}else{
renderer.material.color =Color.white;
}
}

Ogier
22/12/2011, 20h27
Super intéressant tout ça, et carrément cool de partager les scripts comme cela!
Je repasserai tout à l'heure regarder et lire tout ça dans le détail
En tout cas merci à toi Yann!

Ogier

diego1968
23/12/2011, 09h17
Ca marche avec la version Indie ou il faut la Pro ?

Et merci pour ce partage de connaissances !:icon_love:

yannminh
27/12/2011, 13h59
Je ne pense pas que ça fonctionne avec la version Indie... si je ne me trompe pas, il n'y a que la version pro qui gère les vidéos...