Hello, Avatar!

Second Life et Programmation Créative

Aller au contenu | Aller au menu | Aller à la recherche

Keyword - Silverlight

Fil des billets - Fil des commentaires

Utilisez le Whiteboard sur votre OpenSim !

Nous avons vu dans un billet précédent qu'il est possible de dessiner sur une primitive à l'aide d'une applet écrit en Silverlight.

Chose promise, chose dûe : nous allons voir comment utiliser ce dernier sur votre OpenSim, sans toucher autre chose qu'un paramètre et une ligne dans un petit script en LSL.

Tout d'abord, il faut activer le XMLRPC sur votre simulateur afin que les scripts LSL puissent avoir des oreilles : pour ce faire, renseignez le paramètre remoteDataPort avec le port de votre choix.

Par exemple :

; Uncomment below to enable llRemoteData/remote channels
remoteDataPort = 80

Bien entendu, il faudra rendre visible ce port de l'extérieur en ajustant les paramètres de votre pare-feu.

Voila qui est fait. A présent, prenez le script ci dessous dans un éditeur. Changez le paramètre TargetSimURL en lui mettant l'adresse publique de votre sim, puis collez tout dans le contenu d'un prim.

// Mettre ci dessous l'adresse ou est hebergee la page. Ne changer que si vous l'hebergez vous-meme
string WhiteBoardURL="http://lslblog.free.fr/draw/";

// Mettre l'adresse IP, ou l'URL de votre sim, suivie du port utilise par RemoteData
string TargeSimURL = "http://maupiti.ath.cx";

// Exemples:
// http://maupiti.ath.cx (80 par défaut)
// http://127.0.0.1:8080

key remoteChannel;
string name = "";

default
{
    state_entry()
    {
        llSetText("Touchez le prim pour dessiner dessus !", <1,1,0>, 1);
        llOpenRemoteDataChannel();
    }
   
    on_rez()
    {
        llResetScript();
    }

    touch_start(integer c)
    {
        name = llDetectedName(0);
        llSetText("Hello " + name + ", allez à l'URL indiquee dans le Chat, puis dessinez !", <1,1,0>, 1);

        llInstantMessage(llDetectedKey(0),
            "Allez sur\n " + WhiteBoardURL + "?key=" +
            remoteChannel + "&tgt=" + TargeSimURL +
            " \navec votre navigateur externe pour dessiner sur ce prim ! ^^");
    }

    remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval)
    {
        if (type == REMOTE_DATA_CHANNEL)
        {
            remoteChannel = channel;
        }

        if (type == REMOTE_DATA_REQUEST)
        {
            llSetText(name + "\nTouchez le prim pour dessiner dessus !", <1,1,0>, 1);
            llRemoteDataReply(channel, NULL_KEY, "__OK__", 0);
            osSetDynamicTextureData("", "vector", sval, "512", 0);
        }
    }  
}

Voilà, en principe, ça marche !

A l'attention de ceux qui souhaitent héberger la chose eux-même, j'ai joint à ce billet un fichier zip qui contient :

  • Une petite partie Web : une page HTML, le fichier XAP pour Silverlight et un petit proxy écrit en PHP;
  • Le code source de l'application en Silverlight sous la forme d'un projet Visual Studio 2008.

Il reste encore quelques aménagements à apporter, comme par exemple pouvoir utiliser la forme executable du plugin (le XAP) sur n'importe quel site. Ce qui pour le moment n'est pas possible sans modifier une petite ligne dans l'application Silverlight.

Bon amusement !

Un Whiteboard pour OpenSim avec Silverlight

Connaissez-vous Silverlight ? C'est l'équivalent d'Adobe Flash, mais côté Microsoft.

Avec Silverlight, je peut développer en C#, tirant ainsi les bénéfices de mon expérience acquise en .NET sans investissement coûteux en terme d'apprentissage. Oui, d'accord, Silverlight est encore en version bêta, mais il est vraiment très stable et la version finale pleine de promesses est prévue pour la fin de cette année.

Silverlight est destiné à tourner sur tous les navigateurs, toutes les plateformes (Mac) ainsi que sous Linux, ou son équivalent OpenSource répond au doux nom de MoonLight.

Mais bon, le but de l'article n'est pas de faire de la publicité pour Silverlight, mais plutôt de vous montrer ce qu'on peut en faire avec OpenSim. Aussi, j'ai réalisé un tableau blanc pour dessiner sur un prim à main levée à partir du Web. Un genre de tableau blanc qui pourrait servir lors de conférence, par exemple.

Pour s'en servir, rien de plus facile, voyez plutôt :

Whiteboard0
Tout d'abord, on avise le prim, tout blanc, et on clique dessus. Ca nous donne un lien vers une page Web qu'il faut ouvrir à l'aide d'un navigateur externe.

whiteboard1 
Ceci fait, on dessine à l'aide de l'application en Silverlight, dans sa page Web... et on clique sur Envoyer.

Whiteboard2 
Et normalement, si tout se passe bien, la texture apparait sur les faces du prim.

Whiteboard3

Et il est possible d'avoir plusieurs whiteboards sur une même parcelle. Ce qui est aujourd'hui impossible sur la grille des Linden, du fait qu'une page Web ou une image externe est considée comme un média, et qu'on ne peut en mettre que un sur une parcelle...

Ceci est rendu possible grâce au XMLRPC récemment réparé, qui me permet de transmettre des instructions vectorielles à un script écrit en C#, tournant dans chaque primitives. On imagine alors les possibilités de l'exterieur, comme du build d'un batiment en tracant les contours, de sculpties crées et importées directement...

[Update 02/07/2008]
Le code source est disponible au téléchargement ici : http://lslblog.free.fr/index.php/post/2008/06/02/Utilisez-le-Whiteboard-sur-votre-OpenSim

Un viewer en préparation

Group Notice From: G2 Proto

SecondViewer is a open-source project with has as target to make a easy, simple Second Life viewer which uses Silverlight (for use in a website) or WindowsForm /WPF(as standalone program). With the use of LibSecondLife, you can then use the most basic in-world function. (Like IM, Group chat, inventory, etc..).
We will be using C# 2008 and .NET 3.5 Framework for development, all code will be stored on CodePlex.
Are you interested then IM Ruud Lathrop and we meet up soon to discuss project plans.

".NET Developpers" est un groupe sur la grille SL rassemblant des développeurs utilisant des technologies Microsoft. Il se trouve qu'une idée interressante de Viewer SL pour le Web, qui utilise Silverlight, est en germination. Une autre, utilisant WPF est également envisagée.

Pour l'histoire, Silverlight est la réponse de Microsoft face à une demande croissante en Application Internet Riches. Une partie de la demande est composée de développeurs aguerris aux outils et aux langages de programmation Microsoft, qui hésitent à recourir à Flash pour des raisons d'investissement lourds en terme d'outillage et de formation : pour cette population de développeurs, Silverlight est le bienvenu. Le seul problème, c'est qu'il ne fait pas de 3D : Il faut "tricher" comme on le fait avec Flash, en utilisant des bibliothèques du genre Away3D.

Quand à WPF, c'est un morceau du .NET Framework 3.5 de Microsoft, fraîchement débarqué (diffusé en bêta depuis quelques années déja), qui permet de développer des applications graphiquement extraordinaire de façon bien plus rapide qu'en utilisant les outils habituels. Y compris de la 3D.

Voilà, bon c'est encore à l'état d'une simple idée, mais c'est très enthousiasmant. Surtout pour des développeurs .NET comme moi ^^