Second Life, ou la schizophrénie virtuelle.

par Rémy Maetz

Derrière ce titre un peu étrange se cache une dure réalitée.

Vous avez surement tous déjà entendu le nom de “Second Life”, mais qu’en savez vous vraiment ?

Est-ce une nouvelle mode, un moyen médical révolutionnaire pour rallonger notre durée de vie, une nouvelle forme de schizophrénie, une secte religieuse vouant un culte a un dieu électronique et ayant pour but avoué de faire gouverner le monde par des machine et brancher tous les humains dans une réalité virtuelle pour pomper l’énergie bio-électrique de leurs corps ?

Non, en fait Second Life n’est rien de tout ça, et je me vais vous l’expliquer tout de suite …

Second Life est un univers virtuel, ouvert à tous, et partiellement à accès gratuit, il porte bien son nom d’ailleurs, car on peut vraiment y vivre une seconde vie, discuter avec des gens, jouer, travailler, commercer, aller à des concerts, faire des manifestations, etc…

C’est d’ailleurs le seul endroit où vous pouvez voir Sangoku enseigner la technique du déplacement instantané à Super Mario (véridique, je l’ai vu!).

Second Life a une économie, comme dans le monde réel, avec sa propre monnaie, le Linden (L$).Pour info. 10 Lindens valent un peu moins de 0.05€. Les gens peuvent donc commercer dans cette univers tout comme dans la vie réelle. “Mais commercer quoi?” allez vous me dire, et je répondrais : “Tout, absolument tout.”

Hé oui, Second Life a cet avantage que tout le monde peut crée du contenu : du mobilier, des bâtiments, des accessoires pour les personnage, des textures (peau, habits, autres…), des véhicules, des animations, etc…

Et quand on à fait un objet, on en fait quoi? On le vend pardi, comment dans la réalité !

C’est là que j’interviens, un partie de mon travail à Creative Patterns était de tester le système de création de contenu de Second Life, afin de répondre à un appel d’offre lancé par la Chambre du Commerce et de l’Industrie de Strasbourg.

Après une petite réflexion, nous avons convenu de crée un carrousel semblable à celui qui était situé à la place Gutemberg de Strasbourg (la CCI se trouvant justement la bas).

Carrousel originalCarrousel Ingame

 

Stéphane m’a laissé un petit budget ce qui m’a permit d’importer des textures et des poses de personnage (indispensable pour que l’avatar se tienne correctement sur les chevaux). Je me suis aussi imposé une limite de primitives, affin d’avoir un visuel correct tout en évitant un temps de chargement trop long.

Oui, j’ai bien dit primitives, dans Second life on ne parle pas de faces, de polygones, de vertex, ou de tous ces mots barbares dont se servent les graphistes. Tous les objets dans Second Life sont en fait des assemblements de primitives.

Ce système à de nombreux avantages, mais au moins autant d’inconvénients :

Avantage : il permet à n’importe quel utilisateur lambda de crée rapidement des objets et des les partager. Inconvénient : ça permet à n’importe quel utilisateur de créer des objets. Je sais que ce que je dis à l’air bête comme ça, mais baladez vous dans une zone de construction libre, et vous découvrirez vite quel bordel c’est … Des objets sans queue ni tête trainent partout, certains s’amusent en plus à rajouter du chaos dans tout ça.

Avantage : il n’y à pas de limite de primitives affichables. Inconvénient : d’un point de vue technique, tous ces objets consoment énormément de ressources, autant au niveau de la connection que des ressources machine. Chaque objet à des coordonnées, des paramètres, et une texture propre, et tout ceci est stoqué sur le serveur, pour l’afficher le client doit donc télécharger tout ça, et dès qu’on à beaucoup d’objet, ca peut vite dégénérer. Il m’est arrivé assez fréquemment de me retrouver bloqué contre un mur invisible, qui en fait était un objet hypothétiquement devant moi, mais pas encore chargé et près être affiché. De même, certains objet pour améliorer l’aspect visuel de son avatar on un impact négatif sur le framerate et la charge de la connection, j’ai vu énormément de gens avec des primitives coniques faisant office de cheveux. Oui, il en faut beaucoup pour une tête…

Avantage : un univers totalement personalisable, où les utilisateurs (particuliers et entreprises) peuvent s’y implanter. Inconvénient : On trouve vraiment n’importe quoi, et quelquefois ça me fais peur, comme il n’y a pas vraiment de législation on ne sais jamais sur quoi on peut tomber en faisant une recherche dans ce monde, peut être une succursale de Ku-Klux-Klan pourquoi pas ? Une boutique de vente d’accessoires virtuels sado-mazo ?… Cherchez un peu les trucs les plus tordus possible, et dites vous qu’il y a de grandes chances que ça existe dans second life.

Bon, après m’être fait la main sur les outils de création de contenu intégrés dans Second Life, j’ai voulu éssayer les solution externes. Par exemple, les chevaux de mon carrousel ne sont pas des primitives standards, ce sont des “sculpties”, des primitives cylindrique déformées selon une texture.

Le principe est relativement simple : On place les points de la primitive cylindrique (32 points en hauteur, et 32 points sur le périmètre) dans l’espace (coordonées X,Y,Z) en fonction des valeurs des couleur (Rouge, Vert, Bleu) de chaque pixel de la texture. Ainsi, le vertex 1 correspond au pixel supérieur gauche, le 2 au pixel juste à sa droite, et ainsi de suite.

J’ai réussit à faire fonctionner une technique pour créer des primitives sculptées à partir d’XSI, ce qui m’a permis de créer mes chevaux, avec 5 primitives par cheval, le buste avec la tête, et chaque patte séparée.

J’ai essayé de faire s’assoir mon avatar sur le cheval, et la, CRACK, c’était pas très joli à voir, il utilisais l’animation de base. Pour s’assoir correctement, j’ai crée une animation de pose avec QAvimator, et la, ça fais mal aussi.

Second Life utilise le format BVH pour les animations, un format utilisé en motion capture. Or pas de chance pour moi, XSI importe le BVH mais ne l’exporte pas. Donc je cherche un peu sur le net pour trouver un logiciel qui me permettrais d’en faire (au passage, merci Vincent), et j’essaye QAvimator, une version plus pratique d’Avimator.

Enfin, pratique c’est vite dit, c’est vraiment pas évident d’animer la dedans, la cinématique inverse (quand on bouge la main le coude se plie tout seul) n’existe pas, je doit placer chaque articulation à la main. Bon, c’est pour faire une pose fixe, donc ça va, mais pour faire des animation correctes, ça sera pas aussi évident.

Ok c’est prêt, maintenant il faut expliquer à mon cheval de déclencher cette animation plutôt que l’animation de base pour s’assoir, et pour ça, il va falloir un peu de code.

Le langage utilisé dans Second Life s’appelle le LSL, pour Linden Script Language. Il s’apparente à du C (parait-il, j’y connais pas grand chose moi).

Pour les commandes et tout ça, je ne vais pas me lancer dans des explications farfelues, je vais essayer de synthétiser. Faire fonctionner le cheval, c’était assez simple, mais animer, le carrousel, houla, quelle galère.

Il faut savoir que le système des hiérarchies de Second Life est simpliste, on a un objet parent, et un maximum de 255 enfants. POINT. Pas de notion de sous groupes ou autres joyeusetés de ce genre. Or mon carrousel comporte un peu plus de 580 primitives.

Pour animer, j’ai crée globalement 3 ensembles : le masse du carrousel, les attractions fixes (certains chevaux et le carrosse) et les attractions mobiles (les autres chevaux et les tasses).

Les deux premiers ont juste à tourner sur eux même, rien de compliqué en soit… En apparence. Second Life est fait de tel sorte que l’essentiel du script est effectué coté serveur, donc si un objet se déplace, c’est le serveur qui le déplace et envoi les nouvelles coordonnées à chaque client. Logique, puisque tout le monde doit voir la même chose. Il y a juste un hic, entre 2 coordonnées différentes, le client ne vas pas extrapoler le mouvement, et donc l’animation apparait saccadée. De plus, le temps d’exécution d’un évènement en d’environ 0.2 secondes minimum. C’est comme si on jouait à 5fps, c’est vraiment pas agréable à l’oeuil.

Heureusement pour moi, le carrousel ne fais que tourner, et il existe une commande qui permet de faire une rotation coté client, donc totalement fluide.

Pour animer correctement le carrousel, j’ai donc utilisté, du coté serveur, un timer avec une commande qui redifinit l’orientation du carrousel à intervale régulier, et coté client la commande de rotation, ce qui au final, permet d’avoir une rotation synchronisée sur tous les client, et fluide.

Pour les chevaux et les tasses, j’ai du récupérer les coordonnées du centre du carrousel, et son angle de rotation, toutes les 0.2 secondes (intervalle minimum des animations) et grâce à quelques formules de trigo. le script les replace automatiquement.

Au final, l’animation semble presque fluide (je doute que ce soit possible de faire mieu), et le carrousel tourne !

J’ai également rajouté quelque bouts de code plus ou moins utile, comme les carreaux (sur le pilier central) qui changent de couleur toutes les 5 minutes, sur le haut du carrousel, une petite machine à bulle et les lampes qui s’allument et s’éteignent toutes seules selon l’heure du jour.

Voila, pour cet article qui est un petit peu plus long que je le prévoyais.

Pour conclure je dirais juste que Second Life a un gros potentiel au niveau de la création, si les amateurs arrêtais de faire n’importe quoi (et de gaspiller les ressources) et si les professionnels voulaient bien s’habituer à sa logique diamétralement opposé aux logiciels 3D usuels.

9 réponses à “Second Life, ou la schizophrénie virtuelle.”

  1. Strass dit:

    Beh ? On n’a pas droit à une petite vidéo ?

  2. Alexandre Franke dit:

    Beh ? On n’a pas droit à une SLURL ?

  3. Julien Galey dit:

    ou plutot un video en FRAPS…

  4. Rémy dit:

    J’ai déjà atteins la capacité maximale du serveur quand j’ai envoyé les 2 images (même si depuis on a beaucoup plus de place), on va économiser ce qui reste.

  5. Alexandre Franke dit:

    Une SLURL ne prendrait pas de place ici :)

  6. Rémy dit:

    Le carrousel n’est pas visible par le public actuellement. :)

  7. Reibel Nicolas dit:

    C’est sympa tout ça, dommage que j’ai pas vu la version animée :(
    Second life étant ce qu’il est, tu t’es bien debrouillé, j’espere que la CCI sera interessé ;)

  8. Julien Galey dit:

    Je suis passé place Gutengerg hier (le 15 septembre) et on peut voir le carroussel en action… et j’ai bien peur que le haut de ton manege soit faux. en effet, au sommet, il y a un cheval et le chapeau n’est pas plat mais en cône…

  9. Jean-Michel Stenger (Au temps de l'Automne) dit:

    Techniquement ce qu’a fait Rémy est suffisant. De la à ce qu’il soit légèrement différent de l’original n’est pas un mal. Ce n’est qu’une interprétation sinon on aurait utilisé un Scanner 3D.

Laissez un commentaire