Source: Scratch Wiki en français
Depuis le 3 octobre 2025, l'extension "Reconnaissance faciale" permet de détecter l'orientation du visage sur l'axe X (roulis) à l'aide du bloc (Orientation du visage :: extension). Cependant, aucun bloc ne permet bloc ne permet de détecter l'orientation du visage sur les axes Y et Z (tangage et lacet)
Mais Scratch nous donne les outils qui permettent de créer ces blocs.
L'orientation sur l'axe X (roulis)
Le bloc (Orientation du visage :: extension) nous permet de connaître l'orientation du visage sur l'axe X (roulis)
L'orientation sur l'axe Y (tangage)
La détection se fera à l'aide d'un bloc personnalisé qui renverra dans la variable (Orientation du visage sur l'axe Y) l'orientation correspondante. Ce même bloc sera divisé en plusieurs blocs
définir Détection de l'orientation sur l'axe Y :: custom Détection droite :: custom Détection gauche :: custom
Le principe ici va être de déterminer l'angle à partir des positions des oreilles et des yeux, de l'angle entre la ligne qui les sépare et l'horizontale
La détection sur la droite
définir Détection droite :: custom aller à (l'oeil droit v) :: extension mettre [position X de l'oeil v] à (abscisse x) mettre [position Y de l'oeil v] à (ordonnée y) aller à (l'oreille droite v) :: extension ajouter ((Taille du visage :: extension) * (0.1)) à y // suppression de la différence naturelle entre la hauteur des oreilles et celle des yeux mettre [Orientation du visage sur l'axe Y v] à ([atan v] de (((ordonnée y) - (position Y de l'oeil)) / ((abscisse x) - (position X de l'oeil)))) //obtention de l'angle en utilisant la fonction arc-tangente
La détection sur la gauche
définir Détection gauche :: custom aller à (l'oeil gauche v) :: extension mettre [position X de l'oeil v] à (abscisse x) mettre [position Y de l'oeil v] à (ordonnée y) aller à (l'oreille gauche v) :: extension ajouter ((Taille du visage :: extension) * (0.1)) à y // suppression de la différence naturelle entre la hauteur des oreilles et celle des yeux mettre [Orientation du visage sur l'axe Y v] à ((([atan v] de (((ordonnée y) - (position Y de l'oeil)) / ((position X de l'oeil) - (abscisse x)))) + (Orientation du visage sur l'axe Y)) / (2)) //on fait la moyenne des valeurs obtenues
L'orientation sur l'axe Z (Lacet)
La détection se fera à l'aide d'un bloc personnalisé qui renverra dans la variable (Orientation du visage sur l'axe Z) l'orientation correspondante. Ce même bloc seras divisé en plusieurs blocs
définir Détection de l'orientation sur l'axe Z :: custom Détection de la position du nez :: custom Détection à partir de la bouche :: custom Détection à partir du front :: custom
Le principe ici va être de déterminer l'angle à partir des positions du nez et de la bouche et du front, de l'angle entre la ligne qui les sépare et la verticale
La détection de la position du nez
définir Détection de la position du nez :: custom aller au (nez v) :: extension mettre [position X du nez v] à (abscisse x) mettre [position Y du nez v] à (ordonnée y)
La détection à partir de la bouche
définir Détection à partir de la bouche :: custom aller à la (bouche v) :: extension mettre [Orientation du visage sur l'axe Z v] à ([atan v] de (((abscisse x) - (position X du nez)) / ((position Y du nez) - (ordonnée y)))) //obtention de l'angle en utilisant la fonction arc-tangente
La détection à partir du front
définir Détection à partir du front :: custom aller à (entre les yeux v) :: extension mettre [Orientation du visage sur l'axe Z v] à (((Orientation du visage sur l'axe Z) + ([atan v] de (((abscisse x) - (position X du nez)) / ((position Y du nez) - (ordonnée y))))) / (2)) //on fait la moyenne des valeurs obtenues