Captura de pantalla del prototip de la pràctica de l’asignatura assignatura de realitat virtual realitzada per Xavi Medina Torregrosa
Autor: Xavi Medina Torregrosa
Descripció: Aquest prototip de realitat mixta és un petit joc que fa servir una càmera web com a interfície lògica, i processant la imatge de la càmera mapeja el moviment del punt amb més lluentor de la imatge per fer-lo servir com a interfície lògica, i aquest punt és marca en l’aplicació amb una rodona vermella. Amb això, podem interactuar amb objectes virtuals que es troben integrats dins de la imatge de la càmera web processada que ens retorna l’aplicació, formant el nostre entorn virtual conjuntament amb les lleis físiques reals que sens aplica a nosaltres al ser el nostre cos amb el que apliquem la interacció com lleis físiques irreals que s’apliquen als objectes virtuals amb els que interactuem. Per a fer el prototip més senzill i com no disposo de sensors de moviment, faig servir directament la imatge de la càmera per obtenir el punt més brillant, encara i que no és del tot precís si la il·luminació de la sala no és adient.
El joc, és un tipus arcade on l’objectiu és fer el major nombre de punts abans de perdre totes les vides, per això, sens presenten en pantalla dos objectes virtuals (sense imatge en el prototip), els quadrats taronges són els enemics, que van donant voltes per la imatge, i els altres són dos quadrats verds que representen les nostre vides, cada vida té dos “cops” abans de morir, i quan li donen un cop té uns tres segons d’invulnerabilitat on no rep danys. Els enemics li treuen un punt de vida cada cop que col·lapsen amb ells, i nosaltres hem d’anar eliminant als enemics abans de que acabin amb les dues vides, per això, hem de tocar-los amb el punt més lluminós (recomanable fer servir un guant negre amb algun element reflectant reflectint i que la llum vingui de davant). A més, podem empentar les vides tocant-les per a moure-les a zones més segures o més fàcils de defensar.
En quant a la realització tècnica, el joc està realitzat en processing, fent servir la pròpia llibreria per a capturar la imatge de la webcam aconseguim una imatge per cada frame processat pel codi, d’aquest imatge, anem mirant cada un dels píxels i fem servir la pròpia funció del processing per a obtenir la lluentor. Un cop tenim el punt més brillant, dibuixem una esfera vermella en aquest punt per a indicar a l’usuari el punt d’interacció. Per a millorar un poc la sensació de moviment anem guardant les posicions més brillants dels frames processats anteriorment en un Array per a pintar esferes més petites que la principal, així queda com un rastre del moviment. Per a afegir més els objectes digitals amb els que l’usuari interactuarà, dibuixem dos objectes que hem definit en una altra classe anomenada ‘Heart’, que contindrà les coordenades en els que es troba, la vida que li queda i si es invulnerable o no. Llavors generarem aleatòriament aquests objectes dintre dels límits de la imatge de la webcam, aquest objectes es representaran com rectangles de color verd sobre la imatge. Després farem aparèixer els enemics, que els definirem també en una classe que anomenarem ‘Enemy’, que farem aparèixer igualment de manera aleatòria però a una distancia prudencial dels objectes ‘Heart’. Així doncs, els objectes enemics s’aniran movent pel mapa en una direcció aleatòria i rebotaran en els límits de la imatge, llavors en cada frame processat, anem comprovant si hi ha deteccions, mirant per cada objecte si qualsevol de les coordenades que comprenen l’objecte entra dins de les coordenades d’un altre objecte. En cas de que el píxel més brillant toqui un ‘Enemy’, aquest es destruirà sumant 100 punts al marcador i tornarà a aparèixer en algun lloc aleatori, si toca un ‘Heart’ el mourà segons la direcció en la que hagi tocat (mirem si la coordenada del punt amb el que toquem està més a la dreta/esquerra o amunt/avall de l’objecte), així podem apartar un ‘Heart’ a un lloc més fàcil de defensar durant la partida. En cas de que un ‘Enemy’ entri dins de les coordenades d’un ‘Heart’, aquest perdrà una vida i canviarà a color blau durant uns segons, els quals és invulnerable i no pot perdre més vides. Així doncs, el lloc acaba quan tots els objectes ‘Heart’ tenen la vida a 0 i llavors apareixerà el missate de ‘Game Over’.
Referents: Aquest prototip parteix d’un projecte d’entrenament quirúrgic, que fa servir uns perifèrics específics com a interfícies físiques de manera que els moviments d’aquests es reflecteixen a la imatge de la simulació. L’empresa a càrrec d’aquests entrenaments quirúrgics per simulació és: Mentice.
Resultat final: Vídeo del resultat final