Emotiv
| Site: | Virtuálna Univerzita Mateja Bela |
| Cours: | Tvorba hier a používateľského zážitku |
| Livre: | Emotiv |
| Imprimé par: | Гость |
| Date: | mardi 28 juillet 2026, 23:54 |
1. Emotiv Epoc (EEG)
Čo je to?
Emotiv Epoc je revolučný nositeľný EEG headset, navrhnutý na zaznamenávanie mozgových signálov a analýzu emocionálnych stavov používateľa. Toto inovatívne zariadenie sa stalo významným pokrokom v oblasti neurovied a poskytuje jedinečný pohľad do vnútra nášho mozgu. S jeho pomocou je možné sledovať kognitívne funkcie, emócie a reakcie vo viacerých oblastiach. Emotiv Epoc nám otvára nové možnosti pre interakciu medzi človekom a technológiou, čím nám umožňuje ovládať a spoznať digitálny svet priamo s našimi myšlienkami a emóciami.
Na čo sa používa?
Emotiv Epoc má širokú škálu aplikácií, ktoré zahŕňajú výskum, vzdelávanie, medicínu, psychológiu, herný priemysel a interaktívnu zábavu. Jeho unikátne schopnosti na zachytávanie mozgových aktivít a analýzu emocionálnych stavov poskytujú hodnotné informácie a nové perspektívy v týchto oblastiach.
Nižšie sú uvedené niektoré z hlavných využití Emotiv Epoc:
- Výskum mozgu a neurovieda: Emotiv Epoc je významným nástrojom pre neurovedcov, ktorí skúmajú fungovanie mozgu a kognitívne procesy. Pomáha pri štúdiu pamäte, pozornosti, učenia, koncentrácie a emócií, čo vedie k lepšiemu porozumeniu mozgovej činnosti.
- Emocionálna analýza a psychológia: V psychológii sa Emotiv Epoc používa na sledovanie emócií a reakcií ľudí v rôznych situáciách. Môže pomôcť psychológom a psychoterapeutom lepšie porozumieť emocionálnemu stavu klientov a zlepšiť terapeutický proces.
- Vzdelávanie a tréning: V oblasti vzdelávania je Emotiv Epoc využívaný na skúmanie koncentrácie a angažovanosti študentov počas učenia. Pomáha učiteľom prispôsobiť výučbu individuálnym potrebám študentov a optimalizovať učebné procesy.
- Medicína a rehabilitácia: Emotiv Epoc sa používa aj v medicíne na diagnostiku a sledovanie stavov, ako sú epilepsia, zmeny nálady, ADHD a iné neurologické poruchy. Okrem toho sa využíva pri rehabilitácii pacientov po mozgových poraneniach alebo mŕtviciach.
- Herný priemysel: V hernom priemysle umožňuje Emotiv Epoc tvorcom hier vytvárať interaktívne zážitky, kde hry môžu reagovať na hráčove emócie a myšlienky. Tým sa dosahuje hlbší zážitok a angažovanosť hráčov.
1.1. História
História EEG sa začala vyvíjať v priebehu viac ako storočia a priniesla mnoho zásadných objavov v oblasti neurovied a medicíny.
- V roku 1875 objavil britský lekár Richard Caton, že mozgové aktivity vykazujú slabé elektrické signály, ktoré sa dajú zaznamenať. Neskôr, v roku 1924, nemecký psychiatrický lekár Hans Berger zaznamenal prvý ľudský EEG záznam a nazval ho "elektroencefalogram." Tento objav mu vyniesol povesť zakladateľa elektroencefalografie.
- Počas nasledujúcich desaťročí sa EEG stalo dôležitým nástrojom pre štúdium mozgových funkcií, a to nielen v medicíne, ale aj v psychológii a neurovedách. V priebehu 20. storočia sa EEG používalo na skúmanie spánku, kognitívnych procesov, epilepsie a iných neurologických porúch.
- Vývoj technológií viedol k výraznému zlepšeniu EEG záznamu a jeho analýzy. Dnes sú moderné EEG zariadenia, ako je Emotiv Epoc, kompaktné, pohodlné a schopné zaznamenať širokú škálu mozgových aktivít s vysokou presnosťou. Pokroky v spracovaní signálov a analýze dát umožňujú lepšie porozumenie mozgových vzorov a emocionálnych reakcií.
- EEG sa stal neodmysliteľným nástrojom v medicíne, diagnostike neurologických porúch, výskume mozgu a psychológii. Jeho využitie sa neustále rozširuje a prehlbuje náš pohľad na fungovanie nášho mozgu. Vďaka histórii EEG sme dnes schopní s Emotiv Epoc a podobnými technológiami viesť nové rozmery výskumu, vzdelávania a zábavy, čím otvárame dvere k novým objavom a zážitkom.
1.2. Ako funguje
Emotiv Epoc poskytuje užívateľom intuitívne a prívetivé rozhranie, čo zjednodušuje jeho používanie. Zariadenie sa neustále zdokonaľuje a nové vylepšenia v technológii umožňujú presnejšiu a komplexnejšiu interpretáciu mozgových signálov.
- Elektrody a senzory: Emotiv Epoc obsahuje niekoľko elektród, ktoré sú umiestnené na špecifických miestach na skalpe. Tieto elektrody zaznamenávajú slabé elektrické signály vysielané mozgom. Okrem toho má zariadenie aj ďalšie senzory, ktoré monitorujú pohyby hlavy a tváre používateľa, čo je dôležité pre správne interpretovanie EEG dát.
- Snímanie mozgových signálov: Po nasadení Emotiv Epoc na hlavu začne zariadenie snímať elektrické signály, ktoré produkujú mozgové neuróny. Tieto signály sú priebežne zaznamenávané a digitalizované.
- Spracovanie a analýza dát: Snímané mozgové signály sú prenesené do pripojeného zariadenia, ako je počítač, tablet alebo smartphone. Tu prebieha komplexný proces spracovania a analýzy dát. Vstavaný softvér Emotiv Epoc rozpoznáva rôzne vzory mozgových aktivít a mapuje ich na konkrétne stavy mozgu a emócie.
- Interakcia a aplikácie: Výsledky analýzy môžu byť použité na rôzne účely. Užívatelia môžu sledovať svoje mozgové aktivity v reálnom čase, analyzovať emocionálne stavy, trénovať svoje kognitívne funkcie alebo využiť zariadenie v rámci výskumu, vzdelávania, herného priemyslu alebo terapeutických aplikácií.
1.3. Typy zariadení
Existuje niekoľko typov zariadení, ktoré sa používajú na zachytenie mozgových signálov a EEG záznamu. Každý typ má svoje vlastné výhody a obmedzenia, a ich výber závisí od konkrétnych potrieb a aplikácií.
Medzi najčastejšie typy zariadení patria:
Elektroencefalograf (EEG) headsety: Sú to nositeľné zariadenia, ktoré sa skladajú z elektrod umiestnených na povrchu hlavy. EEG headsety sú pohodlné a jednoduché na používanie, čo ich robí ideálnymi pre výskum, vzdelávanie a osobné monitorovanie mozgových aktivít. Príkladom takéhoto zariadenia je Emotiv Epoc.
Elektroencefalografické (EEG) čiapky: Sú to textilné čiapky, ktoré obsahujú zabudované elektrody. Majú výhodu, že umožňujú špecifické umiestnenie elektrod pre presnejšie záznamy, ktoré sú často využívané v klinických a výskumných prostrediach.
Intrakraniálne elektrody: Tieto elektrody sa umiestňujú priamo do mozgového tkaniva počas chirurgických zákrokov. Poskytujú najpresnejšie záznamy mozgových aktivít, ale vyžadujú invazívny postup a sú využívané najmä v medicínskych štúdiách a neurochirurgii.
Funkčná magnetická rezonancia (fMRI): Zatiaľ čo EEG zariadenia zachytávajú elektrické signály, fMRI je technika založená na meraní zmien prietoku krvi a kyslíka v mozgu. Táto metóda umožňuje študovať aktívne oblasti mozgu počas rôznych úloh a stimulov.
Magnetoencefalografia (MEG): MEG je technika, ktorá meria magnetické polia generované aktivitou neurónov v mozgu. Táto metóda je používaná na skúmanie veľmi presných časových rozpätí mozgových aktivít.
1.4. Kalibrácia
Kalibrácia je dôležitým krokom pri používaní zariadenia Emotiv Epoc. Tento proces slúži na vytvorenie individuálneho profilu používateľa a správne mapovanie jeho mozgových aktivít na konkrétne emócie a kognitívne stavy. Kalibrácia je nevyhnutná, pretože každý mozog je jedinečný a vyžaduje si individuálnu konfiguráciu zariadenia.
Postup kalibrácie Emotiv Epocu:
- Umiestnenie headsetu: Používateľ si nasadí Emotiv Epoc na hlavu a uistí sa, že elektrody sú správne umiestnené na skalpe a pohodlné na nosenie.
1.5. Unity - import Emotiv SDK
Príprava Unity
Po nainštalovaní Unity si v Unity Hub vytvoríme nový projekt

V zozname šablón zvolíme 2D, projekt si pomenujeme a vytvoríme

Po vytvorení projektu vložíme Emitv Unity Plugin (odkaz na stiahnutie) – v Assets vytvoríme priečinok s názvom Plugins a do neho presunieme Plugin unity-plugin-master. V prípade že vyskočí chyba s JsonNet, tak ho podľa danej cesty vymažeme.


2. Emotiv Epoc - softvér na vývoj
Súpravy vývojárskych nástrojov (SDK) uľahčujú integráciu do aplikácií a hier. Spoločnosť Emotiv poskytuje podporu a dokumentáciu pre Unity a Unreal Engine, takže vývojári môžu využívať výhody EEG meraní bez ohľadu na zvolenú platformu, sú ale medzi nimi určité rozdiely.
Unity:
SDK pre Unity je ideálny pre projekty, ktoré si vyžadujú rýchlu iteráciu a vytváranie prototypov. Unity je obzvlášť dobrý pri vývoji 2D a mobilných hier. Ak je teda vaša aplikácia zameraná na tieto oblasti, SDK pre Unity môže byť najlepšou voľbou. Unity je napísané v jazyku C#. Tento jazyk sa vo všeobecnosti považuje za jednoduchší a prístupnejší jazyk, čo je výhodné pre tých, ktorí sa práve učia programovať.
Unreal Engine:
Unreal Engine je známy svojou schopnosťou vytvárať vysokokvalitné 3D prostredia a má skvelé nástroje na vizualizáciu údajov. V tomto Engine sa používa jazyku C++, ktorý sa všeobecne považuje za sofistikovanejší jazyk. Ponúka však výhody v oblasti výkonu a ovládania, ktoré sú dôležité pre najnáročnejšie aplikácie.
2.1. Quiz
Vytvorenie panelu – v Hierarchy vytvoríme cez pravé tlačidlo UI -> Panel. Toto bude naša obrazovka kde postupne pridáme tlačidlá a texty.

Pridanie textov – Do objektu Panel pridáme Text – TextMeshPro cez UI -> Text – TextMeshPro (ak vyskočí okno pre import TMP tak len potvrdíme). Po vytvorení ho v Hierarchy premenujeme na Question.

Objekt vieme presúvať po scéne cez Move Tool a meniť veľkosť cez Rect Tool. Presunieme teda text do hornej časti Panelu.

V Inspectore upravíme text a vycentrujeme.

Takýmto štýlom pridáme ešte dva texty do horných rohov Panela, ktorým nastavíme text na 0. V Hierarchy si texty pomenujeme Score a Timer.

Pridanie tlačidiel - Pridáme do panela 3 tlačidlá cez UI -> Button – TextMeshPro. Pomenujeme ich Start, Answer1, Answer2.

Tlačidlo Start presunieme do dolnej časti. Tlačidlo Answer1 presunieme na ľavú stranu a Answer2 na pravú stranu. Nastavíme im Width na 200 a Height na 100.

Každé tlačidlo obsahuje objekt Text. Text tlačidla Start nastavíme na Start.


Vytvorenie scriptu – v Assets vytvoríme C# Script, ktorý pomenujeme Quiz a otvoríme.

Na začiatok scriptu pridáme knižnice:
- je samotný Emotiv plugin
- je UI podpora tlačidiel
- knižnica pre Text - TMPro
using EmotivUnityPlugin; using UnityEngine.UI; using TMPro;
Do class Quiz pridáme premenné pre prihlásenie sa do Emotiv
Cortex API (potrebné pre prácu s Emotiv zariadením)
private string _clientId = ""; private string _clientSecret = ""; private string _appName = "emotiv"; private string _appVersion = "3.3.0"; EmotivUnityItf _eItf = EmotivUnityItf.Instance; DataStreamManager _dsManager = DataStreamManager.Instance; float _timerDataUpdate = 0; const float TIME_UPDATE_DATA = 1f; bool _isDataBufferUsing = false; // default subscribed data will not saved to Data buffer
Pridáme taktiež premenné pre Quiz
// Premenné na nastavenie Textov public TMP_Text QuestionText; public TMP_Text Answer1Text; public TMP_Text Answer2Text; public TMP_Text ScoreText; public TMP_Text TimerText; private bool _DataSubscribed = false; private bool _QuizEnabled = false; private int _AnswerBtn = -1; // cislo tlacidla so spravnym vysledkom private int _Score = 0; private int _SelAnswer = -1; // cislo zvoleneho tlacidla private float _Timer; // Maximalne cislo pri generovani prikladov private const int _MaxMathNum = 10;
Pridáme funckiu SetQnA,
ktorá bude generovať príklady
void SetQnA() { int num1 = Random.Range(1, _MaxMathNum + 1); int num2 = Random.Range(1, _MaxMathNum + 1); QuestionText.text = "Kolko je " + num1 + " + " + num2 + "?"; int answer = num1 + num2; // Nahodne nastavenie nespravneho vysledku (bud +1 alebo -1) int incorrect = (Random.Range(1, 3) == 1) ? 1 : -1; // Nahodny vyber tlacidla so spravnym vysledkom if ((_AnswerBtn = Random.Range(1, 2 + 1)) == 1) { num1 = answer; num2 = answer + incorrect; } else { num1 = answer + incorrect; num2 = answer; } Answer1Text.text = num1.ToString(); Answer2Text.text = num2.ToString(); }
Pridáme funckiu AnswerButtonSetup,
ktorá bude nastavovať farbu tlačidlám
void AnswerButtonSetup(int button, Color color) { if (button == 1) { GameObject.Find("Answer1").GetComponent<Button>().GetComponent<Image>().color = color; } else if (button == 2) { GameObject.Find("Answer2").GetComponent<Button>().GetComponent<Image>().color = color; } }
Pridáme funckiu ResetQnA, ktorá bude resetovať premenné do defaultu
void ResetQnA() { _AnswerBtn = -1; _Timer = 8; _SelAnswer = -1; QuestionText.text = "Toto je otázka?"; Answer2Text.text = "Odpoved"; Answer1Text.text = "Odpoved"; ScoreText.text = _Score.ToString(); TimerText.text = _Timer.ToString(); AnswerButtonSetup(1, Color.white); AnswerButtonSetup(2, Color.white); }
Pridáme funkciu StartQnA, ktorá spustí celý Quiz
void StartQnA() { ResetQnA(); SetQnA(); }
Do funkcie Start pridáme ResetQnA a inicializujeme Emotiv
void Start() { ResetQnA(); _eItf.Init(_clientId, _clientSecret, _appName, _appVersion, _isDataBufferUsing); _eItf.Start(); // Start Emotiv // Hook pre ziskanie dat o mimike _dsManager.FacialExpReceived += OnFacialExpReceived; }
Do funkcie Update pridáme Timer pre Quiz a kontrolu ci je spustená detekcia mimiky tváre
void Update() { // Ak je Quiz zapnuty, spusti sa odpocet, ktory na konci skontroluje odpovede if (_QuizEnabled) { _Timer -= Time.deltaTime; if (Mathf.FloorToInt(_Timer % 60) >= 0) { AnswerButtonSetup(_SelAnswer, Color.yellow); if (Mathf.FloorToInt(_Timer % 60) == 0) { // Kontrola odpovedi a nastavenie Score if (_AnswerBtn == _SelAnswer) { _Score++; AnswerButtonSetup(_AnswerBtn, Color.green); } else { _Score--; AnswerButtonSetup(_AnswerBtn, Color.green); if (_SelAnswer != -1) AnswerButtonSetup(_SelAnswer, Color.red); } _Timer = -1; } } else if (_Timer <= -2.0) StartQnA(); } // Nastavenie textov na obrazovke QuestionText.text = QuestionText.text; Answer2Text.text = Answer2Text.text; Answer1Text.text = Answer1Text.text; ScoreText.text = _Score.ToString(); // Text s casom bude vzdy mat hodnotu >= 0 TimerText.text = (_Timer >= 0) ? Mathf.FloorToInt(_Timer % 60).ToString() : "0"; // Spusti kontrolu Subscribe (spustenie detekcie v nasom pripade mimiky tvare) // raz za 1f (DEC: 31) aby sa nespustala kontrola kazdy frame _timerDataUpdate += Time.deltaTime; if (_timerDataUpdate < TIME_UPDATE_DATA) return; _timerDataUpdate -= TIME_UPDATE_DATA; if (_eItf.IsAuthorizedOK && _eItf.IsSessionCreated && !_DataSubscribed) { SetupSubscribe(); } }
Pridáme funkciu, ktorá sa vyvolá vždy keď sa získajú nové dáta o mimike
private void OnFacialExpReceived(object sender, FacEventArgs data) { // Ak uz je nejaka odpoved zvolená alebo nie je Quiz zapnuty -> return if (_SelAnswer != -1 || !_QuizEnabled) return; // Zmurknutie Lavym alebo Pravym okom if (data.EyeAct == "winkL") _SelAnswer = 1; else if (data.EyeAct == "winkR") _SelAnswer = 2; }
Pridáme funckiu onCreateSessionBtnClick, ktorá sa vyvolá pri stlačení tlačidla Start
public void onCreateSessionBtnClick() { // Pri vyuzivani Emotiv je potrebne vytvorit Session if (!_eItf.IsSessionCreated) { _eItf.CreateSessionWithHeadset(null); } // Ak klikneme na Start, zmeni sa nazov tlacidla na Stop a spusti sa Quiz // Ak klikneme na Stop, zmeni sa nazov tlacidla na Start a vypne sa Quiz if (!_QuizEnabled) { _QuizEnabled = true; StartQnA(); GameObject.Find("Start").GetComponent<Button>().GetComponentInChildren<TMP_Text>().text = "Stop"; } else { _QuizEnabled = false; _Score = 0; ResetQnA(); GameObject.Find("Start").GetComponent<Button>().GetComponentInChildren<TMP_Text>().text = "Start"; } }
Pridanie funckie OnApplicationQuit, ktorá sa vyvolá keď vypneme hru.
void OnApplicationQuit() { Debug.Log("Application ending after " + Time.time + " seconds"); _eItf.Stop(); }
Pridanie funckie SetupSubscribe
private void SetupSubscribe() { // Spustenie Subscribe pre face (mimiku) if (_eItf.IsSessionCreated) { List<string> _streams = new List<string> {}; _streams.Add("fac"); _eItf.DataSubLog = ""; // clear data subscribing log _eItf.SubscribeData(_streams); _DataSubscribed = true; } else { UnityEngine.Debug.LogError("Must create a session first before subscribing data."); } }
Script uložíme a presunieme ho z Assets do objektu Canvas

Z Hierarchy presunieme všetky texty na pravú stranu do scriptu podľa názvov. Question do Question Text, Text (TMP) pod tlačidlom Answer1 do Answer1 Text ...


Klikneme na objekt (tlačidlo) Start v Hierarchy a na pravej strane pod Button pridáme On Click (cet +) a to políčka na objekt presunieme z Hierarchy objekt Canvas. Do políčka No Function nastavíme funckiu onCreateSessionBtnClick. Teraz vždy po stlačení tlačidla Start/Stop sa zavolá daná funkcia.


Hru už len otestujeme (pred spustením je potrebné mať pripojené zariadenie a nastavené cez Emotiv Launcher).