Publicat per

(R2) Healthysmile – Halloween Edition

  1. Introducció

L’encàrrec de HealthySmile tenia com a objectiu crear una aplicació interactiva que animés els infants a mantenir la boca oberta mentre s’observen les dents, utilitzant la càmera i una temàtica de Halloween. L’aplicació havia d’emprar p5.js per a la part visual i una llibreria externa de visió artificial per detectar l’ obertura de la boca en temps real.

 

  1. FaceMesh

S’ha desenvolupat tot amb p5.js i ml5.js (FaceMesh), ja que ml5 s’integra fàcilment amb p5 i disposa de models preentrenats de reconeixement facial. Inicialment es van detectar errors com ml5.facemesh is not a function, resolts actualitzant la versió de la llibreria a ml5@0.12.2. També es van corregir problemes amb la càmera i la sincronització del model, assegurant que el vídeo es carregués abans de crear el FaceMesh.

 

  1. Detecció de la boca

Per comprovar si la boca està oberta, s’ha calculat un MAR (Mouth Aspect Ratio) a partir de punts facials concrets del model (13, 14, 61 i 291). L’usuari pot ajustar el llindar de detecció (MAR) mitjançant un slider DOM. Aquesta detecció és la base de totes les accions visuals i sonores del joc.

  1. Interfície i flux del joc

Abans d’activar la càmera, l’usuari ha de validar els permisos i prémer el botó “Començar”, tal com recomana l’enunciat per motius de permisos i usabilitat. El flux és el següent:

  1. Es mostra una pantalla de càrrega amb el logo de l’app.
  2. Quan s’ha carregat tot, l’ usuari prem “Començar”.
  3. Quan s’obre la boca, s’activen les partícules animades i el so de raspallat.
  4. Cada 5 segons de boca oberta apareix un ratpenat com a premi.
  5. En aconseguir l’últim ratpenat, es mostra el missatge d’enhorabona i sona el so d’èxit.

També s’ha afegit un botó per reiniciar la partida i un altre per activar o desactivar la música de fons.

  1. Partícules i aspecte visual

S’ha implementat un sistema de partícules amb forma de carabasses que apareixen a prop de la boca quan aquesta és oberta. Inicialment les partícules es generaven al costat equivocat del rostre; aquest error s’ha resolt aplicant un mirall horitzontal sobre la posició detectada. S’ha ajustat la mida, la dispersió i el moviment per aconseguir un efecte més suau i coherent amb la temàtica. Cal esmentar que a les primeres versions es van intentar afegir ratpenats, per mantenir coherència amb el logotip, però quedava més fluid i vistós amb les carabasses.

 

  1. So i multimèdia

L’aplicació inclou diversos elements sonors, prèviament fabricats amb “text-to-speech” i una mica d’edició bàsica amb efectes de so:

  • RASPALLAT.mp3: s’activa quan la boca és oberta.
  • BGMUSICA.mp3: música de fons amb control ON/OFF i volum.
  • NOVAICON.mp3: sona cada cop que apareix un nou ratpenat.
  • EXIT.mp3: s’activa al final del joc.

El volum del raspallat i de la música de fons és ajustable des d’un slider comú.

 

  1. Problemes i solucions

Durant el desenvolupament s’han trobat alguns inconvenients:

  • Desfassament entre vídeo i punts del model: solucionat amb el càlcul mirallat de coordenades.
  • Sons que no s’aturaven en tancar la boca: corregit amb control explícit de pause() i currentTime = 0.
  • Elements de la interfície fora de lloc: reorganitzats dins de la mateixa caixa visual.
  • El degradat inicial (vinyeta) tapava el vídeo: eliminat després d’algunes probes per mantenir claredat visual.

 

  1. Resultat final i valoració

El resultat final és una aplicació funcional que compleix amb els requisits de:

  • Detecció real d’obertura de boca amb FaceMesh.
  • Interfície amb controls DOM (botons, sliders).
  • Partícules animades i sons temàtics de Halloween.
  • Missatge final d’èxit i reinici del joc.

Enllaç al repositori GitHub:

https://josepmsole.github.io/R2_Healthysmile_Halloween-Edition/

NOTA: Aquesta versió és una DEMO que es pot completar amb 3 ratpenats (15 segons), per tal de comprovar-ne la operativa. La versió final del joc hauria de tenir una durada d’entre 1-2 minuts (2 minuts és el que es recomana per la higiene infantil, però no es té la boca oberta durant tota l’estona, així que ho podríem ajustar a 1 minut: 12 ratpenats). Cal acabar d’aclarir amb el client.

Debat0el (R2) Healthysmile – Halloween Edition

Deixa un comentari