30 janvier 2011

Petit tour de manège

Un petit tour de manège.
Si simple, et pourtant... Ce manège nous emmène au bout du chemin.
Le temps d'une vie en un tour de manège...
Un tour pour une vie, de son origine à sa destination.
Mais revenu au point de départ, est-ce vraiment le point de départ ?
Si l'on parcourt ce cercle, et que l'on revient à son origine, sommes nous toujours sur le cercle ? Ou est-ce une spirale qui nous élève, toujours plus haut. Un cercle a-t-il seulement un commencement ?

Celui qui reste un enfant ne perd pas sa capacité à s'émerveiller du vol du papillon.
Celui qui s'émerveille toute sa vie du vol du papillon est un grand philosophe.

Une vidéo, belle et profonde, une aquarelle vivante et mouvante, qui tourne et nous ramène à notre origine. Mais sommes nous encore le même ?



28 janvier 2011

Tilt shift picture : Thaillande

Une petite vidéo réalisée avec la méthode tilt shift picture.
Si vous ne vous souvenez plus de ce que c'est, un petit rappel ici
Cette méthode donne l'impression que ce que l'on filme est une maquette.

Aujourd'hui : la Thaillande


Toy Thailand from joerg on Vimeo.

27 janvier 2011

Cailloux - Feuille - Ciseaux

Le site smbc-comics.com nous livre une version amusante du jeu cailloux - feuille - ciseaux.
En ajoutant des nouvelles options comme machine temporelle, clone ou encore cannibale.

Le message original par ici...

Petit rappel :
  • caillou bat ciseaux
  • ciseaux bat feuille
  • feuille bat caillou
Et avec les nouvelles options :
  • Time machine : le geste actuel de votre adversaire est joué contre son geste précédent.
  • Cannibale (en ajout sur un des gestes de base) : le geste courant bat seulement un geste de la même nature qui n'a pas le geste cannibale en plus.
  • Clone : on doit faire le même geste des deux mains. Si on gagne on marque +2, si on perd, -2.



Ça me donne envie de faire un petit hud de jeu dans SL avec les nouvelles options.
Non ?

26 janvier 2011

Un peu d'eau ?

Le site Scoopertino.com nous livre encore une superbe pub sur le nouveau marché que va développer la marque à la pomme. Comme toujours, tout est faux, mais tellement drôle !

L'info originale par ici...


Il y a pas à dire, ce site me fait toujours bien rire...

25 janvier 2011

Court métrage

Une nouvelle petite vidéo, un court métrage expérimental, et comme toujours très belle, sinon je vous le mettrais pas.

Sans plus tarder : le film....



Core from selfburning on Vimeo.

21 janvier 2011

Fractal

Une petite vidéo très intéressante et très belle.
Non il ne s'agit pas de l'évolution d'un chou fleur, même si parfois les images y ressemblent. Juste une fractal qui se déploie. Un paysage fractal.

Info originale sur le journal Graphic



Surface detail from subBlue on Vimeo.

19 janvier 2011

LSL : cadre diaporama (1)

Je vais commencer un petit tuto de build / script...
Enfin surtout du script mais comme toujours, un script nécessite toujours une prim pour fonctionner.

Le but : créer un cadre photo et faire défiler les photos.... La version SL du cadre numérique.
Une fois le travail de base effectué, nous ferons évoluer le script : d'une version simple et efficace à une version plus complexe mais offrant d'autres possibilités


Plan de travail :

Réaliser le cadre (avec une petite bordure pour faire plus joli)
  • 1er script : on affiche les images contenues dans le cadre
  • 2e script : on ajoute un menu pour changer le timer du défilement des photos
  • 3e script : on ne met plus les photos dans le cadre mais une notecard avec les UUID des textures (histoire de faire joujou avec le dataserver)


En avant !

On commence par la partie build. Tout sera détaillé fortement pour permettre a tous de réussir le travail. Le script est perfectible mais se veut simple, pour une meilleure compréhension, et pour donner la possibilité de l'adapter comme on le souhaite.

On commence par rezzer un cube. Je lui donne pour dimension :
  • X = 1.5
  • Y = 1.5
  • Z = 0.1


On va ensuite faire un petit biseau sur le bord du cube pour donner une profondeur à notre cadre. Pour cela on définit les valeurs :
  • Biseautage X = 0.1
  • Biseautage Y = 0.1


On fait une petite rotation au tout pour que la partie du cube qui servira à l'affichage soit verticale.
  • Rotation X = 90.0




Sur l'onglet contenu, je définis un nouveau script que je renomme en : Diaporama (clic droit et renommer)
Je glisse enfin quelques images dans le cadre, pour qu'il y ait un peu à afficher.



A présent : le script....


On ouvre la fenêtre de script et on commence....
Je vais définir plusieurs variables qui seront utilisées dans le script :
  • delay : intervalle de temps entre chaque photo. De cette manière, si je souhaite la changer, pas besoin de passer mon temps a rechercher dans le code, je change juste cette valeur.
  • idx : l'index de lecture de l'image. Nous allons lire les images une à une. Les images seront indexées de 0 à N-1, si on a N images. idx correspond à l'index de l'image en cours d'affichage
  • nbre_image : le nombre total d'images dans le cadre.


Principe du script :

Au départ, on lit le nombre total d'image, on initialise idx à 0. on affiche l'image d'indice 0.
Puis on lance le timer.

Lorsque l'évènement timer se déclenche, on avance idx de un cran.
Au lieu de vérifier si idx n'est pas trop grand, on utilise l'opérateur modulo %.
On affiche l'image.


Fonctions utilisées :


Le script :


float delay = 30.0;
integer idx;
integer nbre_image;


default
{

state_entry()
{
idx = 0;
nbre_image = llGetInventoryNumber(INVENTORY_TEXTURE);
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE,idx), 0);
llSetTimerEvent(delay);
}

timer(){
idx++;
idx = idx % nbre_image ;
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE,idx), 0);
}

}


Et voilà, l'étape une est terminée. Le script est perfectible : par exemple, je ne fais pas de test pour vérifier si il y a des images ou non dans le cadre. Ça serait une bonne chose de rajouter cette étape, c'est plus propre niveau développement.
Notons aussi que si on ajoute des images dans le cadre, elles ne seront pas affichées car le script a été initialisé sur un nombre max d'images qui n'est plus bon. Donc à chauqe fois que des images sont ajoutées, il faut réinitialiser le script. Le prochain tuto viendra modifier cela avec l'ajout d'un menu.


16 janvier 2011

Pomme pom pom pom (2)

Allez, histoire d'en remettre une couche sur le dernier post.
Un dessin humoristique du Vidberg, qui dessine toute l'info avec des personnages en forme de patates.
Le blog : http://vidberg.blog.lemonde.fr/
Un dessin chaque jour, je vous conseille de vous abonner au flux RSS de son blog.

Et c'est partie pour les pommes (tm)




Le post original ici...

12 janvier 2011

Pom pom pom pomme

En parcourant la toile, je suis tombée sur ce site amusant : http://scoopertino.com/

Un site humoristique se payant la pomme de la pomme (tm).
Comme l'indique le sous-titre : news irréelles de la Pomme (tm).

Soyons clair, je ne suis pas un fan-girl, et je ne supporte pas les fans-boys...

Fan.... C'est qui / quoi ça ?

Ben tout ceux qui sont béats d'admiration pour tout ce que fait la pomme (tm) même si c'est pas terrible et qu'on peut trouver mieux ailleurs pour moins cher et plus performant, et qui ne veulent pas s'ouvrir à autre chose, s'accrochant du dentier à la pomme (tm), ignorant ce que fait le reste du monde.

Par exemple, si l'on compare le Pomme-Pad (tm) avec un le Galaxie-Tab (tm lui aussi), on remarquera que : il est aussi beau, aussi fluide, aussi user-friendly, mais surtout que le dernier il a un port usb lui au moins (usb : universal serial bobo)

Pour simplifier : fan-boy, qui ne jure que par la pomme (tm) et se ferme irrémédiablement au reste, simplement parce que la pomme ™, c'est bien.

J'avoue que le PommePhone (tm) est un truc sympa, que j'ai failli le prendre, mais que, comme mon opérateur me faisait pas de réduc car j'étais déjà cliente (ce qui implique que les vieux clients qui payent depuis des années sont de la crotte par rapport aux nouveaux clients qui arrivent), je me suis tournée vers autre chose de très bien aussi. Dommage !


Je préviens de suite que tout éventuel commentaire de fan-boy sera irrémédiablement éradiqué de ce post. Si vous ne prenez pas tout ceci avec humour, c'est sur vous en êtes un !! Passez alors votre chemin.


Pour en revenir à notre sujet, voici tiré du site en question les plus belles news de la pomme (tm), celles qui m'ont fait le plus rire.

La nouvelle boutique expresse




La pommeraie (jardin des pommes),
le nouveau jardin d'Eden ?




Le vapoware, le truc le plus hype au monde




Une boutique qui fait rêver




Ceci dit, comme l'épiphanie n'est pas loin, je préfère les galettes à la pomme que celles à la frangipane.

11 janvier 2011

Cusine jap

Un film d'animation sur un jeune padawan et son maitre... mais pas au katana.. pour changer un peu.
Cuisine jap.... ou la vraie histoire de l'invention de la cuisine japonaise...


Cuisine Jap from beckoury on Vimeo.

10 janvier 2011

Calendrier 2011

Je suis tombée sur un beau calendrier en forme de dodécaèdre... A la base un calendrier Ubuntu.... donc comme il était en creative commons, je me suis dépêchée de le prendre et de l'adapter au dojo.
Et donc voici pour 2011 : le calendrier en 3D Eternal Blades !!

Donc il suffit d'imprimer l'image ci-dessous, et de la découper, de la plier et de coller où il faut.
On plie sur les pointillés et on découpe sur les morceaux droits, sauf au centre. Mais on comprends vite là où il faut faire...

Alors à vos ciseaux et tubes de colle...
Et bonne année !!!




Voici ce que cela peut donner (autre modèle de calendrier : ici le ubuntu) :




J'ai pas eu le temps de faire le calendrier Eternal Blades, sinon j'en aurais mis la photo.

Les pages d'origine :



Le calendrier original "Calendario Ubuntu - Ubuntu Calendar" by byroncorrales est sous licence Creative Commons Attribution-Share Alike 3.0. Il en est de même pour la traduction française sur SpreadUbuntu, et bien évidemment du modèle Eternal Blades


Si jamais le modèle Eternal Blades n'avait pas une résolution assez forte et que l'impression était mauvaise, dites le moi et je referai l'image, je n'ai pas eu le temps de le faire, trop pressée que j'étais de vous le donner.

Bon collage

9 janvier 2011

LSL : Scripts et mémoire

English version

Pour reprendre un peu l'esprit du précédent post sur l'analyse des katanas C:SI en regard du nombre de script et de mémoire allouée, plusieurs petits point de réflexion.

Je peux avoir un objet avec un seul script qui consomme beaucoup de mémoire. Par exemple : je définis une liste et mon script ajoute des valeurs à cette liste... Les valeurs étant stockées dans le script, sa taille va augmenter.

Pour plus d'information sur la mémoire consommée : http://wiki.secondlife.com/wiki/LSL_Script_Memory

De la même manière un petit script peut être très gourmand en temps processeur.

On parle beaucoup en ce moment dans le petit monde du C:SI de détection du nombre de scripts et de mémoire allouée, mais n'oublions pas q'un script gourmand en mémoire peut consommer peut de temps processeur sim, et qu'un petit script peut être une grosse usine a gaz.

La notion de nombre de script, mémoire allouée, est juste une indication.

Essayer de définir des limites raisonnables peut parfois être une erreur.
Pour tout ceux qui veulent approfondir la chose, voici un petit script tout simple. A placer dans un objet. Quand on clique dessus, il donne le nom de l'avatar, le nombre de scripts dans les objets portés et la mémoire allouée pour tout cela.

Il s'appuie sur la fonction suivante : llGetObjectDetails
Pour obtenir les infos souhaitées, je lui passe en paramètres : OBJECT_RUNNING_SCRIPT_COUNT et OBJECT_SCRIPT_MEMORY

Voici le code :


default {

touch_start(integer total_number) {
list infos = llGetObjectDetails(llDetectedKey(0),[OBJECT_RUNNING_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);

//avatar name
string msg = llDetectedName(0);

// Scripts count
msg += " - " + llList2String(infos, 0) + " scripts - " ;

// memorry allocated
msg += (string)((integer)llList2String(infos, 1) / 1024) + " Ko";

// display all informations
llSetText(msg, <1.0,1.0,1.0>, 1.0);
}
}








English version (quick and not litteral translation)

To continue previous post on analysis of C: SI katanas compared to the number of script and memory allocated, several small reflections.

I can have an object with a single script that consumes lots of memory. For example: I define a list and my script adds values to this list ... The values are stored in the script, its size will increase.

For more information about memory consumption : http://wiki.secondlife.com/wiki/LSL_Script_Memory

Similarly, a small script can be very CPU-intensive.

In the small world of C: SI, there is much talk now about detecting how many script you wear and allocated memory.
But do not forget that a heavy memory script can be low lag, and a little script can use lot's of CPU time.

The concept of a number of scripts, allocated memory, is just an indication.

Try to set reasonable limits can sometimes be a mistake.

I give you a simple script. Place in an object. When clicked, it gives the name of avatar, number of scripts and the memory allocated .

It is based on the following function: llGetObjectDetails
To obtain the desired information, I use this parameters : OBJECT_RUNNING_SCRIPT_COUNT and OBJECT_SCRIPT_MEMORY

Here's the code:


default {

touch_start(integer total_number) {
list infos = llGetObjectDetails(llDetectedKey(0),[OBJECT_RUNNING_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);

//avatar name
string msg = llDetectedName(0);

// Scripts count
msg += " - " + llList2String(infos, 0) + " scripts - " ;

// memorry allocated
msg += (string)((integer)llList2String(infos, 1) / 1024) + " Ko";

// display all informations
llSetText(msg, <1.0,1.0,1.0>, 1.0);
}
}

Enjoy, use, modifiy, adapt it....

4 janvier 2011

Scripts et mémoire - Katanas C:SI

English version here

Je me suis amusée à réaliser un outil de mesure du nombre de scripts que portent sur lui un avatar et ce que cela consomme en espace mémoire.

Il existe en effet une fonction du LSL permettant d'obtenir ces données.
Si on donne à celle-ci en paramètre la clé UUID d'un avatar, elle nous retourne les valeurs suivantes (je cite le wiki de SecondLife) :
  • Running script : Gets the number of running scripts attached to the object or agent (renvoie le nombre de scripts actifs attachés à l'objet ou l'agent, dans notre cas, l'avatar)
  • Script memory : Gets the total amount of script memory allocated to the object or agent, in bytes (renvoie le montant total de mémoire alloué à l'objet ou l'agent)
Dans le cas d'un agent, ici, d'un avatar, cela prend en compte tous les objets attachés, que ce soit sur soi ou en hud.

Je me suis donc amusée à mesurer nos armes C:SI. Profitant de l'occasion pour mesurer le cout en ARC des katanas.


Protocole de mesure :
  • Les mesures sont faites en portant l'arme dans la main, le fourreau, et le hud CSI
  • Pour la mesure de l'ARC (Avatar Rendering Cost), l'arme est dégainée, comme en situation de combat.
Il y a une variation d'une amplitude maximale de +/- 100 entre l'ARC arme dans le foureau et l'ARC arme dégainée.

La mesure s'est faite en deux temps : sans le katana ni le hud, pour étalonnage, puis avec. De manière à déterminer le poids de chaque arme.


Tenue minimale mais belle pour pour le test


Le hud utilisé (fabrication personnelle) et un exemple de mesure :
à "vide" pour le test, on voit que mon hud contient 19 script
pour 1245 Ko de mémoire allouée


Il manque encore quelques valeurs que je complèterai au fur et à mesure.

Je me suis aussi amusée à calculer la moyenne mémoire par script, correspondant à ce que consomme en moyenne chaque script comme mémoire.


Katana ARC Scripts Mémoire
(Kio)
Mémoire/Script (Kio/script)
Arkatech



Red Sunset 1468 103 1687 16,38
Ring Katana 892 98 1605 16,38
Heart of Darkness



Dragon Katana



Naginata 1825 109 1786 16,39
Blood Drinkers 5851 155 2539 16,38





Musashi Blade



Dynasty Flame Katana 1799 89 1507 16,93
Ronin 4214 118 2031 17,21
Gotokuneko 3302 106 6456 60,91
Black Rose Katana 2366 99 1622 16,38
Oxide Ichi



Musashi Eternal



Sizuka naru Shi - Duals 6269 152 2490 16,38
Battle Angel 1417 134 6324 47,19
Demon's Wing 2312 103 3260 31,65
Fallen Rival 1720 115 5079 44,17
Wind Staff 569 82 2932 35,76
Endless Power



Fist of Legend 351 103 2916 28,31





Ashes



Ashes Katana



Jin Geom 1385 104 1703 16,38
Cursed Spirit 1316 126 2064 16,38
Ninjaken 1464 145 2408 16,61





Daikon Forge



Taketori 658 77 1278 16,6
Wave Katana 1319 84 1376 16,38
Kodachi 674 75 2408 32,11


Que conclure de cela ?

Plus l'arme est complexe, plus elle contient de scripts et consomme de mémoire. Certains katanas réputés identiques niveau scripts et animations, ne le sont finalement pas.
Certaines armes réputées lourdes le sont moins que prévues et réciproquement.
Plus l'arme est complexe et précise dans les mouvements, plus elle sera lourde. Cela on le savait déjà.
Certains chiffres peuvent paraitre énormes, surtout en mémoire.
Par contre la moyenne Mémoire / Script donne un nombre stable.... L'ancienne génération de katana est à moins de 20, les plus récents à plus de 20.

J'ai fait un petit test : sans katana, avec des cheveux contenant un script Resize, un collier et des boucles d'oreilles avec en plus un script de changements de couleur, des bottes, un AO, et un autre hud, je monte à plus de 450 scripts et près de 15 Mo de mémoire.

Tout est donc à relativiser, et les blood drinkers (vive les bloods \o/) ne font pas laguer à mort comme on le dit souvent ; les AO masquant les animations étant souvent bien pires.

Mais on comprend bien pourquoi le fait de sparer en ressemblant à un noob est une aide appréciable.
Cette étude ne me fera pas changer mes habitudes niveau spar !




English version (quick and not litteral translation)

I have scripted a little tools to measure how many scripts an avatar worn on it and memory allocated for that.

There is a LSL function that gives thoses datas. This function give you (from LSL wiki):
  • Running script : Gets the number of running scripts attached to the object or agent
  • Script memory : Gets the total amount of script memory allocated to the object or agent, in bytes
In case of Agent, avatar for us, it weighs all attached objects, either on you or on hud. I measured our C:SI weapons, taking opportunity to measure ARC (Avatar Rendering Cost)

Measurement protocol :
  • weapon in hand, drawn, sheath worn, C:SI hud too.
  • to ARC : weapon drawn, wheath worn

Measurement was done in two stages: without katana and hud, to calibrate, and after with. In order to determine the weight of each weapon.


Reduced outfit for test

Hud used (made by me) and sample measurement :
only hud worn, you can see that hud contains
19 scripts for 1245 Ko of memory allocated.



It still lacks some values that I will complete as soon as possible.

I also calculated the average memory per script, corresponding to that consumed on average each script as memory.


Katana ARC Scripts Mémoire
(Kio)
Mémoire/Script (Kio/script)
Arkatech



Red Sunset 1468 103 1687 16,38
Ring Katana 892 98 1605 16,38
Heart of Darkness



Dragon Katana



Naginata 1825 109 1786 16,39
Blood Drinkers 5851 155 2539 16,38





Musashi Blade



Dynasty Flame Katana 1799 89 1507 16,93
Ronin 4214 118 2031 17,21
Gotokuneko 3302 106 6456 60,91
Black Rose Katana 2366 99 1622 16,38
Oxide Ichi



Musashi Eternal



Sizuka naru Shi - Duals 6269 152 2490 16,38
Battle Angel 1417 134 6324 47,19
Demon's Wing 2312 103 3260 31,65
Fallen Rival 1720 115 5079 44,17
Wind Staff 569 82 2932 35,76
Endless Power



Fist of Legend 351 103 2916 28,31





Ashes



Ashes Katana



Jin Geom 1385 104 1703 16,38
Cursed Spirit 1316 126 2064 16,38
Ninjaken 1464 145 2408 16,61





Daikon Forge



Taketori 658 77 1278 16,6
Wave Katana 1319 84 1376 16,38
Kodachi 674 75 2408 32,11


What can we conclude from this ?


More weapon is complex, more it contains scripts and consumes memory. Some katanas that are considered identical in scripts and animations, do not ultimately.
Some weapons are deemed less serious than expected and vice versa.
More weapon is complex and has precise movements, more it will heavy. This we already knew.
Some values may seem huge, especially in memory.
We note that average memory / script provides a stable value .... The older generation of katana is less than 20, the latest in more than 20.

I did a little test : with no katana, with hairs including Resize scripts, a necklace and earrings including color change script, boots, AO, and another hud, I have more than 450 scripts and nearly 15 MB of memory.

Everything is in perspective, and blood drinkers (long live the bloods \ o /) do not as laggy as the saying goes, AO masking animations is often much worse.

But it's clear why spar like a noob is a useful aid.
This study will not make me change my sparing habits !

2 janvier 2011

Un outil onliner

Avant d'aller plus loin, je vous souhaite à tous une bonne et heureuse année nouvelle.
Plus paisible, calme et zen que la précédente.

Mes bonnes résolutions 2011 : et si je refaisais un ou deux (voire même trois) petits tutos de LSL ??

Donc commençons l'année par mettre en pratique les bonnes résolutions : un petit tuto pour la réalisation d'un onliner tout simple....

Un quoi ?? Un objet qui dit si quelqu'un est connecté ou non. On en voit souvent dans les boutiques qui nous disent si le propriétaire est là ou non.

Comme toujours le script sera simple avec juste cette fonctionnalité... A vous de l'améliorer en ajoutant plein d'autres choses....

Objectifs : un objet qui dit si une personne est connectée et passe au vert dans ce cas... rouge sinon, avec un message au-dessus si des fois on n'avait pas compris.

Fonctions qui seront utiles :

Marche a suivre :

  1. Créer une prim, dans mon cas une sphère
  2. Dans l'onglet inventaire : nouveau script
  3. Ouvrir et saisir le code suivant. Les explications en dessous...



Script :

vector ROUGE = <1.0,>;
vector VERT = <0.0,>;
float delay = 10.0;

key avatar = "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; //le UUID de la personne
string name "Deirdre"; // le nom de la personne
key query;
integer etat= 0; // 0 : offline ---- 1 : online

default{

state_entry()
{
llSetColor(ROUGE, ALL_SIDES );
llSetText( name +"\nOFFLINE", <1.0,1.0,1.0>, 1.0);
llSetTimerEvent(delay);
}

timer(){
query = llRequestAgentData(avatar, DATA_ONLINE);
}

dataserver(key queryid, string data){
if (query == queryid ){
if (data == (string)1) {
llSetColor(VERT, ALL_SIDES );
llSetText(name +"\nONLINE", <1.0,1.0,1.0>, 1.0);
etat = 1;
}
else {
llSetColor(ROUGE, ALL_SIDES );
llSetText(name +"\nOFFLINE", <1.0,1.0,1.0>, 1.0);
etat = 0;
}
}
}

}

analyse du code :
  • ROUGE et VERT : deux constantes pour les couleurs de la boule
  • delay : le script lance un vérifie si la personne est online ou non toutes les 10.0 sec... changer la valeur pour modifier ce temps. Un temps trop court crée plus de lag.
  • avatar : la clé, le UUID de l'avatar sur lequel le script est basé
  • name : son nom
  • query : variable qui sert pour le dataserver
  • etat : vaut 0 si la personne est offline et 1 sinon
A l'entrée dans le script, on fixe la couleur et le texte : rouge et offline. Et on lance le timer. Chaque fois que le timer se déclenche, on fait une requête de online sur le dataserver. et On modifie l'affichage en conséquence.
Et voila, c'est tout pour aujourd'hui.

Je suis pas là

Je suis là