ALMA MATER STUDIORUM - UNIVERSITA' DI BOLOGNA SEDE DI CESENA FACOLTA' DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA IN SCIENZE DELL'INFORMAZIONE PREFABBRICATI E DOMOTICA SU SECOND LIFE: CREAZIONE DI UN KIT DI SVILUPPO Relazione finale in: INTELLIGENZA ARTIFICIALE Relatore: Presentata da: Prof. Giorgio Casadei Correlatore: Dr. Stefano Cacciaguerra Sessione III Anno Accademico 2006/2007 Fabio Testi Indice Indice INDICE ................................................................................................................I 1 INTRODUZIONE....................................................................................... 1 1.1 1.2 1.3 2 SCENARIO ..................................................................................................... 1 CONTRIBUTO DELLA TESI ............................................................................... 2 DESCRIZIONE DEI CONTENUTI ........................................................................ 3 STATO DELL’ARTE ................................................................................. 5 2.1 REALTÀ E MONDI VIRTUALI ........................................................................... 5 2.2 SECOND LIFE .............................................................................................. 13 2.3 PREFABBRICATI ........................................................................................... 17 2.4 LA DOMOTICA ............................................................................................. 19 2.4.1 Gestione dell’ambiente...............................................................................21 2.4.2 Gestione degli apparecchi domestici .........................................................22 2.4.3 Comunicazione ed informazione ................................................................22 2.4.4 Sicurezza.....................................................................................................23 3 PROGETTAZIONE .................................................................................. 27 3.1 KIT DI PREFABBRICATI ................................................................................. 27 3.2 KIT DI SCRIPT PER LA DOMOTICA .................................................................. 28 3.3 COSTRUIRE IN SECOND LIFE ........................................................................ 31 3.3.1 Primitive (prim)..........................................................................................31 3.3.2 MegaPrim...................................................................................................32 3.3.3 Sculpted Prims e Sculpted Maps ................................................................33 3.3.4 Grid Unit e Ruler Mode .............................................................................35 3.3.4.1 3.3.4.2 3.3.5 3.3.6 Grid Unit ...................................................................................................... 35 Ruler Mode .................................................................................................. 36 Link di Prim................................................................................................37 Dove costruire ............................................................................................38 3.3.6.1 3.3.6.2 Le SandBox.................................................................................................. 38 Comprare un terreno .................................................................................... 39 3.3.7 Come costruire ...........................................................................................39 3.4 IL LINDEN SCRIPT LANGUAGE (LSL) ........................................................... 44 3.4.1 Le variabili .................................................................................................45 3.4.2 Gli stati.......................................................................................................46 3.4.3 Le costanti ..................................................................................................46 I Indice 3.4.4 3.4.5 3.4.6 4 Gli eventi ....................................................................................................47 Le funzioni ..................................................................................................47 I controlli di flusso .....................................................................................47 IMPLEMENTAZIONE.............................................................................. 49 4.1 COSTRUZIONE DI PREFABBRICATI ................................................................. 49 4.2 CREAZIONE DI SCRIPT PER LA DOMOTICA...................................................... 52 4.2.1 HVAC .........................................................................................................53 4.2.2 Lighting ......................................................................................................53 4.2.3 Audio ..........................................................................................................56 4.2.4 Video...........................................................................................................60 4.2.5 Security.......................................................................................................60 4.2.5.1 4.2.5.1.1 4.2.5.1.2 4.2.5.1.3 4.2.5.2 4.2.5.2.1 4.2.5.2.2 4.2.5.2.3 4.2.6 5 Antifurti........................................................................................................ 60 Antifurto suono .................................................................................................................60 Antifurto IM......................................................................................................................61 Antifurto e-mail ................................................................................................................61 Porte di sicurezza ......................................................................................... 62 Porta gruppo......................................................................................................................63 Porta domanda-risposta.....................................................................................................63 Porta blacklist ...................................................................................................................64 Comunicazioni............................................................................................65 GUIDA ALL’UTILIZZO ........................................................................... 67 5.1 I PREFABBRICATI ......................................................................................... 67 5.2 LA DOMOTICA ............................................................................................. 76 5.2.1 Luci.............................................................................................................77 5.2.2 Audio ..........................................................................................................78 5.2.3 Antifurti ......................................................................................................79 5.2.4 Porta domanda-risposta.............................................................................81 5.2.5 Porta blacklist ............................................................................................81 5.2.6 Posizionamento dei sensori........................................................................82 6 CONCLUSIONI E SVILUPPI FUTURI ........................................................ 85 6.1 6.2 CONCLUSIONI .............................................................................................. 85 SVILUPPI FUTURI ......................................................................................... 86 BIBLIOGRAFIA................................................................................................. 87 II Introduzione 1 Introduzione 1.1 Scenario Ultimamente il rapido sviluppo delle telecomunicazioni, dell’informatica e dell’elettronica ha portato a cambiamenti sostanziali nella vita di tutti i giorni. Quello che dieci anni fa sembrava fantascienza, oggi è realizzabile a costi non esageratamente eccessivi. La tecnologia d’oggi copre moltissimi campi, dal settore lavorativo a quello del divertimento e del comfort. Di quest’ultimo, in particolare, fa parte il settore domotico. La domotica, detta anche in inglese “home automation”, è la scienza che si occupa di studiare le tecnologie atte a migliorare la qualità della vita nella casa grazie all’automazione ed il controllo di tutti i processi ripetitivi. Si tratta quindi di un insieme di applicazioni tecnologiche che possono essere installate nella propria abitazione. Queste applicazioni non servono solamente a migliorare la qualità della vita, ma garantiscono anche maggiore sicurezza e risparmio energetico. L’installazione di tutte queste nuove tecnologie in una casa richiede una fase di studio e progettazione sulle principali problematiche che si possono incontrare nella realizzazione di un impianto domotico. Spesso per la progettazione di sistemi complessi vengono utilizzati software di simulazione che consentono di riprodurre la realtà. Questo consente di analizzare dinamicamente il comportamento del sistema creato, valutare 1 Introduzione situazioni ritenute particolarmente critiche, validare scelte progettuali, confrontare soluzioni alternative. Quando si riproduce la realtà, si crea una realtà virtuale. Le incredibili possibilità della realtà virtuale permettono di ricreare mondi e oggetti che sono la trasposizione digitale di ambienti reali o di fantasia. Il mondo virtuale di Second Life è uno tra i più famosi e utilizzati mondi virtuali presenti sul web. Il motto di Second Life, “Your World, Your Imagination”, è molto importante perché esprime che tutto quello che puoi immaginare, su Second Life lo puoi fare. Inoltre, Second Life è social environment, è possibile cioè la collaborazione tra più utenti a una qualsiasi attività. Second Life è un mondo virtuale tridimensionale on-line di proprietà della società americana Linden Lab. Il sistema fornisce ai suoi utenti gli strumenti per aggiungere al “mondo” nuovi contenuti grafici. I residenti hanno il diritto di proprietà sulle loro creazioni digitali e possono venderle, comprarle e scambiarle con gli altri abitanti. Tutti gli oggetti possono essere animati e predisposti per interagire attivamente con gli utenti. Per far questo in Second Life è presente un linguaggio di programmazione: il Linden Scripting Language (LSL) il quale è molto simile al linguaggio di programmazione C. 1.2 Contributo della tesi La realizzazione di infrastrutture domotiche dovrebbe migliorare la qualità della vita di domani. Diventa perciò necessario uno strumento per lo studio e l’analisi di tali infrastrutture. Per realizzare questo strumento, risulta conveniente utilizzare un ambiente virtuale che consenta di fare tutte le simulazioni e gli studi che si vogliono. Lo scopo di questa tesi è quindi, la realizzazione di un kit di sviluppo per la creazione di oggetti prefabbricati e un kit di algoritmi che implementino la domotica sul mondo virtuale di Second Life. 2 Introduzione È stato scelto Second Life perché è un ambiente virtuale che ben si presta a questo scopo. Infatti, Second Life ha gli strumenti per costruire oggetti 3D e dispone di un proprio linguaggio di programmazione: il Linden Script Language. Questo kit permetterà ai futuri studenti di costruire edifici prefabbricati semplicemente assemblando vari elementi. Inoltre, utilizzando il kit di script delle applicazioni domotiche si potranno rendere queste infrastrutture automatiche, sperimentando varie situazioni e analizzandone vantaggi e svantaggi. 1.3 Descrizione dei contenuti La tesi è così suddivisa: Nel secondo capitolo vengono introdotti i concetti di realtà virtuale e di mondo virtuale. In particolare viene analizzato il mondo virtuale di Second Life valutandone pregi e difetti. Vengono inoltre esposti i concetti di prefabbricato e di domotica. Nel terzo capitolo vengono esposti e analizzati gli obiettivi che si vogliono realizzare. Viene illustrato come costruire oggetti e come creare script con il linguaggio di programmazione presente in Second Life. Nel quarto capitolo viene illustrato come si sono realizzati il kit di prefabbricati e il kit di script per le applicazioni domotiche. Vengono spiegati gli standard adottati per la costruzione di prefabbricati e le tecniche utilizzate negli script creati con rispettivi vantaggi/svantaggi. Nel quinto capitolo viene illustrato come utilizzare il kit di prefabbricati e come utilizzare gli script creati. In particolare, viene spiegato come impartire i comandi riguardanti le applicazioni domotiche. 3 Introduzione 4 Stato dell’arte 2 Stato dell’arte In questo capitolo verranno introdotti i vantaggi e gli svantaggi della realtà virtuale, illustrando in particolare il mondo virtuale di Second Life. Verranno inoltre esposti i concetti di prefabbricato e domotica. 2.1 Realtà e mondi virtuali Figura 2.1: Visione di realtà virtuale Il termine realtà virtuale è il termine utilizzato per indicare una realtà simulata, creata attraverso l’uso del computer [REA08]. Anche se la realtà virtuale potrebbe essere costituita attraverso un sistema totalmente immersivo in cui tutti i sensi umani possono essere utilizzati, attualmente il termine è applicato in pratica a qualsiasi tipo di simulazione virtuale, dai videogiochi che vengono visualizzati su un normale schermo, alle 5 Stato dell’arte applicazioni che richiedono l’uso degli appositi guanti muniti di sensori ed infine all’esplorazione del web. La realtà virtuale, per sua stessa definizione, simula il più realisticamente possibile la realtà effettiva. In pratica però, per problemi tecnologici (derivati soprattutto dalla limitata capacità di calcolo degli attuali sistemi informatici) non è ancora stato raggiunto un livello di realismo così elevato da rendere indistinguibile l’ambiente simulato da quello reale. Al livello tecnologico attuale (2008), è ancora piuttosto semplice stabilire la differenza tra l’esperienza in un ambiente reale e in uno virtuale: se infatti le immagini simulate stanno guadagnando un buon livello di fotorealismo, tuttavia altri sensi non vengono correttamente simulati come ad esempio olfatto, gusto e tatto. La quasi totalità di questi ambienti virtuali rimangono prevalentemente esperienze visive e sonore. La realtà virtuale immersiva secondo il livello tecnologico attuale potrà essere utilizzata da tutti grazie ad alcune periferiche: • Visore : un casco o dei semplici occhiali in cui gli schermi vicini agli occhi annullano il mondo reale dalla visuale dell’utente. Il visore può inoltre contenere dei sistemi per la rilevazione dei movimenti, in modo che girando la testa da un lato, ad esempio, si ottenga la stessa azione anche nell’ambiente virtuale. • Auricolari : trasferiscono i suoni all’utente. • Guanti : i guanti rimpiazzano mouse, tastiera, joystick, trackball e gli altri sistemi manuali di input. Possono essere utilizzati per i movimenti, per impartire comandi, digitare su tastiere virtuali, ecc. • Cybertuta : una tuta che avvolge il corpo. Può avere molteplici utilizzi: può simulare il tatto flettendo su se stessa grazie al tessuto elastico, può realizzare una scansione tridimensionale del corpo dell’utente e trasferirla nell’ambiente virtuale. 6 Stato dell’arte Figura 2.2: Esempio di cybertuta Queste periferiche vengono utilizzate da diverse categorie di utenti, tra cui i piloti di aerei che utilizzano questa tecnologia per prepararsi al volo e gli studenti delle facoltà di medicina che possono simulare interventi senza mettere a repentaglio la vita dei pazienti. Le incredibili possibilità della realtà virtuale permettono di ricreare mondi e oggetti che sono la trasposizione digitale di ambienti reali o di fantasia. Un mondo virtuale è un ambiente simulato dove gli utenti possono interagire attraverso i propri avatar [MON08]. Un avatar è la rappresentazione digitale di un utente e può essere ottenuto da un modello tridimensionale o ricavato da una foto. L’espressione “mondo virtuale” solitamente è un ambiente 3D simile al mondo reale, con regole del mondo reale come gravità, topografia, locomozione, azioni in tempo reale, e comunicazione. È un tipo di “mondo alternativo” concepito per fornire una forma differente di intrattenimento sia online che offline. In origine il concetto di mondo virtuale è stato sfruttato essenzialmente a fine d’intrattenimento, per la creazione di giochi di ruolo multiutente o di “esperimenti sociologici”. Ad esempio la realizzazione di città virtuali in cui chiunque poteva entrare e compiere azioni caratteristiche della vita quotidiana. Molto spesso, gli utenti di questo tipo di “mondi” hanno la possibilità di 7 Stato dell’arte espanderli e di creare nuove regioni, in cui poi gli altri utenti potranno entrare e interagire. A questo tipo di realtà virtuale si è andato affiancando negli ultimi anni un diverso uso della possibilità di simulare luoghi reali: quello di ricreare a distanza ambienti reali o realistici, per gli usi più disparati. Sono nate così le prime biblioteche virtuali, le riproduzioni di musei e luoghi storici, ma anche i primi supermercati interattivi, in cui l’utente percorre una galleria di negozi infilando gli acquisti nel proprio carrello. La differenza sostanziale che c’è tra il mondo reale e quello virtuale è che quest’ultimo è senza limiti e confini. Tramite i mondi virtuali è possibile costruire una realtà come un’opera d’arte che ha origine da un’idea o da un progetto. La ricostruzione e la simulazione della realtà permettono di sperimentare situazioni e soluzioni che stimolando le relazioni sociali producono innovazione e progresso. In origine, quindici anni fa, quando ancora non si parlava di multimedialità, i primi mondi virtuali erano interamente testuali (MUD: Multiple User Dungeon), si trattava solitamente di avventure modificate per poter essere utilizzate da più utenti contemporaneamente. Questi mondi interattivi vengono chiamati di primo tipo. I mondi del secondo tipo sono invece nati quando i computer sono diventati sufficientemente prestazionali da poter supportare il rendering di intere stanze simulate in tempo reale. È stato quindi possibile creare mondi di tipo grafico, in cui l’utente si muove tramite mouse e tastiera e può realmente vedere, in maniera più o meno soddisfacente, gli oggetti che lo circondano. Negli anni passati sono nati numerosi mondi virtuali basati su Internet, che hanno iniziato a spostarsi dall’obiettivo iniziale dell’intrattenimento verso uno nuovo, che probabilmente estenderà la capacità degli attuali sistemi di collaborazione in tempo reale. I mondi virtuali oggi sfruttano il social networking e gli strumenti per la collaborazione online (integrando blog, homepage personali e talvolta 8 Stato dell’arte funzionalità Voip), che li trasformano in strumenti incredibilmente utili per l’edutainment e la collaborazione a distanza. Il termine “edutainment” deriva dalla fusione delle parole “educational” ed “entertainment”. Con questa espressione si indica una forma di intrattenimento finalizzata sia ad educare che a divertire [EDU08]. Per edutainment si intende un’attività formativa rivolta a utenti adulti, studenti e insegnanti che prevede: • l’utilizzo della connessione in rete per l’utilizzo dei materiali didattici e lo sviluppo di attività formative basate su una tecnologia specifica, detta "piattaforma tecnologica"; • l’impiego del computer come strumento principale per la partecipazione al percorso di apprendimento; • un alto grado di indipendenza del percorso didattico da vincoli di presenza fisica o di orario specifico; • il monitoraggio continuo del livello di apprendimento, sia attraverso il tracciamento del percorso che attraverso frequenti momenti di valutazione e autovalutazione; • la valorizzazione di: multimedialità : effettiva integrazione tra diversi media per favorire una migliore comprensione dei contenuti; interattività con i materiali : per favorire percorsi di studio personalizzati e di ottimizzare l’apprendimento; interazione umana : con i docenti/tutor e con gli altri studenti per favorire, tramite le tecnologie di comunicazione in rete, la creazione di contesti collettivi di apprendimento. L’edutainment sfrutta le potenzialità rese disponibili da Internet per fornire formazione sincrona o asincrona agli utenti, che possono accedere ai contenuti dei corsi in qualsiasi momento e in ogni luogo in cui esista una connessione online. Questa caratteristica, unita alla tipologia di progettazione dei materiali didattici, porta a definire alcune forme di edutainment come “soluzioni di insegnamento centrato sullo studente”. 9 Stato dell’arte Figura 2.3: Esempio di edutainment in un mondo virtuale Inoltre, molti dei più recenti mondi virtuali promuovono anche un nuovo modo di fare marketing di prodotti e contenuti integrando un supporto per l’ecommerce. Il commercio elettronico o e-commerce consiste nella compravendita, nel marketing e nella fornitura di prodotti o servizi attraverso computer collegati in rete. Questa situazione sta progressivamente portando alla creazione di marketplace alternativi basati su Internet nei quali gli utenti mostrano e si scambiano prodotti mentre chattano. Alcuni tra i mondi virtuali più famosi presenti sul web sono: • Second Life : Second Life è un ambiente 3D creativo ed altamente sofisticato. Gli avatar ad alta risoluzione sono pienamente personalizzabili e gli utenti possono acquistare nuovi accessori. I personaggi di Second Life hanno la possibilità di contribuire enormemente allo sviluppo del mondo virtuale. I residenti hanno il diritto di proprietà sulle loro creazioni digitali e possono venderle, comprarle e scambiarle con gli altri abitanti. • Habbo Hotel : Habbo Hotel è un mondo virtuale che utilizza la metafora di un hotel completo perfino di anticamere e “stanze degli ospiti” virtuali. Le stanze degli ospiti possono essere arredate acquistando oggetti con i “crediti Habbo”. I crediti Habbo possono essere acquistati con vari tipi di valute reali in molte maniere (carta 10 Stato dell’arte di credito, cellulare, carte prepagate). L’accesso al mondo è gratuito. • There : There dispone di luoghi esotici virtuali che gli utenti possono esplorare. Tutti gli avatar sono umani e possono essere personalizzati in vari modi sia nel viso che nella forma del corpo. Una delle attività preferite dei membri di There è la possibilità di vestire i loro personaggi con abiti personalizzati su misura, che possono essere acquistati in valuta locale. • Weblo : Weblo è un mondo virtuale basato sul mondo reale. I membri possono guadagnare soldi veri possedendo repliche online di città, stati, proprietà famose e perfino domini su internet. I membri creano siti e vengono remunerati per la loro popolarità attraverso un sistema di internet advertising. I proprietari di città o nazioni possono guadagnare ulteriormente istituendo dazi per le transazioni che avvengono nei loro territori e vendendo le loro proprietà per trarne profitto. • Kaneva : Kaneva è un mondo virtuale che permette agli utenti di interagire attraverso avatar tridimensionali. Oltre a permettere agli utenti la costruzione di ambienti personalizzati, Kaneva fornisce la capacità di condividere, commentare, entusiasmarsi, catalogare e cercare tra un vasto range di media inclusi video, blog, foto, musica/audio e giochi. • Moove : L’homepage di Moove evidenzia la costruzione di stanze e gli incontri romantici online come attività primaria per i visitatori. Gli avatar di Moove sono chiamati “attori” e si può scegliere fra umanoidi, animali e robot. I nuovi visitatori hanno a disposizione varie stanze e possono arredare in vario modo la propria casa virtuale. Ogni membro gestisce il proprio spazio, e questo permette una grande varietà di espressioni individuali. • Cybertown : Cybertown è un mondo virtuale che ti permette di avere una casa 3D virtuale con una tua chat personale, una casella mail gratuita ed una bacheca messaggi. Puoi invitare i tuoi amici, 11 Stato dell’arte chiacchierare e far festa. Gli shopping mall di Cybertown ed i mercatini delle pulci ti permettono di comprare, vendere o scambiare oggetti 3D per la tua casa virtuale. • Playdo : Playdo è un mondo virtuale con varie funzionalità supplementari per costruire una comunità, incluso un editor di pagine web che permette agli utenti di creare la propria homepage personalizzata. Playdo non ha una economia basata su punti o merci, la socializzazione è il focus di questa community. Playdo include un’interfaccia WAP che permette connessioni sociali fra cellulari. • Active Worlds : L’universo di Active Worlds è fatto di centinaia di migliaia di utenti che chattano e costruiscono ambienti di realtà virtuale 3D in milioni di chilometri quadrati di territorio virtuale. Gli utenti possono fare shopping online in un negozio 3D virtuale e chattare con i commessi mentre giocano a giochi interattivi 2D o 3D. • Whyville : Whyville è un mondo virtuale educativo per bambini e teenager. Fondato inizialmente come supporto agli articoli settimanali scientifici ed educativi dell’LATimes, Whyville impegna attivamente i suoi visitatori e li incoraggia a partecipare ad eventi educativi e divertenti che forniscono ai ragazzi esperienze “pratiche” su progetti scientifici. 12 Stato dell’arte 2.2 Second Life Figura 2.4: Logo di Second Life È stato scelto Second Life perché è un mondo virtuale in cui l’utente ha la possibilità di creare nuovi oggetti e personalizzarli a proprio piacimento. Second Life è un mondo virtuale tridimensionale on-line creato nel 2003 dalla società americana Linden Lab [SEC08]. Il sistema fornisce ai suoi utenti gli strumenti per aggiungere al “mondo virtuale” di Second Life nuovi contenuti grafici come oggetti, fondali, fisionomie dei personaggi, contenuti audiovisivi, ecc. Gli utenti hanno quindi libertà di costruire qualunque oggetto (sedie, automobili, case, ecc) che può essere poi venduto o scambiato con gli altri “residenti” utilizzando una valuta virtuale (il Linden Dollar). Questa moneta virtuale ha valore solamente su Second Life, ma può essere convertita in veri dollari americani dando vita a reali opportunità di business. Attualmente partecipano alla creazione del mondo di Second Life oltre 450.000 utenti di tutto il mondo, e ciò che distingue Second Life dai normali giochi 3D on-line è che l’intero mondo virtuale è creato dagli utenti stessi. Qualunque casa, palazzo, negozio, automobile che si trova nel mondo di Second Life è stata creata da una qualsiasi persona che non lavora alla Linden Lab. 13 Stato dell’arte Figura 2.5: Edificio costruito in Second Life Per far questo Second Life mette a disposizione dell’utente uno strumento per la creazione di figure solide, chiamate prim, che sono il cubo, la piramide, il cilindro, ecc. Tutti gli oggetti possono essere animati e predisposti per interagire attivamente con gli utenti. È possibile fare in modo che si muovano o che cambino le loro caratteristiche in seguito ad un contatto con un avatar. Per far questo viene usato il linguaggio di programmazione Linden Scripting Language (LSL) il quale è molto simile al linguaggio C. Il mondo virtuale di Second Life è veramente enorme ma solo guardando la mappa ci si può accorgere veramente della sua vastità. 14 Stato dell’arte Figura 2.6: Mappa di Second Life Come si vede in figura 2.6 su Second Life sono presenti miriadi di isole di cui alcune sono di proprietà di famose aziende di vestiario, automobili, elettronica, ecc. come ad esempio Reebok, Mercedes, Sony. Spostarsi da un’isola all’altra o più in generale da un luogo ad un altro è molto semplice. Second Life mette a disposizione dell’utente un sistema di teletrasporto gratuito e molto facile da usare. La comunicazione con altre persone nel mondo virtuale può essere effettuata via chat, instant message (IM) e chat vocale. Essendo un mondo virtuale 3D, la comunicazione tramite chat viene inoltre arricchita dalla comunicazione visiva. Per esaltare il concetto di comunicazione gestuale e visiva gli avatar possiedono una serie di “animation”: sequenze animate con cui si possono esprimere stati d’animo come gioia o tristezza e compiere delle azioni predefinite come salutare o ballare. Gli incontri tra personaggi all’interno del gioco si configurano quindi come reali discussioni tra esseri umani. 15 Stato dell’arte Gli “abitanti” vengono rappresentati tramite degli “avatar”. L’avatar è il proprio alter-ego virtuale, la propria rappresentazione o immagine nel mondo virtuale. In pratica è il modo in cui una persona si propone agli altri utenti e come questi la percepiscono. Solitamente hanno l’aspetto di una persona ma possono avere anche le sembianze di animali o oggetti. È possibile scegliere tra tanti tipi di avatar il personaggio che meglio si avvicina e si adatta alla propria personalità. L’avatar è personalizzabile in maniera praticamente illimitata. Può essere cambiata in sostanza tutta la fisionomia del corpo, dall’altezza al colore degli occhi raggiungendo alti livelli di somiglianza con l’utente reale (figura 2.7). Accedere a Second Life è molto semplice: è sufficiente creare un account (gratuito) e scaricare il client (gratuito) dal sito ufficiale. L’account gratuito esclude però la possibilità di acquistare aree di terreno all’interno del gioco, per la quale è necessario avere un premium account. Infatti, per acquistare un terreno (land) o per acquistare Linden Dollar spendendo dollari americani è necessario sottoscrivere un premium account (pagamento di un abbonamento mensile) che da il totale potere all’utente di comprare terreni in vendita. Come già detto il cambio può essere fatto solo con il dollaro americano e non con euro o altra moneta. Attualmente 1 Linden Dollar vale 285 dollari americani, ma il valore di cambio varia a seconda dell’economia americana. Figura 2.7: Confronto reale e virtuale 16 Stato dell’arte L’abilità di progettare e rivendere contenuti 3D consente di guadagnare Linden dollar che possono essere cambiati con denaro reale. Questo permette addirittura di creare un reale business all’interno di Second Life. Second life si presenta agli occhi delle aziende di tutto il mondo come uno straordinario strumento di marketing, infatti, sono già presenti aziende come: Adidas, Reebok, Vodafone, Mazda, BMW, Mercedes, General Motors, Apple, Microsoft, Dolce & Gabbana, Gucci, Prada, Gabetti, Cisco Systems, Reuters, e molti altri stanno per arrivare. Su Second Life come nel mondo reale è possibile visitare ad esempio un negozio di vestiario e comprare la maglietta o il paio di jeans che ci piacciono per poterli indossare. Second Life non viene solamente utilizzato per pubblicità ma talvolta vengono organizzati anche eventi virtuali come conferenze, concerti, incontri, ecc. Ad esempio su Second Life si è assistito al concerto degli U2, alla conferenza stampa del ministro Di Pietro, al concerto in diretta di Irene Grandi. Lo strumento di costruzione di Second Life permette di creare delle primitive che possono essere utilizzate per la costruzione di edifici, più in particolare per la costruzione di prefabbricati. Inoltre, grazie al linguaggio di programmazione di Second Life è possibile introdurre degli script per l'automatizzazione e la reazione passiva di questi edifici (domotica). 2.3 Prefabbricati La parola “prefabbricato” indica un elemento costruttivo che viene realizzato precedentemente, in stabilimento, e poi montato o assemblato con altri elementi nel luogo in cui verrà utilizzato [PRE08]. La tecnica della prefabbricazione è usata nella costruzione di edifici, di navi, di aerei, di automobili e qualsiasi tipo di veicolo o macchina dove elementi precedentemente assemblati vengono poi sottoposti al montaggio finale. In questo progetto, ci occuperemo di prefabbricati in ambito edilizio, ossia di prefabbricati che riguardino costruzioni di edifici. 17 Stato dell’arte Sempre in ambito edilizio nella categoria dei prefabbricati si può trovare la “modular home” (figura 2.9). Le “modular home” (case modulari) sono case divise in più moduli che vengono prefabbricati in uno stabilimento e poi portati sul luogo di costruzione dove vengono montati. Questi moduli sono indipendenti ma di solito vengono assemblati con altri moduli per ottenere un vero e proprio condominio. Il metodo convenzionale di costruzione di una casa consiste nel trasporto delle materie prime, come mattoni, cemento, sabbia, legno nel sito di costruzione. La costruzione avviene sul luogo e i tempi per la conclusione del lavoro sono spesso assai longevi. Utilizzando invece “materiali” prefabbricati le materie prime rimangono in fabbrica dove vengono in parte assemblate e successivamente vengono consegnate nel cantiere dove avverrà il montaggio finale. Questo metodo risulta più economico e veloce rispetto al tradizionale. Quando si parla di prefabbricati, non si intendono solo elementi strutturali, come travi, solai, pilastri, pannelli portanti ma anche elementi non strutturali (come facciate, tegole, ringhiere, pannelli non portanti, ecc.). Infatti, come si vede in figura 2.8, l’azienda costruttrice di prefabbricati arriva sul posto direttamente con le mura costruite e pronte al montaggio. Figura 2.8: Parete prefabbricata 18 Stato dell’arte Figura 2.9: Esempio di Modular Home 2.4 La domotica La domotica, detta anche in inglese “home automation”, è la scienza che si occupa di studiare le tecnologie atte a migliorare la qualità della vita nella casa grazie all’automazione ed il controllo di processi ripetitivi oppure poco performanti e all’integrazione dei sistemi [DOM08]. Il termine “domotica” è un neologismo derivato dal francese “domotique”, a sua volta contrazione della parola latina “domus”, che significa “casa” unita al sostantivo “automatica”, quindi significa “scienza dell’automazione delle abitazioni”. Ha dunque come oggetto di studio privilegiato proprio l’automazione della casa. Serve quindi a soddisfare tutte quelle esigenze, già in parte richieste alla normale dotazione domestica, che un utente si aspetta dalla propria casa. Ad oggi molti sistemi elettronici differenti sono utilizzati in maniera corrente nello spazio abitato, adempiendo ognuno a funzioni ben specifiche: il riscaldamento, l’illuminazione, la telefonia, le installazioni audio, la televisione, il videoregistratore, il citofono, i sistemi d’allarme, ecc. Come già spiegato, quando tutte queste funzionalità sono completate da mezzi d’informazione e sono integrate attraverso un unico sistema di gestione globale, si parla di domotica. 19 Stato dell’arte Un sistema di home automation coordina i vari impianti presenti nell’edificio con lo scopo sia di gestirli tutti omogeneamente da una o più stazioni di supervisione, ma anche di farli interagire ed aumentarne le prestazioni. In specifico si parla di integrazione impiantistica quando vi è l’eliminazione della separazione fra i diversi tipi di impianto installati in un edificio e la riorganizzazione in un unico sistema impiantistico multifunzione, gestito come un sistema programmabile capace di controllare, coordinare e comandare le singole funzioni. La domotica trova le sue radici negli anni settanta quando cominciarono ad essere studiati e realizzati i primi progetti che permettevano l’interconnessione di alcuni sistemi come l’impianto di illuminazione e quello di sicurezza. La tecnologia odierna rende più facile accettare l’introduzione di una nuova automazione all'interno delle nostre case, dove dispositivi di vario tipo potranno colloquiare tra loro, utilizzando probabilmente gli stessi paradigmi che regolano internet e divenendo così visibili ai propri utenti dai luoghi di lavoro, di vacanza, o magari dall’estero. I campi di applicazione della domotica riguardano tutte le funzionalità domestiche e vanno dall’home networking, ai servizi tesi al risparmio energetico, fino al well-being (benessere e salute). Per home network si intende indicare un ambito vasto in cui sono presenti e interagiscono l’informazione e la comunicazione, l’intrattenimento in generale, l’automazione, il confort, la sicurezza, il controllo della casa. Il mondo relativo alla salute ed al benessere della persona nell’abitazione, parte dalla premessa ergonomica di costruire una casa intelligente in grado di soddisfare i bisogni umani di base. In questa categoria rientrano i servizi legati alla salute in generale, all’alimentazione ed alle soluzioni per disabili e anziani. La domotica quindi si occupa di: • migliorare la qualità della vita; • migliorare la sicurezza sotto tutti i punti di vista; • risparmiare energia; • semplificare la progettazione, l’installazione, la manutenzione e l’utilizzo della tecnologia; • ridurre i costi di gestione; 20 Stato dell’arte • convertire i vecchi ambienti e i vecchi impianti. Lo scopo ultimo di un sistema della domotica è il controllo totale di tutti i servizi e la possibilità di realizzare nuove operazioni complesse, possibili solo nel caso in cui diversi sistemi semplici siano connessi e controllati in modo intelligente. Le aree di automazione possibili in una casa sono: • Gestione dell’ambiente • Gestione degli apparecchi • Comunicazione ed informazione • Sicurezza Ogni area è, a sua volta, suddivisa in sottoaree specifiche del settore. 2.4.1 Gestione dell’ambiente La gestione dell’ambiente comprende: climatizzazione (regolazione della temperatura, della velocità e dell’umidità dell’aria); riscaldamento dell’acqua sanitaria; illuminazione, illuminazione d’emergenza e alimentazione d’emergenza; distribuzione dell’energia elettrica e gestione dei carichi; irrigazione del giardino; gestione della piscina; azionamento di sistemi d’apertura e d’ingresso; gestione di scenari preprogrammati. Il comfort ambientale è tutto ciò che rende piacevole il soggiorno nella propria abitazione ed è stato una delle prime esigenze dell’utente ad originare l’idea di una casa intelligente. L’integrazione dei sistemi di controllo delle luci e del riscaldamento/condizionamento, porta all’ottimizzazione delle risorse energetiche adattando temperatura delle camere ed illuminazione alla effettiva presenza di persone al loro interno ed al tipo di attività che in quel momento praticano. L’impianto di irrigazione permette di programmare i tempi e gli orari 21 Stato dell’arte di funzionamento, tenendo in considerazione i fattori meteorologici. Se l’abitazione ha una piscina, l’impianto domotico permette di automatizzarne le funzioni in base alle abitudini o ai desideri degli utenti. 2.4.2 Gestione degli apparecchi domestici La gestione degli apparecchi domestici comprende: lavatrice e asciugatrice lavastoviglie frigoriferi e congelatori cucine e forni apparecchi idrosanitari, sauna, idromassaggio Secondo un requisito emergente, una casa non può dirsi intelligente se non consente di monitorare e controllare i vari consumi. L’utente sente sempre più il bisogno di saper ottimizzare le varie risorse, risparmiando denaro e lavoro proprio e altrui. Tale requisito si traduce nella necessità di sorvegliare: il consumo dell’energia elettrica, il consumo dell’acqua, il consumo del gas, l’utilizzo del telefono, l’utilizzo della TV e altri apparecchi domestici. La gestione automatizzata degli elettrodomestici consente un tangibile risparmio di energia elettrica e un più sicuro funzionamento degli stessi carichi, e questa é diventata ormai una necessità per l’aumento esponenziale dei dispositivi elettrici avutosi negli ultimi anni nelle nostre abitazioni e il conseguente potenziale consumo di picco che può manifestarsi, provocando black-out e danni reali all’impianto. 2.4.3 Comunicazione ed informazione La comunicazione e l’informazione comprendono: telefono analogico o VOIP segreteria telefonica citofono o videocitofono fax 22 Stato dell’arte comunicazioni interne (telefoniche o citofoniche) accesso Internet a banda larga trasmissione dati per controllo remoto, anche via SMS informazioni e svago con sistemi audio-video (televisori, radio, dvd player, ricevitore satellitare, ecc.) Un servizio che richiede spesso il cliente è quello di essere sempre “collegato” con la propria casa. La possibilità di utilizzare la rete telefonica per trasmettere dati qualsiasi ha costituito il fondamento della rivoluzione telematica. Attraverso il doppino telefonico, infatti, può passare qualsiasi tipo di informazione, purché preventivamente digitalizzata. Tale modalità di uso della linea telefonica ha reso possibile una serie infinita di servizi tra cui: la ricerca di informazioni, lo scambio rapido di testi, figure e sequenze multimediali, lo studio remoto, il lavoro remoto, transazioni commerciali, telesorveglianza e telesoccorso. L’utente richiede che i sistemi di accesso siano “user-friendly”, ossia semplici da usare e capire. Le comunicazioni interne date ad esempio dalla connessione audio tra due punti dell’appartamento consentono di comunicare in modo agevole a distanza o semplicemente ascoltare cosa succede in una stanza distante. Un tipico utilizzo è quello della sorveglianza di ammalati o bambini. In un sistema di comunicazione intelligente le chiamate telefoniche o citofoniche, interne o esterne, vengono automaticamente, e non indistintamente, indirizzate ai giusti apparecchi. 2.4.4 Sicurezza La sicurezza comprende: gestione accessi protezione antifurto, antintrusione, antirapina, perimetrale protezione antincendio, antiallagamento, da fumo o fughe di gas videocontrollo ambientale locale e a distanza telesoccorso e teleassistenza di persone sole, anziane, disabili o ammalate 23 Stato dell’arte La sicurezza è uno dei sevizi primari offerti dalla casa intelligente. Più in dettaglio, ci sono diversi tipi di sicurezza: 1. contro le aggressioni e le intrusioni dall’esterno (sicurezza antintrusione); 2. contro le situazioni malfunzionamenti di di emergenza apparecchiature dovute o a guasti o servizi tecnologici (sicurezza tecnologica); 3. contro le situazioni di emergenza di tipo medico, dovute a problemi di salute dell’utente (sicurezza medica). Esistono due tipi di sicurezza: la prima è “security”, la protezione da effrazioni ed intrusioni, la seconda è “safety”, la protezione da ogni forma di incidente domestico. La preoccupazione di prevenire il furto e l’intrusione nella propria abitazione sembra una delle esigenze primarie dell’uomo abitante, secondo il concetto di casa come protezione dall’esterno. Oltre a questa esigenza, a seguito della continua sofisticazione dei servizi, è richiesta una attenzione sempre maggiore nei confronti degli incidenti domestici e della sicurezza nell’uso delle apparecchiature della casa. Security: Il requisito generale è che i sistemi di controllo dell’appartamento siano in grado di segnalare tentativi di ingresso non autorizzato all’interno dell’appartamento ed opporsi attivamente al tentativo di effrazione / intrusione. Spesso vengono utilizzati sistemi di telecamere a circuito chiuso che consentono un efficace controllo degli accessi anche da remoto, sistemi digitali di controllo di accesso che consentono di dare autorizzazioni d’ingresso a persone anche in assenza del padrone di casa, sistemi di antifurto che consentono la rilevazione di ogni movimento importante avvenuto nella zona. Safety: Il requisito generale è che l’ambiente sia in grado di rilevare avarie nel funzionamento dei vari servizi dell’appartamento, e di opporre opportune procedure di emergenza nei casi di pericolo di incidente. La gestione dell’avaria è ovviamente diversa in base alla situazione, secondo la quale il sistema si comporta in modi diversi: disattivando un 24 Stato dell’arte elettrodomestico, togliendo l’acqua e spegnendo il gas al rilevamento di fuga o di perdita e, a casa occupata, emettendo un segnale acustico che avvisa del guasto o dell’interruzione del servizio. Alla categoria “safety” appartiene anche l’invio automatico di richieste di soccorso per via telefonica in caso di malori, utile soprattutto quando l’utente è una persona anziana o un soggetto a rischio che vive da solo. La casa domotica ha il compito di incrementare le due forme di sicurezza, salvaguardando l’utente dall’incappare in qualsiasi forma di incidente che lo possa danneggiare. Tutti i sistemi di sicurezza che difendono funzioni vitali devono essere intrinsecamente sicuri ed affidabili. Più tecnicamente, ogni sistema di sicurezza deve essere capace di funzionare anche in seguito al guasto di un qualsiasi componente del sistema stesso. Figura 2.10: Tecnologie presenti in una casa domotica 25 Progettazione 26 Progettazione 3 Progettazione La realizzazione di infrastrutture domotiche dovrebbe migliorare la qualità della vita di domani. Diventa perciò necessario un tool per lo studio e l’analisi di tali infrastrutture. Second Life è un ambiente che ben si presta a questo scopo perché ha gli strumenti per costruire oggetti 3D e dispone di un proprio linguaggio di programmazione. In particolare, non si vuole costruire un esempio di casa domotica a se stante, ma si vuole creare un kit di prefabbricati e script in modo che l’utente finale che utilizzerà il kit possa scegliere quale usare e quale no. Quindi il destinatario potrà crearsi la casa di suo gradimento e applicargli le applicazioni domotiche che preferisce. 3.1 Kit di prefabbricati Si vuole creare un kit di prefabbricati perché si vuole dare all’utente la possibilità di crearsi un edificio senza perdere tempo nella costruzione. Innanzitutto è necessario creare un kit di prefabbricati con il quale un utente possa costruire ogni tipo di edificio. Questo kit deve comprendere le unità base della costruzione, come ad esempio muri, colonne, finestre, ecc. che composte possano formare svariati tipi di edifici. Second Life mette a disposizione le “prim” (figura 3.1), ossia delle figure solide primitive come il cubo, il cilindro, la sfera, ecc. che sono i mattoni con cui si può costruire. 27 Progettazione Figura 3.1: Prim Queste primitive possono essere modificate a partire dalla dimensione fino alla modifica delle texture e del colore. Ad esempio, partendo da un semplice cubo lo si può modificare trasformandolo in un parallelepipedo e gli si può applicare a ognuna delle sue facce una texture differente. Le texture possono essere comprate nel mondo virtuale di Second Life oppure possono essere create sul proprio computer e inviate al proprio personaggio spendendo dieci Linden dollar. Le primitive possono essere assemblate tra di loro realizzando così una moltitudine di oggetti di qualsiasi forma. Ogni prefabbricato sarà quindi composto da una o più prim legate tra loro. In questo modo anche una persona che non è esperta nella costruzione di oggetti in Second Life si troverà in mano un set di oggetti precostruiti già pronti all’utilizzo e dovrà solo assemblarli. Nel mondo esistono dei luoghi chiamati “SandBox” che permettono agli utenti di costruire. Molte di queste sandbox sono vincolate da alcuni parametri, per cui se un utente volesse costruire in piena libertà dovrebbe comprarsi un terreno. 3.2 Kit di script per la domotica Lo scenario di una applicazione domotica è quello di un edificio in cui tutti gli impianti sono integrati e controllati tramite un software personalizzato: dando uno sguardo a un monitor possiamo verificare in tempo reale se ci sono luci accese, qual è la temperatura in ogni stanza, osservare se ci sono intrusi in casa, controllare che l’irrigazione sia in funzione, il gas spento, le finestre chiuse, ecc. Una casa domotica ci garantisce quindi: sicurezza, controllo dei comfort, risparmio energetico, assistenza e molto altro ancora. Uno schema riassuntivo sulla domotica è illustrato nella figura 3.2. 28 Progettazione Figura 3.2: Schema domotica[CPL08] 29 Progettazione La seconda parte di questo progetto riguarda la creazione di un set di script per la realizzazione di applicazioni domotiche. Queste applicazioni riguardano i seguenti campi della domotica: • HVAC • Lighting • Audio • Video • Security • Communication • Robotics HVAC: Heating, Ventilation and Air Conditioning. In questo settore vengono inclusi tutti i controlli ambientali come quelli di temperatura e di umidità. Lighting: il controllo dell’impianto d’illuminazione comprende accensione/spegnimento luci con sensori di presenza, regolazione della luminosità in funzione della luce ambientale. Audio: il controllo dell’impianto audio comprende accensione/spegnimento del sonoro in relazione alla presenza o meno di una persona e suono distribuito “multi - zone”, ossia audio multi stanza. Video: il controllo dell’impianto video come per quello audio comprende accensione/spegnimento video in relazione alla presenza e video distribuito “multi - zone”, ossia una sorgente video trasmessa su più TV. Security: il controllo dei sistemi di sicurezza è senza alcun dubbio il settore più importante della domotica. Esso comprende rilevazione di intrusi, sensori di presenza, sensori di chiusura/apertura porte e finestre, rilevamento di principi di incendio, fughe di gas e perdite d’acqua. Communication: la comunicazione permette il controllo remoto di tutte le apparecchiature domotiche presenti nella casa e l’invio di segnalazioni di un qualsiasi tipo di allarme. Robotics: controllo di robot domestici presenti nella casa. 30 Progettazione Per simulare tutti questi settori della domotica sarà utilizzato il Linden Script Language (LSL) che è il linguaggio di programmazione di Second Life con il quale si possono assegnare dei comportamenti agli oggetti. Questo linguaggio è un linguaggio ad eventi ed è molto simile al linguaggio di programmazione C. 3.3 Costruire in Second Life Nei seguenti paragrafi analizzeremo le tecniche e le problematiche relative alla costruzione in Second Life. 3.3.1 Primitive (prim) Le primitive grafiche (chiamate anche prim) sono gli elementi base delle costruzioni di Second Life. Se si immagina ogni oggetto di Second Life come una costruzione fatta con dei mattoncini, ogni singolo mattoncino è una “primitiva”. Le primitive possono avere varie forme, essere modificate (colorate, allungate, accorciate, ingrandite, ecc.) e assemblate tra loro. Una prim può assumere le forme tridimensionali: cubo, cilindro, prisma, sfera, tubo, anello. Creare una primitiva significa materializzarla. Gruppi di singole prim collegate fra loro formano gli oggetti di base come: tavoli, veicoli, edifici, abbigliamento che poi verranno completati con le texture per assumere il loro aspetto definitivo. Le costruzioni più complesse hanno un elevato numero (nell’ordine delle decine o centinaia) di primitive. Cifre così elevate non dipendono solamente dalle dimensioni della costruzione, ma dalla sua complessità e dall’abilità di costruzione dell’utente. Un abile costruttore, infatti, utilizza un numero inferiore di primitive rispetto a un comune utente. Questo è preferibile dato che ogni area di terreno ha un limite massimo di primitive che può ospitare (vedi tabella 3.1). 31 Progettazione Tabella 3.1: Limiti prim per metro quadrato Metri quadrati Numero massimo primitive 512 117 1024 234 2048 468 4096 937 8192 1875 16384 3750 32768 7500 65536 15000 Le dimensioni massime ufficiali per una primitiva sono di 10 metri su ogni lato, mentre le minime sono di un millimetro. Si può quindi creare un cubo con dimensioni massime 10x10x10 metri oppure dimensioni minime di 0.001x0.001x0.001 metri. Se si necessita di una prim con dimensioni maggiori, si può ricorrere alle MegaPrim. 3.3.2 MegaPrim Le megaprim sono primitive di dimensioni superiori ai 10 metri per lato. Non possono essere create ma si possono solo usare quelle esistenti. Viene quindi spontanea una domanda: da dove provengono le megaprim presenti in Second Life? Inizialmente le limitazioni delle dimensioni delle primitive erano solamente client-side, in altre parole nel programma c’era un semplice blocco che impediva di scegliere determinate misure. Bastava quindi usare un client modificato per aggirare la limitazione dei 10 metri. Successivamente poi queste restrizioni sono state applicate lato server, per cui, anche se il client invia dimensioni non standard, il server le rifiuta. Ovviamente le vecchie megaprim sono rimaste su Second Life ma non è possibile agire sulle loro dimensioni. 32 Progettazione Naturalmente non sono supportate dalla Linden Lab. Questo significa che nel caso creino problemi ai server, saranno rimosse senza preavviso dalla Linden Lab la quale non ne garantisce la restituzione al proprietario. 3.3.3 Sculpted Prims e Sculpted Maps Le sculpted prims sono oggetti tridimensionali come lo sono le normali prims. Questi oggetti di Second Life sono composti da vertici e poligoni. Più precisamente una sculpted prim è rappresentata da 1024 vertici modificabili dall’utente tramite delle texture speciali chiamate “Sculpted Maps”. Queste texture definiscono le coordinate XYZ di ogni vertice. Una texture per sculpted prim è una texture standard RGB (Red Green Blue) dove i canali R, G e B sono mappati in X, Y e Z. Queste speciali texture sono immagini quadrate in cui ogni pixel assume un colore che viene poi tradotto come coordinata (figura 3.3). Per creare una sculpted map è necessario avere un programma di grafica 3D (3D Studio Max, Blender o simili) che permetta di crearla calcolandola dall’oggetto che si vuole importare in Second Life. Per realizzare queste speciali texture viene usato un procedimento chiamato “Texture Mapping” (figura 3.4). Il texture mapping è un processo che permette di avvolgere immagini 2D piatte su un oggetto tridimensionale. Nella figura 3.4 la sfera viene mappata con una texture quadrata. La difficoltà principale nel creare delle sculpted maps non è realizzare gli oggetti, ma mapparli perfettamente con una texture quadrata. 33 Progettazione Figura 3.3: Sculpted Map Una volta creata la speciale texture, si può fare l’upload dell’immagine su Second Life a un costo pari a dieci Linden dollar. Ora non resta che applicare la sculpted map a un qualsiasi oggetto per trasformarlo così in una sculpted prim (figura 3.5). Figura 3.4: Esempio di Texture mapping 34 Progettazione Figura 3.5: Sculpted prim di un vaso Per applicare questa speciale texture è necessario selezionare “Sculpted” dal menu a tendina nella scheda “Object” dell’oggetto. Con le sculpted prims si possono ricreare forme complicate e curvilinee che non sono possibili creare con il normale sistema di prim di Second Life. Il vantaggio di usare le sculpted prims è che l’oggetto ottenuto verrà considerato come un’unica prim e quindi si ridurrà notevolmente il numero di prim utilizzate. 3.3.4 Grid Unit e Ruler Mode La grid unit e il ruler mode sono strumenti utilizzati per la costruzione degli oggetti servendosi di unità di misura. 3.3.4.1 Grid Unit La grid è una guida dentellata che misura gli spostamenti della prim. 35 Progettazione Figura 3.6: Grid Options Le Grid Unit costituiscono la misura che determina l’unità della dentellatura della grid. Di default sono pari a 0.5 metri e si suddividono in multipli e sottomultipli di 0.5 che sono visibili in quantità maggiore se si avvicina la visuale (camera). Variando le opzioni dell’unità di misura della grid è possibile spostare la prim con misure personalizzate ma limitatamente alle dimensioni massime e minime di una prim (10 metri e 0.001 metri). Alcune funzioni della grid mostrate anche in figura 3.6 sono: • Grid Extends: regola la lunghezza della Grid • Subunit Snapping: permette nello spostamento a scatti di usare le Subunit (sottounità di 0.500) • Show Cross Sections: attiva dei piani di intersezione per l’orientazione. 3.3.4.2 Ruler Mode Il Ruler Mode (modalità righello) fornisce l’orientamento delle coordinate della primitiva. Si può modificare dalla finestra “edit” in modalità build e possiede tre opzioni: • World (mondo) • Local (locale) • Reference (referenziata) 36 Progettazione World: è il riferimento di default all’ambiente circostante, gli assi di spostamento della primitiva sono paralleli alle coordinate del mondo (Sim), quindi l’orientamento degli assi di spostamento della prim segue quello del mondo. Local: il sistema di riferimento non è il mondo ma il prim stesso. Questa modalità diviene utile quando nella duplicazione di una primitiva ruotata è necessario, con un movimento lungo lo stesso asse “x”, far combaciare perfettamente la superficie della prim duplicata con quella originaria. Reference: il sistema di riferimento è referenziato a un terzo oggetto non allineato al mondo. È utile quando è necessario spostare degli oggetti avendo come riferimento lo stesso oggetto referenziato. Ad esempio, se in una casa con delle mura non allineate alla grid, occorre spostare dei mobili avendo come riferimento le stesse mura. 3.3.5 Link di Prim In Second Life è possibile collegare (link) fino a 256 primitive. Le prim non devono necessariamente essere accostate tra loro, ma possono essere anche lontane. In modalità “edit” selezionando le prim che si vogliono linkare e premendo i tasti Ctrl+L, queste verranno collegate tra loro. Una volta terminata l’azione tra tutte le prim collegate solo una rimarrà di colore giallo (figura 3.7), il che sta ad indicare che quella è la prim “root”, ossia la prim principale che comanda le altre. Quando si andrà a spostare l’oggetto, le coordinate XYZ sono relative alla prim root e non all’oggetto completo. Questo fatto comporta anche la modifica di un qualsiasi parametro come l’assegnazione della texture o l’esecuzione di uno script. Infatti, cambiando la texture alla prim root, essa farà cambiare anche le texture di tutte le prim a lei collegate. 37 Progettazione Figura 3.7: Prim link Per scollegare le prim precedentemente collegate è sufficiente premere i tasti Ctrl+Shift+L. 3.3.6 Dove costruire Per costruire nel mondo virtuale di Second Life si possono scegliere due strade: • Costruire in una SandBox • Comprare un terreno e costruirci sopra 3.3.6.1 Le SandBox La prima strada solitamente viene scelta dagli utenti che non dispongono di una terra su cui costruire. Questi terreni chiamati “SandBox” offrono la possibilità a chiunque di costruire oggetti in quasi completa libertà. Infatti, in questi posti spesso vengono stabilite delle regole come non costruire oggetti esageratamente grossi o vendere la propria merce. Chiunque non rispetti queste regole può essere cacciato (bannato) all’istante dalla SandBox. Inoltre una 38 Progettazione sandbox viene ripulita (resettata) da tutti gli oggetti dopo un certo intervallo. Risulta quindi consigliato salvare le proprie creazioni nell’inventario. Esistono molte SandBox sparse per il mondo di Second Life e cercarle è molto semplice: è sufficiente scrivere nel motore di ricerca di Second Life la parola “sandbox”. Alcune sandbox che si possono trovare sono ad esempio “Sandbox Island”, “Public Sandbox”, “Alien Nation 2.0”. 3.3.6.2 Comprare un terreno L’altra strada che si può scegliere è quella di comprarsi un terreno. Per fare questa operazione è necessario essere utenti premium, il che comporta il pagamento di un abbonamento mensile. Prima di comprare il terreno è consigliabile contare il numero di primitive che gli si vogliono mettere sopra. Questo perché come mostrato dalla tabella 3.1, il numero di primitive che si possono costruire dipende dai metri quadrati del terreno. Per cercare terreni in vendita è sufficiente scrivere la parola “Land sales” nel motore di ricerca di Second Life. 3.3.7 Come costruire Second Life mette a disposizione dell’utente uno strumento di creazione e modifica di oggetti 3D. Cliccando il tasto “build” presente nella barra in basso apparirà l’interfaccia di costruzione oggetti (figura 3.8). Di default viene caricata la pagina “Create”. 39 Progettazione Figura 3.8: Finestra create Da questa è possibile scegliere quale figura base (primitiva) si vuole creare: cubo, cilindro, sfera, ecc. Tra queste figure sono presenti anche primitive non base che sono derivate dalle primitive di partenza. Ad esempio si può trovare la semisfera e la rampa. Per creare l’oggetto è sufficiente selezionare la figura che si desidera costruire e cliccare nella posizione del terreno dove si vuole metterla. Adesso si può entrare nella pagina “Edit” (figura 3.9) che consente di apportare modifiche a tutti i parametri del solido selezionato. Figura 3.9: Finestra Create 40 Progettazione Qui è possibile spostare, ruotare e ridimensionare l’oggetto selezionato. Tra i parametri presenti si può trovare: Position: selezionando questa opzione appariranno tre frecce lungo i tre assi: rosso per le X, verde per le Y e blu per le Z. Cliccando sulle frecce è possibile spostare l’oggetto trascinandolo lungo l’asse scelto. Rotate: selezionando questa opzione o mantenendo premuto il tasto Ctrl appariranno le sfere di rotazione. Selezionando e trascinando le sfere di rotazione si potrà ruotare liberamente l’oggetto lungo tutti e tre gli assi. Stretch: selezionando questa opzione o mantenendo premuti Ctrl+Shift apparirà il box di ridimensionamento. Selezionando e trascinando una delle maniglie rossa/verde/blu verranno ridimensionate le rispettive misure (lunghezza/larghezza/altezza). Inoltre selezionando e trascinando una delle maniglie bianche poste agli angoli del box si potrà ridimensionare l’intero oggetto proporzionalmente. Sempre nella finestra di “Edit” è possibile cliccare sul tasto “More” il quale aggiunge opzioni di modifica avanzate. Comparirà un’interfaccia aggiuntiva divisa in più schede (figura 3.10). 41 sottostante Progettazione Figura 3.10: Finestra Edit aggiuntiva Nella scheda General è possibile visualizzare il nome dell’oggetto, il numero delle primitive che lo compongono, il nome del suo creatore e quello del proprietario (dei quali è possibile vederne anche il profilo). Inoltre da questa scheda è possibile assegnare i permessi sull’oggetto che si vogliono dare agli altri utenti o al prossimo owner (proprietario) nel caso l’oggetto venga venduto o semplicemente regalato. Alcuni di questi permessi sono: • Modify: l’oggetto può essere modificato • Copy: l’oggetto può essere duplicato • Resell/Give away: l’oggetto può essere trasferito ad altri o venduto 42 Progettazione La scheda Object (Oggetto) presenta molte opzioni in più per trasformare la forma di base della primitiva originaria. Si possono modificare posizione, dimensione e rotazione inserendo le coordinate specifiche XYZ. Le coordinate hanno sempre come riferimento il centro dell’oggetto. All’oggetto possono essere date le proprietà Locked, Physical, Temporary e Phantom. • Locked: blocca l’oggetto, non può essere mosso o spostato • Physical: l’oggetto risponde alla forza di gravità, alle collisioni, ecc. • Temporary: l’oggetto è temporaneo e dopo un certo tempo cesserà di esistere • Phantom: l’oggetto può essere attraversato Sono presenti poi altre opzioni di modifica 3D dell’oggetto come: • “Path Cut Begin and End”: serve per eliminare una fetta dell’oggetto lungo l’asse Z specificando inizio e fine del taglio • “Hollow”: inserisce una cavità al centro dell’oggetto, della quale si seleziona la dimensione • “Twist Begin and End”: introduce delle torsioni curvando la forma dell’oggetto La scheda Features serve per cambiare le caratteristiche dell’oggetto. Gli oggetti di base sono tutti rigidi. Con le opzioni presenti in questa scheda si può rendere un oggetto flessibile. Tra i parametri disponibili ci sono il vento, la morbidezza, la gravità, la tensione. La scheda Texture viene utilizzata per assegnare una texture e un colore all’oggetto. Oltre a scegliere la texture è possibile decidere quante volte ripeterla per ogni faccia dell’oggetto, di quanto ruotarla, ecc. Nella scheda Content (contenuto) si possono inserire script, texture, suoni, oggetti, ecc. Nel caso si crei uno script che richiami un elemento esterno come un suono, questo deve essere inserito nella scheda Content. 43 Progettazione 3.4 Il Linden Script Language (LSL) Il Linden Script Language è un semplice ma potente linguaggio che viene utilizzato in Second Life per le azioni, le reazioni, le interazioni e le funzionalità del mondo. Con questo linguaggio i residenti possono realizzare contenuti interattivi nel mondo rendendolo meno statico e più vivibile. Per creare da zero uno script è sufficiente entrare in modalità build e creare un oggetto. In seguito nella finestra di “Edit” selezionare la scheda “Content” e cliccare il pulsante “New Script”. Di default il sistema non crea uno script vuoto, ma viene creato il codice in figura 3.11. Lo stato “default” è lo stato in cui entra uno script quando è eseguito per la prima volta o al reset. Lo script inizia con questa parola chiave, sempre con uno e un unico stato. Figura 3.11: Default script 44 Progettazione L’evento “state_entry” viene invocato quando si entra in uno stato (in una transizione di stato) e quando si entra nello stato di default al Save o Reset dello script. È sempre il primo evento a essere invocato quando si passa nel nuovo stato, anche se questo presenta altri gestori di eventi. Questo evento non viene invocato quando viene creato l’oggetto, in quanto lo stato di un oggetto viene memorizzato quando questo viene preso in inventario e ripristinato alla sua creazione. L’evento “touch_start” viene invocato quando un avatar “tocca” l’oggetto, ossia quando l’oggetto viene cliccato. La funzione “llSay” invia una stringa di testo su un canale di trasmissione ed è così composta: llSay (integer channel, string text) L’integer channel nell’esempio in figura 3.11 è 0 e definisce il canale con cui lo script comunica. Il canale 0 è riservato per la chat pubblica. Tutto quello che viene scritto su questa chat è visibile a chiunque. I canali da 2 a 2.147.483.648 sono canali privati. La “string text” è il testo che la funzione llSay invierà sul canale 0. Essendo inserita nella funzione “llSay”, la stringa sarà recepibile per un raggio di 20 metri dall’oggetto. 3.4.1 Le variabili In LSL una variabile è un elemento che può memorizzare un dato. Questa variabile può salvare una sequenza di caratteri alfanumerici (stringa), un valore numerico, ecc. Ogni variabile è definita da un tipo, da un nome univoco, e da un valore. Le tipologie di variabili presenti in LSL sono le seguenti: • String: una sequenza di caratteri • Vector: un vettore composto di tre componenti di tipo float <x,y,z>. Utilizzato per rappresentare una posizione, un colore, o una rotazione di Eulero • Integer: un numero intero 45 Progettazione • Float: un numero con la virgola • List: un elenco di dati • Rotation: una rotazione data da un vettore a quattro componenti di tipo float <x, y, z, s> • Key: un UUID, un identificativo univoco universale. Una stringa utilizzata per identificare qualsiasi cosa (oggetti, avatar, texture, ecc.) in Second Life. Il nome di una variabile deve obbligatoriamente iniziare con una lettera e non con un numero o caratteri speciali. Inoltre, i nomi sono case-sensitive, ossia le lettere minuscole vengono considerate diverse da quelle maiuscole. 3.4.2 Gli stati Gli stati sono definiti dalla parola chiave “state nomestato” e da uno stato speciale definito dalla parola chiave “default”. In ogni script deve essere presente lo stato “default”. Lo script comincia con questo stato che deve venire prima di ogni altro stato. All’interno degli stati sono specificati i vari gestori degli eventi che lo stato cattura ricevendo messaggi dalla virtual machine che esegue gli script sul server. 3.4.3 Le costanti Le costanti sono valori predefiniti nel linguaggio di Second Life e non possono essere cambiate. Alcuni esempi di costanti presenti sono: • PI: costante “pi greco” matematica • DEG_TO_RAD: converte i gradi in radianti • SQRT2: radice quadrata di 2 • TRUE e FALSE: 1 e 0 per operazioni booleane 46 Progettazione 3.4.4 Gli eventi Il linguaggio di Second Life è un linguaggio orientato agli eventi. In uno script vengono inseriti blocchi di codice che vengono richiamati al verificarsi di un evento. Alcuni esempi di eventi sono: • touch_start: invocato quando un avatar “tocca” l’oggetto, ossia quando l’oggetto viene cliccato • timer: invocato ad ogni intervallo di tempo specificato da “llSetTimerEvent” • sensor: invocato quando le chiamate a “llSensor” o “llSensorRepeat” producono risultati nel raggio d’azione • on_rez: invocato quando un oggetto viene “rezzato” (creato) 3.4.5 Le funzioni Second Life mette a disposizione oltre 400 funzioni predefinite che permetto agli oggetti di interagire con l’ambiente circostante e anche di comunicare con l’esterno (ad esempio utilizzando l’e-mail). Tutte queste funzioni hanno un nome che inizia con “ll”: due “L” minuscole che stanno per “Linden Library”. Questo non implica che l’utente possa crearsi le proprie funzioni partendo da zero e chiamandole con il nome che preferisce. 3.4.6 I controlli di flusso In LSL sono disponibili i comuni controlli di flusso che sono presenti anche nei linguaggi più famosi e diffusi. I controlli presenti sono: “if-else”, “for”, “while-do while”, “jump”, “return”, “state”. 47 Implementazione 48 Implementazione 4 Implementazione In questo capitolo verranno analizzati gli aspetti implementativi, ossia come si è realizzato questo progetto nel mondo virtuale di Second Life. 4.1 Costruzione di prefabbricati Per la costruzione di elementi prefabbricati è stato utilizzato l’editor grafico di Second Life. Innanzitutto si sono cercati gli elementi base che compongono un edificio, come mura, tetti, finestre, porte, ecc. da riprodurre su Second Life. Il kit finale realizzato comprende un set di: • Archi • Ascensore • Colonne • Cupole • Finestre • Mura • Porte • Scale • Terrazzi • Tetti 49 Implementazione Nel campo edilizio esistono degli standard riguardanti le dimensioni (porte, finestre), gli spessori delle mura, ecc. Quello che si è pensato di fare è stato di rispettare quindi questi standard, costruendo qualcosa il più corrispondente possibile alla realtà. Second Life come già spiegato dispone di un’unità metrica che torna molto utile per la costruzione. Tuttavia nel mondo virtuale praticamente tutto, dalle case alle persone, è leggermente più grande rispetto al mondo reale. Questo implica quindi un aumento delle dimensioni dei prefabbricati. Se una porta nel mondo reale è alta 2 metri, su Second Life sarà almeno di 2,8 metri. Si sono scelte le seguenti misure, cercando di rimanere in proporzione con quelle reali: • Porte: 1,5 x 2,8 metri (larghezza x altezza) • Finestre: 1,5 x 2 metri (larghezza x altezza) • Mura: 10 x 3,8 x 0,3 metri (larghezza x altezza x profondità) • Pavimenti/soffitti: 10 x 0,3 x 10 metri (larghezza x altezza x profondità) Per le dimensioni del pavimento si sono scelte le dimensioni massime che può avere una prim (10 x 10 metri), in modo che se si vuole costruire, per esempio, un grosso edificio vengano utilizzate il minor numero di primitive. Per i pavimenti, inoltre, sono state scelte le misure intermedie 5x0,3x5 e 5x0,3x10 metri. Volendo costruire delle mura prefabbricate queste devono comprendere delle cavità per poterci inserire porte e finestre. Risulta necessario quindi realizzare un set di mura che comprenda tutte le possibili combinazioni, ad esempio muro con singola porta, muro con porta e finestra, ecc. Si sono costruite quindi le seguenti mura con cavità: porta centrale, porta laterale, finestra centrale, finestra laterale, porta centrale con due finestre ai lati, porta e finestra, due finestre, due porte, senza cavità, ¼ di cerchio, ½ di cerchio, ¾ di cerchio. Queste combinazioni riguardano sia le mura larghe 10 metri sia quelle di 5 metri. 50 Implementazione Figura 4.1: Esempio di elementi costruiti Ad ogni elemento prefabbricato non sono state assegnate texture, o meglio si è lasciata quella di default di Second Life (legno chiaro). Per quanto riguarda le rampe di scale si sono costruite: • la gradinata classica (in molte varianti) • la scala a chiocciola • la rampa La larghezza di ogni gradino è di 2 metri e l’altezza è di 0,41 metri. Questa altezza garantisce un numero di gradini pari a dieci per ogni piano dell’edificio. Le porte realizzate o meglio gli script di movimento realizzati riguardano tre tipi di apertura: • A cerniera • Scorrevole • Di tipo ponte levatoio Con questo kit di elementi prefabbricati è possibile costruire svariati tipi di edifici come ad esempio quello in figura 4.2. 51 Implementazione Figura 4.2: Esempio di casa costruibile con i prefabbricati 4.2 Creazione di script per la domotica Come già spiegato, si vogliono realizzare script separati che riguardano i seguenti campi della domotica: • HVAC • Lighting • Audio • Video • Security • Communication • Robotics Questi script sono stati realizzati con il linguaggio di programmazione di Second Life: il Linden Script Language (LSL). 52 Implementazione 4.2.1 HVAC Questo campo della domotica non può essere realizzato su Second Life in quanto, non è presente temperatura o umidità dell’ambiente. 4.2.2 Lighting Il controllo dell’impianto d’illuminazione deve comprendere accensione/spegnimento luci con sensori di presenza, regolazione del colore e della luminosità. Per implementare questa tecnologia è necessario disporre di un sensore che rilevi la presenza di persone e che faccia accendere/spegnere le luci. Per far questo è stata utilizzata la funzione “llSensorRepeat” la quale ha due eventi “sensor” e “no_sensor” (figura 4.3). Figura 4.3: Script llSensorRepeat La funzione “llSensorRepeat” è così composta: llSensorRepeat (string name, key id, integer type, float range, float arc, float rate) 53 Implementazione Questa funzione esegue la scansione di un singolo nome e ID, la tipologia dell’entità che deve essere rilevata, il range in metri, l’arco in radianti e la frequenza di scansione in secondi. Nell’esempio in figura 4.3 la scansione viene effettuata ogni secondo su un raggio di 5 metri di una semisfera. Vengono rilevati solo agenti, ossia avatar, senza specificazione di nome e id. La sfera di scansione, decidibile con il raggio e l’arco, ha come centro il centro degli assi dell’oggetto in cui è inserito lo script. Gli eventi “sensor” e “no_sensor” vengono invocati quando il sensore rileva la presenza o meno di un avatar. In questi eventi sono stati quindi inseriti gli script di accensione/spegnimento. Per dare l’impressione che la luce si accenda e si spenga è stata usata la funzione “llSetColor”. Con questa funzione è possibile dare un colore a una o più facce dell’oggetto. Il colore va espresso come vettore dove <0.0,0.0,0.0> corrisponde al nero, mentre <1.0,1.0,1.0> corrisponde al bianco. Ad esempio i colori scelti sono: <1.0, 1.0, 0.5> per lo stato acceso e <0.2, 0.2, 0.2> per lo stato spento (figura 4.4). Figura 4.4: Luce accesa/spenta Si vuole inoltre poter cambiare il colore della luce e variarne la luminosità. Per cambiare colore è sufficiente creare tanti vettori quanti sono i colori che si vogliono rappresentare, mentre per il cambio di luminosità è stato scelto l’intervallo 0,25 per ogni componente RGB. Ad ogni incremento/decremento della luminosità viene aggiunto/sottratto 0,25 ad ogni componente RGB. Questo intervallo comporta sette livelli differenti di 54 Implementazione luminosità. I colori disponibili invece sono cinque: giallo (caricato di default), bianco, rosso, verde, blu. Per poter cambiare colore o luminosità occorre interagire con l’oggetto. Per impartire comandi all’oggetto è stata utilizzata la funzione “llListen” con l’evento “listen” (figura 4.5). Figura 4.5: Funzione llListen La funzione “llListen” è così composta: llListen (integer channel, string name, key id, string message) Questa funzione rileva stringhe scritte sul canale della chat selezionato. Nell’esempio in figura 4.5 l’oggetto è in ascolto sul canale 0 per i messaggi “accendi” e “spegni”. L’evento “listen” viene invocato quando un avatar o un oggetto “dice” qualcosa in un canale della chat. I canali sono circa due milioni, il canale 0 corrisponde alla chat pubblica ed è quello usato appunto da tutti gli avatar per scrivere messaggi visibili a tutti. Gli altri canali sono nascosti, cioè quello che viene scritto non viene visualizzato dagli altri, ma può essere però intercettato da appositi script. Per “parlare” su un canale diverso dallo 0 occorre anteporre al messaggio il carattere “/” seguito dal numero del canale scelto. Ad esempio se si vuole parlare sul canale 123 è sufficiente scrivere: /123 ciao!. 55 Implementazione Per fare in modo che un oggetto comunichi attraverso questi canali, si possono usare differenti funzioni come: • llWhisper: il messaggio verrà recepito in un raggio di 10 metri dall’oggetto • llSay: il messaggio verrà recepito in un raggio di 20 metri dall’oggetto • llShout: il messaggio verrà recepito in un raggio di 100 metri dall’oggetto • llRegionSay: il messaggio verrà recepito in tutta la regione Altri metodi per spedire messaggi senza l’utilizzo di canali sono: • llOwnerSay: il messaggio verrà recepito soltanto dal proprietario dell’oggetto • llInstantMessage: invia un IM (instant message) • llEmail: invia una e-mail Impartendo quindi un particolare ordine su un determinato canale di comunicazione è possibile far cambiare colore o luminosità alla lampada. Inoltre sono stati aggiunti comandi per la variazione del raggio d’azione del sensore e l’attivazione/disattivazione del sensore. Di default lo stato del sensore è attivo, il raggio è di 5 metri e il colore è il giallo. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.3 Audio Per trasmettere tracce audio su Second Life ci sono due modalità: • Streaming audio • Fare l’upload di file audio Per poter fare streaming audio in Second Life occorre essere proprietari di un terreno. Infatti, una volta comprato un terreno tra le tante opzioni c’è la possibilità di scegliere la sorgente streaming che si preferisce. La musica verrà sentita in tutta la land (terra). Il secondo caso è molto più economico. Infatti, qualunque utente, sia che possegga un terreno sia che non lo possegga, può fare l’upload dal proprio 56 Implementazione computer di file audio al prezzo di 10 Linden dollar (circa 3 centesimi di euro). Si possono inviare però frammenti di file per una durata massima di 10 secondi l’uno. Uno dei principali motivi per cui esiste questa limitazione, è che in questo modo sono state disincentivate (almeno in parte) le violazioni di copyright. Non essendo proprietario di nessun terreno, per implementare la parte audio è stata scelta quindi la seconda strada. Si vuole realizzare un Jukebox che consenta la selezione delle tracce audio, del volume e che si accenda/spenga nel caso rilevi la presenza di una persona. Innanzitutto va considerato che le tracce da riprodurre hanno una lunghezza costante di soli 10 secondi. Si deve quindi introdurre un timer che riproduca una traccia ogni 10 secondi. Per far questo è stata utilizzata la funzione “llSetTimerEvent” con l’evento “timer”. La funzione “llSetTimerEvent” ha come unico parametro i secondi che devono passare dopo i quali viene chiamato l’evento “timer”. Mettendo questo parametro a 10 secondi l’evento timer verrà così invocato ogni 10 secondi. Per non violare i diritti d’autore sulle canzoni riprodotte si è scelto di prendere 20 secondi per ciascuna canzone. Risultano così due file audio per ogni canzone, ognuno della durata di 10 secondi. Serve inoltre sapere il numero totale delle tracce presenti nell’oggetto. La funzione “llGetInventoryNumber” restituisce il numero di file trovati nell’inventario dell’oggetto. Come parametro accetta il tipo di file che deve essere cercato e può essere: • INVENTORY NONE • INVENTORY ALL • INVENTORY TEXTURE • INVENTORY SOUND • INVENTORY LANDMARK • INVENTORY CLOTHING • INVENTORY OBJECT • INVENTORY NOTECARD 57 Implementazione • INVENTORY SCRIPT • INVENTORY BODYPART • INVENTORY ANIMATION • INVENTORY GESTURE Specificando come parametro “INVENTORY_SOUND” verranno contati solamente i file audio trovati. Utilizzando questa funzione inoltre si potranno aggiungere altre canzoni all’oggetto senza modificare lo script. Per far partire la riproduzione delle tracce audio è stata usata la funzione “llPlaySound”. Tale funzione è così composta: llPlaySound(string sound, float volume) La stringa “sound” indica il nome del file audio e il float “volume” indica il livello di volume con cui verrà riprodotto il file. Per il volume sono accettati i valori da 0.0 a 1.0. Tutte le chiamate alla funzione verranno ignorate fino a quando il primo suono non è stato eseguito completamente. Se viene invece utilizzata la funzione “llSetSoundQueueing”, il suono successivo verrà messo in coda ed eseguito appena la riproduzione del precedente è terminata. Per fermare invece la riproduzione è stata usata la funzione “llStopSound”. Tutte i file audio eseguiti da “llPlaySound” devono essere inseriti nell’oggetto che contiene lo script. Questo comporta che più ci si allontana dall’oggetto più il suono diminuirà. La propagazione del suono assume una forma sferica centrata nel centro dell’oggetto. L’intensità del suono rispetto al centro dell’oggetto è decrescente all’aumentare del raggio della sfera centrata in esso (figura 4.6). 58 Implementazione Figura 4.6: Propagazione del suono Per quanto riguarda il sensore di presenza è stata usata la funzione “llSensorRepeat” e gli eventi “sensor” e “no_sensor”come realizzato per le luci. I comandi vengono impartiti all’oggetto tramite i canali di comunicazione e riguardano attivazione/disattivazione del sensore, modifica del raggio d’azione, selezione della canzone e modifica del volume. Di default lo stato del sensore è attivo, il raggio è di 5 metri, la canzone è la prima e il volume è al massimo (1.0). Questi comandi verranno trattati più approfonditamente nel capitolo 5. 59 Implementazione 4.2.4 Video Per trasmettere filmati in streaming come per l’audio è necessario possedere un terreno. Non avendo tale possibilità si è quindi tralasciata questa parte del progetto. 4.2.5 Security Il settore della sicurezza è molto ampio. Esso comprende rilevazione di intrusi, sensori di presenza, sensori di chiusura/apertura porte e finestre, rilevamento di principi di incendio, fughe di gas e perdite d’acqua. Il rilevamento di principi di incendio, fughe di gas e perdite d’acqua non sono realizzabili in Second Life in quanto non esistono incendi, tubature di gas e acqua. Si è deciso quindi di sviluppare un set di script per antifurti e uno per gli accessi (porte di sicurezza). 4.2.5.1 Antifurti Si è pensato di fare più tipologie di antifurti che non differiscono per il sistema di rilevamento, ma per la segnalazione di avvenuta intrusione. Il kit di antifurti realizzato comprende: • Antifurto suono • Antifurto IM • Antifurto e-mail 4.2.5.1.1 Antifurto suono L’antifurto è composto da un sensore di presenza generato dalla funzione “llSensorRepeat” che rileva il nome dell’avatar presente nel suo raggio d’azione. Il nome dell’intruso viene confrontato con una lista di nomi (la lista amici) e nel caso non sia presente, viene eseguito il suono d’allarme. La traccia audio deve essere inserita all’interno dell’oggetto che contiene lo script. Questa viene eseguita tramite la funzione “llPlaySound”. I comandi vengono impartiti all’oggetto tramite i canali di comunicazione e riguardano attivazione/disattivazione del sensore, modifica del raggio d’azione, 60 Implementazione aggiunta nome alla lista amici, cancellazione nome dalla lista amici, visualizzazione della lista amici, svuotamento della lista amici. Di default lo stato del sensore è attivo, il raggio è di 5 metri e la lista amici è vuota. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.5.1.2 Antifurto IM L’antifurto IM (instant message) è composto da un sensore di presenza generato dalla funzione “llSensorRepeat” che rileva il nome dell’avatar presente nel suo raggio d’azione. Il nome dell’intruso viene confrontato con una lista di nomi (la lista amici) e nel caso non sia presente, invia un instant message all’utente selezionato. Per l’invio di questo messaggio è stata usata la funzione “llInstantMessage”. Questa funzione è così composta: llInstantMessage(key user, string message) La key “user” indica il destinatario del messaggio e la stringa “message” è il messaggio stesso. Il messaggio inviato non può essere più lungo di 1024 Bytes. Nell’instant message è presente il nome dell’intruso, il nome della regione, le coordinate del mondo e la key dell’oggetto (ossia dell’antifurto). Quest’ultima è utile per sapere quale antifurto ha dato l’allarme nel caso si abbiano più antifurti. I comandi vengono impartiti all’oggetto tramite i canali di comunicazione e riguardano attivazione/disattivazione del sensore, modifica del raggio d’azione, aggiunta nome alla lista amici, cancellazione nome dalla lista amici, visualizzazione della lista amici, svuotamento della lista amici. Di default lo stato del sensore è attivo, il raggio è di 5 metri e la lista amici è vuota. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.5.1.3 Antifurto e-mail L’antifurto e-mail è composto da un sensore di presenza generato dalla funzione “llSensorRepeat” che rileva il nome dell’avatar presente nel suo raggio d’azione. Il nome dell’intruso viene confrontato con una lista di nomi (la lista amici) e nel caso non sia presente, invia un’e-mail all’indirizzo scelto. Per 61 Implementazione l’invio di questa e-mail è stata usata la funzione “llEmail”. Questa funzione è così composta: llEmail(string address, string subject, string message) La stringa “address” indica l’indirizzo e-mail del destinatario, la stringa “subject” indica l’oggetto dell’e-mail (ossia il nome dell’e-mail) e la stringa “message” indica il testo vero e proprio dell’e-mail. Nell’e-mail è presente il nome dell’intruso, il nome della regione, le coordinate del mondo e la key dell’oggetto (ossia dell’antifurto). Sono stati inseriti dei controlli per l’invio delle e-mail in quanto la funzione “llEmail” di default invia un’e-mail ogni 20 secondi. Infatti, nel nostro caso se l’intruso rimaneva all’interno del raggio d’azione del sensore, la funzione “llEmail” inizialmente inviava un’e-mail ogni 20 secondi, creando così una vera e propria fonte di spam. I comandi vengono impartiti all’oggetto tramite i canali di comunicazione e riguardano attivazione/disattivazione del sensore, modifica del raggio d’azione, aggiunta nome alla lista amici, cancellazione nome dalla lista amici, visualizzazione della lista amici, svuotamento della lista amici. Di default lo stato del sensore è attivo, il raggio è di 5 metri e la lista amici è vuota. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.5.2 Porte di sicurezza L’altro settore della sicurezza implementato riguarda gli accessi, più precisamente gli accessi in una casa. Per gli accessi ci si riferisce a porte e finestre, ma nel nostro caso tratteremo solamente le porte in quanto, un avatar di medie dimensioni non riesce a passare per le finestre costruite che sono 1,5 x 2 metri. Il kit di porte di sicurezza realizzato comprende: • Porta gruppo • Porta domanda-risposta • Porta blacklist 62 Implementazione 4.2.5.2.1 Porta gruppo La porta gruppo è stata pensata per consentire l’accesso solo ai membri di un particolare gruppo. Ad esempio, il laboratorio di intelligenza e vita artificiale del corso di laurea “Scienze e Tecnologie Informatiche” di Cesena ha creato un gruppo sperimentale chiamato “Infonauti” e si vuole permettere di entrare in certe zone solo agli appartenenti del gruppo. In Second Life è possibile come nei giochi online creare dei gruppi. In genere un gruppo su Second Life ha le seguenti caratteristiche: • deve avere almeno due membri • prevede una chat di gruppo • è possibile attivare un solo gruppo alla volta fra quelli a cui si è iscritti • è possibile appartenere al massimo contemporaneamente a 25 gruppi • chiunque può aprire un gruppo (seguendo le specifiche) • i gruppi permettono di creare al proprio interno dei ruoli (roles), a cui possono venire assegnate differenti poteri (abilities) L’apertura della porta viene effettuata solo se l’avatar corrisponde al gruppo della porta. La funzione “llDetectGroup” ritorna un valore booleano che indica se il gruppo dell’oggetto o dell’avatar rilevato corrisponde a quello della primitiva dove è presente lo script. È quindi necessario che il gruppo della porta sia lo stesso di quello a cui si appartiene. La porta rimane aperta per 5 secondi, dopodiché si richiude. Per inserire questo ritardo è stata usata la funzione “llSleep” che ha come parametro il tempo di attesa in secondi. Durante questo tempo lo script non esegue nessuna istruzione. 4.2.5.2.2 Porta domanda-risposta La porta del tipo domanda-risposta è quella più classica. Quando l’avatar interagisce con la porta (mediante il touch) questa pone una domanda e se 63 Implementazione l’avatar scrive la risposta giusta, la porta si apre. Un tipico esempio è quello della password: P:”password?” A:”infonauti”. La domanda viene posta sul canale pubblico 0, mentre la risposta viene ascoltata sul canale selezionato, come ad esempio “/111 infonauti”. Questo è stato scelto per mantenerne la segretezza della risposta. Per l’ascolto della risposta e dei comandi viene usata la funzione “llListen” con l’evento “listen”. La porta rimane aperta per 5 secondi, dopodiché si richiude. Per inserire questo ritardo è stata usata la funzione “llSleep” che ha come parametro il tempo di attesa in secondi. Durante questo tempo lo script non esegue nessuna istruzione. Tramite apposito comando sul canale selezionato sia la domanda che la risposta possono essere cambiate. Di default la domanda è “password?” e la risposta è “infonauti”. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.5.2.3 Porta blacklist Un'altra modalità per gestire gli accessi simile a quello del gruppo riguarda la creazione di una lista utenti chiamati “bannati” ossia presenti in blacklist (lista nera). La blacklist è un registro che contiene una lista di individui a cui, per un motivo particolare, è stato negato un particolare servizio o un privilegio. Inserendo quindi il nome di un avatar in lista, questo non potrà più aprire la porta per entrare in una determinata zona. La porta rimane aperta per 5 secondi, dopodiché si richiude. Per inserire questo ritardo è stata usata la funzione “llSleep” che ha come parametro il tempo di attesa in secondi. Durante questo tempo lo script non esegue nessuna istruzione. I comandi vengono impartiti all’oggetto tramite i canali di comunicazione e riguardano aggiunta nome alla blacklist, cancellazione nome dalla blacklist, visualizzazione della blacklist, svuotamento della blacklist. Di default la 64 Implementazione blacklist è vuota. Questi comandi verranno trattati più approfonditamente nel capitolo 5. 4.2.6 Comunicazioni Il settore della comunicazione deve gestire il controllo remoto di tutte le apparecchiature domotiche presenti nella casa e l’invio di segnalazioni di un qualsiasi tipo di allarme. La comunicazione di tutti gli apparati domotici viene gestita sui canali di chat di Second Life. Questo viene fatto utilizzando la funzione “llListen” con l’evento “listen” per l’ascolto, mentre per inviare messaggi vengono usate le funzioni: • llWhisper: il messaggio verrà recepito in un raggio di 10 metri dall’oggetto • llSay: il messaggio verrà recepito in un raggio di 20 metri dall’oggetto • llShout: il messaggio verrà recepito in un raggio di 100 metri dall’oggetto • llRegionSay: il messaggio verrà recepito in tutta la regione Altri metodi per spedire messaggi senza l’utilizzo di canali sono: • llOwnerSay: il messaggio verrà recepito soltanto dal proprietario dell’oggetto • llInstantMessage: invia un IM (instant message) • llEmail: invia un’e-mail Sono state decise inoltre delle specifiche per i comandi impartiti agli script. Si è scelto, infatti, un sistema simile a quello della shell di Linux: Nome-Comando-IN <-opzione> <argomento> Ad esempio il comando “Alarm-IN –r 10” modifica il raggio dell’allarme portandolo a 10 metri. Il postfisso IN si riferisce a InfoNauti. Possono essere eseguite più opzioni per volta come ad esempio “AlarmIN –s 1 –r 10”. 65 Implementazione Tutti i comandi rispondono all’opzione “-h” (help) che descrive la sintassi del comando completo di opzioni (figura 4.7). Questi comandi verranno trattati più approfonditamente nel capitolo 5. Figura 4.7: Esempio help 66 Guida all’utilizzo 5 Guida all’utilizzo In questo capitolo verrà illustrato come utilizzare il materiale creato. Saranno spiegati in dettaglio i comandi riguardanti gli apparati domotici. 5.1 I prefabbricati Il kit di prefabbricati è suddiviso in cartelle. Ogni cartella contiene una tipologia di elemento, ad esempio muri, porte, finestre, ecc. Il kit creato è un pacchetto che contiene gli oggetti e gli script realizzati. Per utilizzare questi elementi è necessario estrarre il pacchetto nel proprio inventario. Cliccando sull’oggetto con il tasto destro del mouse e selezionando l’opzione “Open”, si potrà vedere il contenuto del pacchetto. Cliccando ora sul tasto “Copy to Inventory”, verranno copiati tutti i contenuti del pacchetto nell’inventario (figura 5.1). 67 Guida all’utilizzo Figura 5.1: Estrazione pacchetto Per utilizzare il kit è sufficiente “trascinare” l’oggetto dall’inventario sul mondo assicurandosi che nel terreno in cui si vuole costruire ci siano i permessi di costruzione (figura 5.2). Nel caso sia presente l’icona in figura 5.3, il terreno non è adibito alla costruzione. A tutti gli elementi del kit non è stata assegnata nessuna texture, o meglio è presente quella di default di Second Life: legno chiaro. Per assegnare una texture all’oggetto, dopo averlo creato, entrare in modalità “edit” e nella scheda “Texture” (figura 5.4) cambiare la texture selezionandone una dal proprio inventario. In questo modo a tutte le facce dell’oggetto sarà assegnata la stessa texture. 68 Guida all’utilizzo Figura 5.2: Build Figura 5.3: Icona “No-build” 69 Guida all’utilizzo Figura 5.4: Scheda texture Le principali opzioni disponibili nella scheda “Texture” oltre alla scelta del colore e della texture sono: • Transparency % : indica la percentuale di trasparenza che deve avere la texture • Full Bright : la luminosità viene impostata al massimo • Repeats Per Face : modifica il numero di ripetizioni della texture in orizzontale e in verticale • Rotation : modifica il grado di rotazione della texture • Repeats Per Meter : modifica il numero di ripetizioni della texture per metro 70 Guida all’utilizzo • Offset : modifica la traslazione della texture in orizzontale e in verticale Se si vuole fare in modo che alle facce dell’oggetto siano assegnate texture differenti, si può usare lo script in figura 5.5. Nell’esempio, la funzione “llGetInventoryName” ritorna il nome delle texture che sono nelle posizioni 0 e 1 dell’inventario dell’oggetto. In seguito la funzione “llSetTexture” assegna le texture alle facce selezionate dell’oggetto. La prima texture dell’inventario viene assegnata alla faccia numero 0, mentre la seconda viene assegnata a tutte le restanti facce (figura 5.6). Figura 5.5: Script multi-texture 71 Guida all’utilizzo Figura 5.6: Cubo multi-texture Come già spiegato il pacchetto è suddiviso in cartelle. Ogni cartella contiene una tipologia di elementi (archi, scale,ecc.). Per ogni tipologia è stato creato un set di elementi diversi tra loro. Figura 5.7: set di archi 72 Guida all’utilizzo Figura 5.8: set di colonne Figura 5.9: set di cupole 73 Guida all’utilizzo Figura 5.10: set di finestre Figura 5.11: set di porte 74 Guida all’utilizzo Figura 5.12: set di mura Figura 5.13: set di scale 75 Guida all’utilizzo Figura 5.14: set di terrazzi Su tutti gli elementi prefabbricati sono stati concessi i permessi di modifica e di copia. In tal modo possono essere cambiate a proprio piacimento le dimensioni e le caratteristiche dell’oggetto. 5.2 La domotica Per inserire uno script in un oggetto, è sufficiente “trascinare” lo script dall’inventario alla scheda “Content” dell’oggetto (figura 5.15). Nel caso lo script richieda la presenza di file audio o di texture, trascinare i file nella stessa scheda dove è stato inserito lo script. Su tutti gli script riguardanti la domotica, sono stati concessi i permessi di modifica e di copia. In tal modo possono essere modificati o perfezionati. 76 Guida all’utilizzo Figura 5.15: Inserimento script 5.2.1 Luci La sintassi del comando per le luci è: Light-IN Le opzioni e gli argomenti riconosciuti sono i seguenti: • -h : mostra l’help (visualizza l’elenco di tutte le opzioni disponibili con relativa descrizione) • -s : attivazione/disattivazione del sensore di presenza. Gli argomenti accettati sono 0 e 1 che indicano rispettivamente spento e acceso. • -r : modifica il raggio di azione del sensore. Gli argomenti accettati sono tutti gli interi da 1 a 100. L’argomento è espresso in metri. • -c : modifica il colore della luce. Gli argomenti accettati sono tutti gli interi da 1 a 5. I numeri corrispondono in ordine crescente ai colori: bianco, giallo, rosso, verde, blu. 77 Guida all’utilizzo • -l : modifica il livello di luminosità della luce. Gli argomenti accettati sono “meno” e “piu”. Il primo provoca una diminuzione della luminosità mentre il secondo un aumento. Di default i parametri usati sono: -s 1, -c 2, -r 5. Il canale per l’ascolto dei comandi è lo 0. Se i comandi non vengono percepiti dall’oggetto verificare che la distanza non sia eccessiva. I comandi sono case-insensitive, ossia possono essere scritti sia in minuscolo che in maiuscolo. Possono inoltre essere eseguite più opzioni per volta. Figura 5.16: Comando help light 5.2.2 Audio La sintassi del comando per l’audio è: Radio-IN Le opzioni e gli argomenti riconosciuti sono i seguenti: • -h : mostra l’help (visualizza l’elenco di tutte le opzioni disponibili con relativa descrizione) • -s : attivazione/disattivazione del sensore di presenza. Gli argomenti accettati sono 0 e 1 che indicano rispettivamente spento e acceso. 78 Guida all’utilizzo • -r : modifica il raggio di azione del sensore. Gli argomenti accettati sono tutti gli interi da 1 a 100. L’argomento è espresso in metri. • -t : seleziona il numero della traccia da eseguire. Gli argomenti accettati sono tutti gli interi da 1 a 5. • -v : modifica il livello del volume di riproduzione. Gli argomenti accettati sono tutti gli interi da 1 a 10. “1” indica il livello minimo di volume mentre “10” il massimo. Di default i parametri usati sono: -s 1, -t 1, -v 10, -r 5. Il canale per l’ascolto dei comandi è lo 0. Se i comandi non vengono percepiti dall’oggetto verificare che la distanza non sia eccessiva. I comandi sono case-insensitive, ossia possono essere scritti sia in minuscolo che in maiuscolo. Possono inoltre essere eseguite più opzioni per volta. Figura 5.17: Comando help radio 5.2.3 Antifurti La sintassi del comando per gli antifurti è: Alarm-IN Le opzioni e gli argomenti riconosciuti sono i seguenti: • -h : mostra l’help (visualizza l’elenco di tutte le opzioni disponibili con relativa descrizione) 79 Guida all’utilizzo • -s : attivazione/disattivazione del sensore di presenza. Gli argomenti accettati sono 0 e 1 che indicano rispettivamente spento e acceso. • -r : modifica il raggio di azione del sensore. Gli argomenti accettati sono tutti gli interi da 1 a 100. L’argomento è espresso in metri. • -a : aggiunge un nome alla lista amici (il nome va digitato senza spazi). Gli argomenti accettati sono di tipo stringa. • -d : cancella un nome dalla lista amici (il nome va digitato senza spazi). Gli argomenti accettati sono di tipo stringa. • -l : visualizza la lista amici. • -e : cancella tutti i nomi dalla lista amici. Di default i parametri usati sono: -s 1, -r 5. La lista amici inizialmente è vuota. Il canale per l’ascolto dei comandi è lo 0. Se i comandi non vengono percepiti dall’oggetto verificare che la distanza non sia eccessiva. I comandi sono case-insensitive, ossia possono essere scritti sia in minuscolo che in maiuscolo. Possono inoltre essere eseguite più opzioni per volta. Figura 5.18: Comando help alarm 80 Guida all’utilizzo 5.2.4 Porta domanda-risposta La sintassi del comando per la porta è: Door-IN Le opzioni e gli argomenti riconosciuti sono i seguenti: • -h : mostra l’help (visualizza l’elenco di tutte le opzioni disponibili con relativa descrizione) • -d : modifica la domanda posta dalla porta. Gli argomenti accettati sono di tipo stringa. • -r : modifica la risposta che viene ascoltata dalla porta. Gli argomenti accettati sono di tipo stringa. Di default i parametri usati sono: -d password?, -r infonauti. Il canale per l’ascolto dei comandi è lo 0 per l’help e 111 per la modifica della domanda e della risposta. Se i comandi non vengono percepiti dall’oggetto verificare che la distanza non sia eccessiva. I comandi sono case-insensitive, ossia possono essere scritti sia in minuscolo che in maiuscolo. Possono inoltre essere eseguite più opzioni per volta. 5.2.5 Porta blacklist La sintassi del comando per la porta è: Door-IN Le opzioni e gli argomenti riconosciuti sono i seguenti: • -h : mostra l’help (visualizza l’elenco di tutte le opzioni disponibili con relativa descrizione) • -a : aggiunge un nome alla blacklist (il nome va digitato senza spazi). Gli argomenti accettati sono di tipo stringa. • -d : cancella un nome dalla blacklist (il nome va digitato senza spazi). Gli argomenti accettati sono di tipo stringa. • -l : visualizza la blacklist. • -e : cancella tutti i nomi dalla blacklist. 81 Guida all’utilizzo Di default la blacklist è vuota. Il canale per l’ascolto dei comandi è lo 0. Se i comandi non vengono percepiti dall’oggetto verificare che la distanza non sia eccessiva. I comandi sono case-insensitive, ossia possono essere scritti sia in minuscolo che in maiuscolo. Possono inoltre essere eseguite più opzioni per volta. Figura 5.19: Comando help porta blacklist 5.2.6 Posizionamento dei sensori I sensori di presenza vengono usati negli allarmi, nelle luci e nel jukebox. Questi sensori hanno il campo d’azione di una sfera, il quale può essere modificato riducendolo ad esempio a una semisfera. E’ opportuno posizionare i sensori in modo che coprano solo la superficie della stanza e non gli ambienti esterni ad essa. Supponendo di usare una stanza di dimensioni 10 x 5 x 10 metri risulta vantaggioso impostare il raggio d’azione a 5 metri, ridimensionare il campo del sensore a una semisfera e posizionarlo al centro (figura 5.20). 82 Guida all’utilizzo Figura 5.20: Posizionamento sensore – vista laterale Nella figura 5.20 è rappresentata la visione laterale della stanza con il sensore posizionato centralmente sul pavimento o sul soffitto. Come si vede in figura 5.21, essendo il campo del sensore a forma di sfera gli angoli della stanza non vengono coperti. Figura 5.21: Campo sensore - vista dall'alto Per ovviare a questo piccolo inconveniente si possono posizionare dei sensori negli angoli della stanza come in figura 5.22. 83 Guida all’utilizzo Figura 5.22: Sensori angolari - vista dall'alto Un’alternativa a questa soluzione è data dall’utilizzo di solo due sensori posti agli angoli opposti della stanza con raggio pari a 10 metri. Il problema che si riscontra però è che con un raggio di 10 metri vengono coperte anche le stanze al piano superiore e inferiore se la stanza non è abbastanza alta. Per gli standard di misure adottate nei prefabbricati i sensori posti negli angoli devono avere un arco pari a ¼ di sfera e un raggio di 5 metri. Utilizzando un sensore centrale e quattro sensori angolari l’intera superficie della stanza risulta coperta. 84 Conclusioni e sviluppi futuri 6 Conclusioni e sviluppi futuri 6.1 Conclusioni Si sono studiate le tecniche per la costruzione e la programmazione su Second Life. Successivamente è stato creato un pacchetto contenente un kit di sviluppo per la realizzazione di edifici prefabbricati e un kit per l’implementazione di applicazioni domotiche. Con il kit di elementi prefabbricati realizzato, si ha la possibilità di costruire una vasta gamma di edifici. Questo set comprende gli elementi base di un edificio: archi, colonne, cupole, finestre, mura, porte, scale, terrazzi, tetti. Su tutti gli elementi prefabbricati sono stati concessi i permessi di modifica e di copia. In tal modo possono essere cambiate a proprio piacimento le dimensioni e le caratteristiche dell’oggetto. Il kit di applicazioni domotiche permette di far diventare l’edificio costruito, un edificio più tecnologico. Non tutti i settori della domotica sono realizzabili attualmente in Second Life, in quanto fattori come la temperatura e l’umidità non sono presenti. Il set quindi comprende: controllo dell’impianto di illuminazione, controllo dell’impianto audio, gestione della sicurezza tramite antifurti e porte di sicurezza. Su tutti gli script riguardanti la domotica, sono stati concessi i permessi di modifica e di copia. In tal modo possono essere modificati o perfezionati. Questo kit permetterà ai futuri studenti di costruire edifici prefabbricati semplicemente assemblando vari elementi. Inoltre, utilizzando il kit di script delle applicazioni domotiche si potranno rendere queste infrastrutture 85 Conclusioni e sviluppi futuri automatiche, sperimentando varie situazioni e analizzandone vantaggi e svantaggi. Con questi due kit, il destinatario potrà quindi crearsi la casa di suo gradimento e applicargli le applicazioni domotiche che preferisce. 6.2 Sviluppi futuri Il set di prefabbricati realizzato è molto vasto e si possono creare svariati tipi di edifici, ma, per quanto ampio possa essere non permette la costruzione di qualsiasi edificio. Quindi, questo kit potrebbe essere ampliato con nuovi elementi che ne aumentino le possibili infrastrutture costruibili. Inoltre, tutti gli elementi del kit sono stati realizzati con le primitive (prim) fornite da Second Life. Questo implica un costo elevato in fatto di numero di primitive utilizzate per costruire una casa. Per ridurre questo numero si può ricorrere alle sculpted prims. Il vantaggio di usare le sculpted prims è che l’oggetto ottenuto verrà considerato come un’unica prim e quindi si ridurrà notevolmente il numero di prim utilizzate. Il set di script per applicazioni domotiche comprende il controllo delle luci, dell’impianto audio e il settore della sicurezza (antifurti e porte di sicurezza). Gli unici due settori non implementati sono il controllo dell’ambiente e del video. Il primo potrà essere implementato se verranno inserite in Second Life delle caratteristiche ambientali come umidità e temperatura che al momento non sono presenti. Per quanto riguarda il secondo settore, per implementarlo è necessario possedere un terreno in Second Life sul quale fare streaming video. 86 Bibliografia Bibliografia [REA08] Realtà virtuale, 2008, http://it.wikipedia.org/wiki/Realt%C3%A0_virtuale [MON08] Mondo virtuale, 2008, http://it.wikipedia.org/wiki/Mondo_virtuale [EDU08] Edutainment, 2008, http://it.wikipedia.org/wiki/Edutainment [SEC08] Second Life, 2008, http://it.wikipedia.org/wiki/Second_life [PRE08] Prefabbricato, 2008, http://it.wikipedia.org/wiki/Prefabbricato [DOM08] Domotica, 2008, http://it.wikipedia.org/wiki/Domotica [CPL08] Schema domotica, 2008, http://www.cpl.it/prodotti_e_servizi_cpl/building_automation/dom otica/obiettivi_e_vantaggi 87