From db368b4311c1d4e7092dc8f80085d0d187f4ebec Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Sat, 26 Nov 2016 21:04:30 +0100 Subject: [PATCH] Better mouth shape descriptions --- README.adoc | 2 +- src/core/Shape.h | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/README.adoc b/README.adoc index 50b4828..1991adc 100644 --- a/README.adoc +++ b/README.adoc @@ -45,7 +45,7 @@ This shape is also used as an in-between when animating from {A} or {B} to {D}. | Wide open mouth. This mouth shapes is used for vowels like "`AA`" as in f**a**ther, "`AE`" as in b**a**t, and "`AY`" as in wh**y**. | {E} | image:img/ken-E.png[] -| Slightly rounded mouth. This mouth shape is used for vowels like "`AO`" as in **o**ff, "`UH`" as in sh**ou**ld, and "`OW`" as in sh**o**w. +| Slightly rounded mouth. This mouth shape is used for vowels like "`AO`" as in **o**ff. This shape is also used as an in-between when animating from {C} or {D} to {F}. Make sure the mouth isn't wider open than for {C}. Both {C}{E}{F} and {D}{E}{F} should result in smooth animation. diff --git a/src/core/Shape.h b/src/core/Shape.h index d7bef40..b211146 100644 --- a/src/core/Shape.h +++ b/src/core/Shape.h @@ -6,15 +6,21 @@ // For reference, see http://sunewatts.dk/lipsync/lipsync/article_02.php // For visual examples, see https://flic.kr/s/aHsj86KR4J. Their shapes "BMP".."L" map to A..H. enum class Shape { - A, // Closed mouth (silence, M, B, P) - B, // Clenched teeth (most vowels, m[e]n) - C, // Mouth slightly open (b[ir]d, s[ay], w[i]n...) - D, // Mouth wide open (b[u]t, m[y], sh[ou]ld...) - E, // h[ow] - F, // Pout ([o]ff, sh[ow]) - G, // F, V - H, // L + // Basic shapes + + A, // Closed mouth (M, B, P) + B, // Clenched teeth (most consonants, some vowels like EE as in b[ee]) + C, // Open mouth (vowels like m[e]n, s[u]n, s[a]y) + D, // Mouth wide open (vowels like f[a]ther, b[a]t, wh[y]) + E, // Rounded mouth (vowels like [o]ff) + F, // Puckered lips (y[ou], b[o]y, [w]ay) + + // Extended shapes + + G, // "F", "V" + H, // "L" X, // Idle + EndSentinel };