Archivio

Posts Tagged ‘script’

Comunicazione Visuale o Testuale: il dilemma dei mondi virtuali e “lavagne” condivise

 

I tabelloni elettronici auto-aggiornanti, una necessità anche nei mondi virtuali… Per l’educazione, concorsi, statistiche, notizie, informazione

Parole o Immagini?

Nei mondi virtuali, a partire dal web stesso che è a sua volta uno specifico “Luogo” irreale dotato di innumerevoli “porte” di transazione fra un posto e l’altro (i link http://it.wikipedia.org/wiki/Collegamento_ipertestuale), si è trovato spesso a dover conciliare due concetti apparentemente opposti fra di loro: rappresentare la testualità (rappresentata da un testo eventualmente abbellito con qualche piccolo effetto oppure rappresentare l’immagine e il conseguente impatto visivo inconscio legato alle immagini e ai simboli (spesso molto più pregnanti di mille parole, come dice il proverbio).

Sebbene sappiamo tutti che la vera soluzione al problema sia semplicemente quella di fare coesistere parole ed immagini come fanno ora i blog, i giornali, facebook, pinterest etc, tuttavia vediamo che i mondi virtuali tecnicamente paiono preferire la suggestione visuale. Quando non lo fanno interpretano il testo come “altro” accessibile solo attraverso schermi web che però non sono accessibili a tutti gli utenti (cfr. la ormai assodata debacle dei viewer 2/3 di SL).

In SecondLife l’aspetto testuale è minimale ed è interpretato solo dai cosiddetti testi fluttuanti (llSetText) che però hanno il difetto di creare una sorta di inquinamento visivo e sono percepiti negativamente specie quando sono troppo densi e raccolti insieme. Per avere una informazione testuale si scaricano delle texture (costo 10 L$ ognuna) oppure si forniscono delle notecard esplicative che però hanno una espressività paragonabile a quella degli editor di testo di 20 anni fa, prima dell’avvento di Word e delle finestre grafiche.

Le famigerate scritte fluttuanti in SL, che non hanno allineamento e sembrano disordinatissime

Una delle famose Notecard o Biglietti paragonabile ai testi di wordprocessor di 20 anni fa.

Altri mondi virtuali assomigliano a SL nel tentativo di spostare tutta la percezione testuale negli aspetti tecnici del viewer (HUD o funzionalità del browser) come ad esempio World Of Warcraft che usa una textualità del manoscritto medievale che a noi ipovedenti ci crea non poche difficoltà (leggere pergamente vergate marrone scuro su marrone sporco non è il massimo della lettura).

La rappresentazione “a papiro” in WoW

Minecraft usa invece degli appositi cartelli testuali che consentono di visualizzare 4 righe brevi di testo ma che sono usate spesso in maniera efficacissima.

I commenti scritti e visibili a tutti sono una parte molto importante di minecraft

In SecondLife questo problema è stato “risolto” fin dall’aprile del  2004 da Xylor Baysklef ecco il testo leggendario: http://forums-archive.secondlife.com/54/9c/12156/1.html che inizia così:

04-06-2004 22:31
Stanchi di usare llSetText? Volete mostrare il testo direttamente sui prim, ma non volete sprecare un prim per ogni carattere? Se è così provate questo script 🙂
Informazioni generali:Questo script visualizza 6 caratteri su un prim. Può mostrare qualunque carattere stampabile in SL, e in aggiunta altri 15 caratteri estesi. I prim possono essere concatenati assieme e agire come ‘celle’ consentendo di creare dei sistemi di visualizzazione anche molto grossi (come nel sistema gratuito XyText Notecard Reader).

Una delle tante lavagne xytext disponibili sul marketplace (questa costa 350 L$)

Se teniamo conto che come da miei articoli precedenti, SecondLife è nata verso la fine del 2003 (Giugno), vediamo che quasi da subito alcuni geni dello scripting si sono dati da fare per risolvere il problema di visualizzare informazioni visuali.
Io stesso confesso che sono diventato scripter dopo avere visto la genialità di Xylor e ho contribuito personalmente diverse varianti di questo strumento per contemplare l’uso dei caratteri internazionali in modo da poter usare queste cose anche dagli italiani, dagli europei e in linea di principio da qualunque popolo della terra che non usa solo i caratteri inglesi. (NB: Le mie lavagne sono da anni disponibili opensource e gratuitamente alla comunità)
Ci si può chiedere se, con l’avvento dei MOAP (Media On A Prim) nel 2010 (http://wiki.secondlife.com/wiki/Category:Shared_Media) non sia ormai obsoleto questo metodo per rappresentare le informazioni testuali dato che basta utilizzare una texture collegata con un sito web o addirittura con una pagina html embedded per produrre risultati simili se non migliori usando font proporzionali. La risposta è che purtroppo i viewer che supportano i MOAP non sono ancora stati accettati dalla maggior parte degli utenti di SecondLife e che anche quelli che hanno accettato spesso cercano di evitare questa possibilità per evitare attacchi o comunque per una percepita complessità. Tantomento questa possibilità è utilizzabile su OpenSim dove purtroppo ancora molte persone sono agganciate ad imprudence (che non consente nemmeno la soluzione mesh da me ultimamente sviluppata). Nell’ottica di un passino per volta, direi che possiamo abituarci alle mesh (che ritengo in ogni caso un passo in avanti più grande rispetto ai MOAP).

Lavagna opensource, fullpermission per fare lezioni interattive di Salahzar

Attualmente lo scibile xytext può essere letto in una sequenza di pagine wiki come ad esempio:

Esistono anche delle implementazioni eretiche di XyText come ad esempio

Una nota sui font

I font usati dallo script per gimp devono essere fondamentalmente monospaced quindi NON proporzionali come il testo che state leggendo. Gimp su Windows (ma credo anche sugli altri sistemi) utilizza i font direttamente dalla cartella dei font di sistema, quindi è sufficiente installare un font in formato ttf o otf e automaticamente gimp lo utilizza. Fra i siti che possono produrre questi font ecco alcuni esempi:

Come fate a produrre dei font? Avendo installato Gimp 2.8, installate il font  sul vostro sistema, poi create un file XXXXX.py che mettete nella cartella .gimp/.gimp/plug-ins lanciate gimp e vi dovreste trovare sotto il menu Filter una opzione di nome XyText1CharE

la cliccate e vi chiede il seguente

E quindi il font generato diventa ad esempio
Altri link “storici” sul meccanismo di generazione dei font con gimp:

Una miniera di materiali in Italiano per chi vuole imparare a scriptare in SecondLife/OpenSim.

10 novembre 2012 1 commento

Lo “scripting“, cioè la programmazione di oggetti 3D all’interno dei mondi virtuali di SecondLife/OpenSim o simili, è considerata un’arte preziosa, e chi la sa fare viene visto come un privilegiato, potenzialmente in grado di poter offrire i suoi servigi a chi vuole arredare una sim con contenuto interattivo o comunque riuscire a sfruttarne al massimo la potenza.

Grazie agli script è possibile realizzare “applicazioni” di ogni genere nei mondi virtuali, garantendo ai fruitori della vostra terra virtuale una esperienza immersiva utile e stimolante.

Se immaginassimo un mondo senza script non potremmo ad esempio:

  • Sederci sugli oggetti o sulle palline delle varie posizioni di danza o sessuali
  • Toccare gli oggetti per avere materiale o per comandarne il comportamento (i famosi menu blu)
  • Guidare un veicolo
  • e molte altre attività come gli AO, gli HUD, i collari BDSM, lavagne testuali

In sintesi l’esperienza virtuale sarebbe sensibilmente svuotata. Quindi imparare almeno ad usare (se non proprio a creare) gli script è una necessità primaria e alfabetizzarsi nell’uso e nella comprensione almeno degli aspetti più di base è un MUST per tutti coloro che vogliono utilizzare e organizzare attivamente la virtualità e non soltanto subirla.

Come facciamo allora per imparare ad usare gli script? Premesso che occorre avere un minimo di sensibilità “logica” per seguire i passi dello script, vi sono differenti percorsi di apprendimento ed autoapprendimento.

Marcus73 Core continua ad alfabetizzare sugli script nella Sim di Torino in SL

Inworld vi sono diversi corsi interattivi in Italiano che si tengono in varie università di SecondLife fra cui citiamo ad esempio la sim di Torino (cfr gruppo secondlife:///app/group/fae51a95-41e2-9b9a-71e3-5e1b5eb740a1/about ) coordinata per la parte di scripting da Marcus73 Core, o anche il gruppo ALI – Accademia delle Land Italiane secondlife:///app/group/3fb2f1ff-98fd-fbef-9406-41791347686f/about o altri ancora.

Per chi volesse fare da solo o volesse ripassare o avere comunque del materiale, consiglio per iniziare le seguenti guide:

Lezioni dei mentori Italiani nel 2008

Questa serie di corsi organizzati nel 2008 dai Mentori Italiani sulla base delle notecard inworld per i corsi di Salahzar Stenvaag:

Michel Lemmon

Ringrazio Michel Lemmon http://wiki.secondlife.com/wiki/User:Michel_Lemmon/it che purtroppo non frequenta più SecondLife, ma nel 2008-2009 era attivissimo ad aiutarmi nel coordinare e pubblicare le lezioni.

Altri video sullo scripting

Scriptare particles in OpenSim (craft) http://www.youtube.com/watch?v=jLfxAG-TI7Y

Fare un llDialog http://www.youtube.com/watch?v=5Gos7kEzM7M

Altre risorse in Italiano

Gaia Rossini

Dal blog di Gaia Rossini, storica divulgatrice del mondo SecondLife, http://gaiarossini.myblog.it/sl_tutorial_-_script/

Micalita Writer

Dal blog di Micalita Writer vari tutorial fra cui anche una serie sullo scripting http://micalitasl.blogspot.it/2007/10/tutorial.html

http://pantalica-sl.blogspot.it/2009/05/linden-scripting-language-lsl.html (purtroppo con un po’ di pubblicità, ma pare buono)

Una risorsa utile in Francese

Per chi capisce questa lingua consiglio il seguente sito http://script.lsl.free.fr/telechar.htm che contiene alcuni programmi E manuali preziosi e ben fatti (ma in francese). Inoltre anche dei programmi che consentono di aiutare i Dialog, le Particles ecc.

Per le particelle: http://script.lsl.free.fr/present.htm

Per scegliere i colori: http://script.lsl.free.fr/couleurs.htm

Per i dialoghi: http://script.lsl.free.fr/dialog.htm

Uno script “registratore” di animazioni per produrre ascensori, palloni, guide etc..

5 gennaio 2012 2 commenti

Grazie alla nuova funzionalità offerta dall’istruzione llSetKeyframeMotion http://wiki.secondlife.com/wiki/LlSetKeyframedMotion ora è possibile specificare una “animazione” definendo una sequenza di istantanee della posizione e rotazione di un oggetto non fisico in SecondLife.

Serve in pratica per poter implementare una classe notevole di script che rendono viva SecondLife come ad esempio:

  • Ascensori
  • Veicoli di spostamento (treni, carrozze etc)
  • Mongolfiere guide turistiche per le sim
  • Effetti speciali tipo pedane rotanti, montagne russe, ruote panoramiche (per discoteche, lunapark ecc)
  • Effetti artistici e grafici
  • Movimenti lenti e uniformi della camera per fare machinima (videoclip su secondlife)

Questo genere di funzionalità erano finora offerte da due tecniche che avevano però una serie di controindicazioni:

  • Tecnica 1: Fare gli oggetti fisici e poi “spingerli” con forze ed impulsi opportuni
  • Tecnica 2: Fare gli oggetti non fisici e utilizzare la funzionalità di riposizionamento dell’oggetto con llSetPos() e llSetRot() ogni pochi millesimi di secondo

In ambedue i casi veniva generato molto lag e nel caso degli oggetti fisici questi oggetti erano impossibili o comunque difficilissimi da controllare.

Ora possiamo utilizzare questa funzionalità per ridurre il lag e ottenere dei risultati decenti. In un mio articolo precedente ho mostrato un paio di video dove veniva utilizzata questa funzione per ottenere interessanti effetti scenici (Anche i prim devono andare in discoteca).

Ma entriamo un po’ nel dettaglio della funzione. La funzione ha essenzialmente due parametri LISTA: llSetKeyframedMotion(lista1,lista2);

le liste in SL sono rappresentate da una parentesi quadrata, gli elementi della lista separati da virgola e da una parentesi quadra chiusa: [ a, b, c, d]

La prima lista (lista1) di solito contiene terne di valori corrispondenti alla differenza di posizione rispetto allo start, differenza di angolo e durata in secondi per spostare l’oggetto dal frame precedente.

In pratica ad esempio la list1 [ <0,0,1>, ZERO_ROTATION, 1 ] indica ad esempio che l’oggetto si SOLLEVA di un metro lungo l’asse Z, senza cambiare rotazione e il movimento lo esegue in 1 secondo.

La seconda lista invece lista2 indica dei comandi che si vogliono dare per definire come l’animazione viene eseguita [ KFM_MODE, KFM_FORWARD ] indica che si vuole animare l’oggetto dal primo frame fino all’ultimo, KFM_PINGPONG fa oscillare l’oggetto in avanti indietro lungo i frame forniti, KFM_REVERSE fa tornare indietro dall’ultimo al primo, KFM_LOOP invece ripete indefinitamente la sequenza.

Ora c’è un piccolo inghippo, l’oggetto per poter eseguire una animazione deve avere la nuova “fisica” quella delle mesh, ma non è necessario che sia mesh per farlo, basta andare nella finestra delle proprietà avanzate dell’oggetto e mettere CONVEX_HULL invece che prim e possiamo animarlo.

Da qui si capisce che lo script minimo per animare un oggetto è qualcosa come il seguente


default
{ state_entry(){
    while(llVecDist(llGetPos(),)>0.01)
        llSetLinkPrimitiveParamsFast(0,
        [ PRIM_POSITION, ,
        PRIM_ROTATION, ]);

    llSetKeyframedMotion([
        , , 0.184138,
        , , 0.110658,
        , , 0.215561
            ],[KFM_MODE,KFM_FORWARD]);}}

La riga 3-6 si accerta di posizionare l’oggetto in una posizione prefissata, mentre la riga 8-12 è appunto un esempio di sequenza di frame.
Come vedete è praticamente mortale.
Lo script che ho realizzato che potete vedere all’opera in questo video youtube consente invece di memorizzare i frame e di poter estrarre in modo relativamente semplice le istruzioni per poterlo fare funzionare.

Le istruzioni per l’uso

Come usare questo registratore di keyframe:

1) rezzate l'oggetto
2) per sicurezza fare il reset la prima volta che lo usate da tools->reset
3) Editate l'oggetto in modo da vedere le freccine e spostatelo nella posizione iniziale
4) Premete RESTART nell'opzione del menu per fissare la posizione iniziale
5) Muovete l'oggetto e ruotatelo nel frame 1 e premete ADDFRAME
6) proseguite per tutti gli altri frame
7) se volete vedete l'animazione cliccando |<< per andare all'inizio, >>| per andare alla fine e < e > per scorrere i frame dell'animazione
8) Se un frame non vi piace quando avete scorso fino a quello premete DELFRAME posizionate l'oggetto come volete e fate ADDRAME per sostituirlo
9) Per provare l'animazione premete PLAY
10) Per avere lo script premete SCRIPT
11) Create un box nuovo abilitate la fisica CONVEX HULL dalla tab features
12)  inserite un nuovo script e copiate incollate la parte in chat, p.es.
 default { state_entry() { while(llVecDist(llGetPos(),)>0.01)llSetLinkPrimitiveParamsFast(0, [ PRIM_POSITION, , PRIM_ROTATION, ]); llSetKeyframedMotion([
[09:50]  *** (3/1/2012)  llSetKeyframedMotion: , , 0.184138, , , 0.110658, , , 0.215561
[09:50]  *** (3/1/2012)  llSetKeyframedMotion: ],[KFM_MODE,KFM_FORWARD]);}}

13) assicurate di cancellare la parte iniziale di tutte le linee che iniziano con "[09:50]  *** (3/1/2012)  llSetKeyframedMotion: "
14) salvate il vostro script e voilà dovrebbe animarsi da solo ogni volta che lo resettate
15) Potete eventualmente fare in modo che lo script si attivi al touch od altro
Salahzar

Ecco il codice dello script per fare il registratore: uso pastebin perchè qui mi distrugge il codice 😦 http://pastebin.com/uw6Zema1


								

Anche i prim hanno il diritto di andare in discoteca e ballare….

26 dicembre 2011 1 commento

Recentemente Linden Lab ha introdotto una nuova funzionalità di scripting che consente di memorizzare “animazioni dei prim” in modo da fargli fare (al prim o al root prim) un percorso prestabilito ed eseguirlo in modo fluido (play) in modo che tutti vedano i prim nelle stesse posizioni. Questa funzionalità è stata inserita per limitare il lag nelle sim dovuto ad ascensori od oggetti fisici che si muovono. Per dettagli su questa funzione nuova guardate qui: http://wiki.secondlife.com/wiki/LlSetKeyframedMotion

E’ possibile ad esempio far fare ad un oggetto il giro della vostra sim specificando le tempistiche con cui si deve muovere o semplicemente dirgli di girare su sè stesso.

Nel caso della semplice rotazione attenzione a non confondere la rotazione semplice fatta normalmente in SL con llTargetOmega() che influisce solo sul viewer [ogni viewer vede una rotazione differente] con la rotazione server side, dove tutti vedono l’oggetto ad un livello di rotazione condiviso. Per ovviare a questo  fino a poco fa si usavano oggetti fisici oppure costosi spostamenti con llSetPos() che avevano però il difetto di presentare il movimento in modo innaturale e a scatti e comunque impattavano pesantemente sulla sim.

A parte ascensori, treni, mongolfiere etc, le possibilità artistiche (cosa che pochi riescono a cogliere) offerte da questa nuova funzione sono effettivamente interessanti, quindi vale veramente la pena di imparare a scriptare con questo metodo.

Questo è ad esempio un interessante video fatto da uno scripter che usa queste animazioni con oggetti flexy ottenendo sorprendenti risultati:

Rufus Darkfold, il creatore di questo video e degli “attori” animati, produce anche il componente opensource da lui chiamato “primcontrol” che potete trovare qui: http://community.secondlife.com/t5/Building-and-Texturing-Forum/Free-primcontrol-HUD-Easy-Prim-Torture-Beta-Test-Open/td-p/1092577 oppure iscrivervi al suo gruppo inworld dove fornisce il componente di creazione delle animazioni: “Navigator Users”.

oppure anche http://secondlife.lithium.com/t5/LSL-Scripting/Free-primcontrol-HUD-Easy-Keyframe-Animation-Easy-Prim-Torture/td-p/1092569

NB: l’oggetto primcontrol fa un SACCO di altre cose: per vederle tutte occorrerebbero almeno 10 articoli 🙂

Altre applicazioni artistiche

Pallina Loon ad esempio ha fatto un video dove illustra alcune applicazioni di questa animazione evidenziando l’aspetto “fisico” che queste animazioni hanno sugli avatar con il suo bel video “The Avatar Machine”.

Altre idee?

Se avete altre idee su come utilizzare questa funzione, commentate oppure scrivetemi.

Salahzar Stenvaag