Smart Kiosk v prostředí SecondLife
Transkript
Smart Kiosk v prostředí SecondLife
České vysoké učení technické v Praze Fakulta elektrotechnická Softwarové technologie a management Smart Kiosk v prostředí SecondLife Semestrální projekt - Y39PRO Akademický rok 2009 / 2010, zimní semestr Vojtěch Vavřín ([email protected]) Obsah 1 Licence..............................................................................................1 2 Zadání a cíle projektu..........................................................................1 3 Realizace projektu..............................................................................1 3.1 Popis řešení..................................................................................1 3.2 Skript..........................................................................................2 4 Závěr................................................................................................6 Výsledný Smart Kiosk se hrou Miliardář..................................................7 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín 1 Licence Tento projekt byl vytvořen pod licencí GNU LGPL (http://www.gnu.org/licenses/ lgpl-3.0.txt). 2 Zadání a cíle projektu Cílem projektu bylo vymodelovat a naimplementovat ve virtuálním prostředí SecondLife kiosek s aplikací podobnou známé hře „milionář“. Ovládání aplikace mělo vycházet z úspěšného projektu z minulého ročníku soutěže IBM Student Research Projects „Nášlapný koberec jako vstupní zařízení“ (http://ibm-cvut.felk.cvut.cz/~lkjvzz2008/projekt1/). Úkolem tedy bylo prozkoumat možnosti interakce avatara s aplikací pomocí nášlapných dlaždic. 3 Realizace projektu 3.1 Popis řešení Pomocí vestavěného editoru pro modelování 3D objektů byl vytvořen kiosek s velkou obrazovkou a před ní na zemi čtyři dlaždice. K obrazovce byl přidán skript s implementací celé aplikace (viz kapitola 3.2 Skript). V řešení bylo využito toho, že v prostředí SecondLife (SL) si může avatar na předměty „sednout“ a skript připojený k tomuto předmětu pak může použít klávesy sloužící původně k ovládání avatara pro ovládání aplikace. Animace sedajícího si avatara byla nahrazena stáním. Šlapání na dlaždice bylo simulováno pomocí vestavěných animací prostředí SL. Pro úkroky vpravo, vlevo a vzad se nejlépe hodily začátky tří různých animací tance. Pro šlápnutí na dlaždici před avatarem byla použita část vestavěné animace pro kopnutí (což významně zvýšilo atraktivitu a zábavnost výstupu celého projektu...). Další animace se spouští po správně zodpovězené otázce – avatar zatleská, a na oslavu vítězství ve hře avatar zatancuje. Obr. 1: Smart Kiosk 1 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín 3.2 Skript // Nastavení proměnných string sit_message = "Play"; string tex; integer CHANNEL = 0; integer question; integer answer; integer correct; string nextq; string score; key agent; Obr. 3: Otázka byla Obr. 2: Označení // Základní stav default { zodpovězena správně odpovědi A state_entry() { llSetSitText(sit_message); // Nastavení textu tlačítka pro „posazení“ na předmět („Play“) // Nastavení polohy avatara po „posazení“ a umístění kamery llSitTarget(<0, -1.5, -1.56>, llEuler2Rot(<0, 0, 90> * DEG_TO_RAD)); llSetCameraEyeOffset(<-1.5, -4.0, 1.0>); llSetCameraAtOffset(<1.5, 2.0, -1.5>); llSensor("", NULL_KEY, AGENT, 3, PI); // Spuštění senzoru přítomnosti avatara llSetTexture("679e9797-826b-8d29-5a5e-2660b1208d37", ALL_SIDES); // Textura úvodní obrazovky } // Zachycení události senzoru a vypsání zprávy pro uživatele sensor(integer total) { llSay(0, "Klikněte pravým a stiskněte PLAY"); } changed(integer change) { if(change & CHANGED_LINK) { agent = llAvatarOnSitTarget(); // Identifikace avatara nutná pro další postup if(agent) { llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION); // Požadavek na povolení převzetí ovládání a spouštění animací avatara llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a", ALL_SIDES); // Textura první otázky question = 1; answer = 1; correct = 0; score = "0"; llSetText("Skore: "+(string)score,<1, 1, 1>, 1); // Výpis skóre } else { llReleaseControls(); llSetTexture("679e9797-826b-8d29-5a5e-2660b1208d37", ALL_SIDES); llSetText("",<0, 0, 0>, 0); state default; } } } run_time_permissions(integer perm) { if(perm) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT, TRUE, FALSE); // Po udělení povolení se převezme ovládání llStopAnimation("sit_generic"); // Zastavení původní sedací animace llStopAnimation("sit"); // Zastavení původní sedací animace llStartAnimation( "stand_1" ); // Místo toho se spustí animace stání } } control(key id, integer held, integer change) { // Co se bude dít při mačkání šipek if(held & change & CONTROL_BACK) { // Stisknutí klávesy „dolů“ llStartAnimation("dance8"); llSleep(0.4); llStopAnimation("dance8"); // Vestavěná animace tance č. 8 běží 0,4 s (krok vzad) 2 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín if(answer == 1) { // Zvolená odpověď B if(question == 1) { // Otázka č. 1 llSetTexture("d791e00c-99c2-3cf5-f8b9-c6b9f9e76c74", ALL_SIDES); // Zobrazení textury s vyznačenou odpovědí 1B correct = 0; // U této otázky je odpověď B špatně } else if(question == 2) { // Otázka č. 2 llSetTexture("637b709f-24bf-725f-2eda-dc684937b29d", ALL_SIDES); //2B correct = 1; // U této otázky je odpověď B správně score = "10.000.000"; nextq = "d5b83e64-e802-3e75-8686-dd57ac672a01"; // Proměnná s označením textury pro další otázku } else if(question == 3) { // Otázka č. 3 llSetTexture("04f23c26-864c-ff99-53a7-5a5d55a17a7c", ALL_SIDES); //3B correct = 1; // U této otázky je odpověď B správně score = "50.000.000"; nextq = "f49ba27a-6c10-4106-48fc-aff0d8961b88"; // Proměnná s označením textury pro další otázku } else if(question == 4) { // Otázka č. 4 llSetTexture("7ee14463-bb95-9f4c-8429-b4a6b75222e6", ALL_SIDES); //4B correct = 0; // U této otázky je odpověď B špatně } else if(question == 5) { // Otázka č. 5 llSetTexture("8587488f-8802-b71b-c2e1-5ef7d7dba14f", ALL_SIDES); //5B correct = 1; // U této otázky je odpověď B správně score = "1.000.000.000"; nextq = "a528d154-ebcd-4b22-c52a-4aa59abed665"; // Proměnná s označením textury pro vítězství (5. otázka je poslední) } } // podobně pro označení odpovědí C, D nebo A if(answer == 2) { if(question == 1) { llSetTexture("0bf9b31e-4851-4def-aef4-462b1c6939bb", ALL_SIDES); //1C correct = 1; score = "1.000.000"; nextq = "bc744883-32a4-4423-6c2d-312efe251172"; //2A } else if(question == 2) { llSetTexture("0c23a5ee-d8aa-2ef5-8378-88170a51eeaa", ALL_SIDES); //2C correct = 0; } else if(question == 3) { llSetTexture("3d6de3ec-adc8-4923-e7bc-5894f5660e12", ALL_SIDES); //3C correct = 0; } else if(question == 4) { llSetTexture("420221a7-88f5-e2d2-f721-b80382ebb366", ALL_SIDES); //4C correct = 0; } else if(question == 5) { llSetTexture("2c3836fa-2e0d-498a-5229-b7965603ccf6", ALL_SIDES); //5C correct = 0; } } if(answer == 3) { if(question == 1) { llSetTexture("52dd87a4-ae8f-98d3-532c-0fd8e39a6007", ALL_SIDES); //1D correct = 0; } else if(question == 2) { llSetTexture("0e20edd5-0e63-6047-8221-1f3abeb3b9dc", ALL_SIDES); //2D correct = 0; } else if(question == 3) { llSetTexture("c5c5f684-91cf-7d40-9c5f-ae27a049aaf9", ALL_SIDES); //3D correct = 0; } 3 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín else if(question == 4) { llSetTexture("bfe0f575-84ed-79c4-16a9-a3512fc61e5f", ALL_SIDES); //4D correct = 1; score = "250.000.000"; nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //5A } else if(question == 5) { llSetTexture("a08794cf-8b5e-7cad-7ede-329408da33f2", ALL_SIDES); //5D correct = 0; } } if(answer == 4) { if(question == 1) { llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a", correct = 0; } else if(question == 2) { llSetTexture("bc744883-32a4-4423-6c2d-312efe251172", correct = 0; } else if(question == 3) { llSetTexture("d5b83e64-e802-3e75-8686-dd57ac672a01", correct = 0; } else if(question == 4) { llSetTexture("f49ba27a-6c10-4106-48fc-aff0d8961b88", correct = 0; } else if(question == 5) { llSetTexture("71e0cd67-3df1-9cf2-0c04-608191b4c765", correct = 0; } } answer += 1; if(answer > 4) answer = 1; ALL_SIDES); //1A ALL_SIDES); //2A ALL_SIDES); //3A ALL_SIDES); //4A ALL_SIDES); //5A } if(held & change & CONTROL_FWD) { // Stisknutí klávesy „nahoru“ llStartAnimation("kick_roundhouse_r"); llSleep(1); llStopAnimation("kick_roundhouse_r"); // Vestavěná animace pro kopnutí běží 1 s (krok vpřed) // Zbytek podobně jako výše if(answer == 1) { if(question == 1) { llSetTexture("52dd87a4-ae8f-98d3-532c-0fd8e39a6007", correct = 0; } else if(question == 2) { llSetTexture("0e20edd5-0e63-6047-8221-1f3abeb3b9dc", correct = 0; } else if(question == 3) { llSetTexture("c5c5f684-91cf-7d40-9c5f-ae27a049aaf9", correct = 0; } else if(question == 4) { llSetTexture("bfe0f575-84ed-79c4-16a9-a3512fc61e5f", correct = 1; score = "250.000.000"; nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //5A } else if(question == 5) { llSetTexture("a08794cf-8b5e-7cad-7ede-329408da33f2", correct = 0; } } ALL_SIDES); //1D ALL_SIDES); //2D ALL_SIDES); //3D ALL_SIDES); //4D ALL_SIDES); //5D if(answer == 2) { if(question == 1) { llSetTexture("de0d6d9d-afc7-ad83-0f90-40a9f984fb4a", ALL_SIDES); //1A correct = 0; } 4 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín else if(question == 2) { llSetTexture("bc744883-32a4-4423-6c2d-312efe251172", correct = 0; } else if(question == 3) { llSetTexture("d5b83e64-e802-3e75-8686-dd57ac672a01", correct = 0; } else if(question == 4) { llSetTexture("f49ba27a-6c10-4106-48fc-aff0d8961b88", correct = 0; } else if(question == 5) { llSetTexture("71e0cd67-3df1-9cf2-0c04-608191b4c765", correct = 0; } ALL_SIDES); //2A ALL_SIDES); //3A ALL_SIDES); //4A ALL_SIDES); //5A } if(answer == 3) { if(question == 1) { llSetTexture("d791e00c-99c2-3cf5-f8b9-c6b9f9e76c74", ALL_SIDES); correct = 0; } else if(question == 2) { llSetTexture("637b709f-24bf-725f-2eda-dc684937b29d", ALL_SIDES); correct = 1; score = "10.000.000"; nextq = "d5b83e64-e802-3e75-8686-dd57ac672a01"; //3A } else if(question == 3) { llSetTexture("04f23c26-864c-ff99-53a7-5a5d55a17a7c", ALL_SIDES); correct = 1; score = "50.000.000"; nextq = "71e0cd67-3df1-9cf2-0c04-608191b4c765"; //4A } else if(question == 4) { llSetTexture("7ee14463-bb95-9f4c-8429-b4a6b75222e6", ALL_SIDES); correct = 0; } else if(question == 5) { llSetTexture("8587488f-8802-b71b-c2e1-5ef7d7dba14f", ALL_SIDES); correct = 1; score = "1.000.000.000"; nextq = "a528d154-ebcd-4b22-c52a-4aa59abed665"; // vítězství } } if(answer == 4) { if(question == 1) { llSetTexture("0bf9b31e-4851-4def-aef4-462b1c6939bb", correct = 1; score = "1.000.000"; nextq = "bc744883-32a4-4423-6c2d-312efe251172"; //2A } else if(question == 2) { llSetTexture("0c23a5ee-d8aa-2ef5-8378-88170a51eeaa", correct = 0; } else if(question == 3) { llSetTexture("3d6de3ec-adc8-4923-e7bc-5894f5660e12", correct = 0; } else if(question == 4) { llSetTexture("420221a7-88f5-e2d2-f721-b80382ebb366", correct = 0; } else if(question == 5) { llSetTexture("2c3836fa-2e0d-498a-5229-b7965603ccf6", correct = 0; } } 5 //1B //2B //3B //4B //5B ALL_SIDES); //1C ALL_SIDES); //2C ALL_SIDES); //3C ALL_SIDES); //4C ALL_SIDES); //5C Smart Kiosk v prostředí SecondLife Vojtěch Vavřín answer -= 1; if(answer < 1) answer = 4; } if(held & change & (CONTROL_RIGHT | CONTROL_ROT_RIGHT)) { // Stisknutí klávesy „vpravo“ (potvrzení odpovědi) llStartAnimation("dance1"); llSleep(1); llStopAnimation("dance1"); // Vestavěná animace tance č. 1 běží 1 s (krok vpravo) if(correct == 1) { // Vybraná odpověď je správná llSetTexture("bb7fce81-252e-702d-8a2f-2b969705f063", ALL_SIDES); // Textura správné odpovědi textura llSetText("Skore: "+score,<1, 1, 1>, 1); question += 1; answer = 1; correct = 0; llStartAnimation("clap"); llSleep(2); llStopAnimation("clap"); // Animace zatleskání běží 2 s llSetTexture(nextq, ALL_SIDES); // Textura s další otázkou, popřípadě vítězná if(question > 5) { // Pokud jsou všechny otázky zodpovězeny správně, spustí se anima ce vítězného tance na 8 s, pak je avatar odpojen llStartAnimation("dance4"); llSleep(8); llUnSit(agent); } } else { llSetTexture("e40fcd00-dc24-a177-f739-5251deaa0fbe", ALL_SIDES); // Textura špatné odpovědi llSleep(2); llUnSit(agent); // Avatar je odpojen } } if(held & change & (CONTROL_LEFT | CONTROL_ROT_LEFT)) { // Stisknutí klávesy „vlevo“ (ukončení hry) llStartAnimation("dance7"); llSleep(1); llStopAnimation("dance7"); // Vestavěná animace tance 7 běží 1 s (krok vlevo) llUnSit(agent); // Avatar je odpojen } } } 4 Závěr Kiosek se hrou „Miliardář“ byl v prostředí SL úspěšně vymodelován a naimplementován a je přístupný k vyzkoušení v severozápadní části ostrova ČVUT (CTU Island). Interakce pomocí nášlapného zařízení byla v prostředí SL pouze napodobena, neboť se ukázalo, že tento způsob interakce se pro SL příliš nehodí. 6 Smart Kiosk v prostředí SecondLife Vojtěch Vavřín Výsledný Smart Kiosk se hrou Miliardář Obr. 4: Celý kiosek Obr. 5: Hra v plném proudu 7
Podobné dokumenty
Stáhnout ceník
(ES) č. 715/2007 a č. 692/2008 v platném znění. Uváděné hodnoty se nevztahují na konkrétní jednotlivé vozidlo a musí být chápány výhradně jako směrné hodnoty. Standardizovaná zkušební metoda umožňu...
číslo 11
jednak vlastnosti, kvůli kterým je démiurgos stvořil, jednak vlastnosti, které tyto první nutně doprovázejí. Pokud
existují ony první vlastnosti, nemohou
je nedoprovázet ony druhé vlastnosti.
Větši...
částka 33/2010 - Ministerstvo vnitra České republiky
a přepínač režimu je nastaven tak, aby nástroj podporoval režim provádění kontroly, inicializace
a údržby. V případě, že nástroj signalizuje chybu, nesmí být k zajišťování certifikačních služeb pou...