From 58426b93b31fbcffe1921e96e8fd7a2d28d65e1d Mon Sep 17 00:00:00 2001 From: Tim Yuen Date: Tue, 21 Dec 2021 22:04:44 -0500 Subject: [PATCH] start checking out gd impl of real time lip sync Former-commit-id: f95bd62f6ca5e2a6ecc1f8cf361b6205852e56b3 --- addons/real-time-lip-sync-gd/lip_sync.gdns | 8 ++ .../real_time_lip_sync.gdnlib | 14 ++ .../real_time_lip_sync_gd.dll | Bin 0 -> 529920 bytes entities/vrm/VRMModel.gd | 88 +++++++++--- project.godot | 10 ++ resources/gui/tracking.xml | 2 + screens/MainScreen.gd | 2 +- screens/ModelDisplayScreen.gd | 9 +- screens/gui/Toast.gd | 4 + utils/AppManager.gd | 9 ++ utils/ConfigManager.gd | 8 ++ utils/LipSyncManager.gd | 125 ++++++++++++++++++ utils/SignalBroadcaster.gd | 14 ++ 13 files changed, 275 insertions(+), 18 deletions(-) create mode 100644 addons/real-time-lip-sync-gd/lip_sync.gdns create mode 100644 addons/real-time-lip-sync-gd/real_time_lip_sync.gdnlib create mode 100644 addons/real-time-lip-sync-gd/real_time_lip_sync_gd.dll create mode 100644 utils/LipSyncManager.gd diff --git a/addons/real-time-lip-sync-gd/lip_sync.gdns b/addons/real-time-lip-sync-gd/lip_sync.gdns new file mode 100644 index 00000000..ec433630 --- /dev/null +++ b/addons/real-time-lip-sync-gd/lip_sync.gdns @@ -0,0 +1,8 @@ +[gd_resource type="NativeScript" load_steps=2 format=2] + +[ext_resource path="res://addons/real-time-lip-sync-gd/real_time_lip_sync.gdnlib" type="GDNativeLibrary" id=1] + +[resource] +resource_name = "LipSync" +class_name = "LipSync" +library = ExtResource( 1 ) diff --git a/addons/real-time-lip-sync-gd/real_time_lip_sync.gdnlib b/addons/real-time-lip-sync-gd/real_time_lip_sync.gdnlib new file mode 100644 index 00000000..e77f2cb8 --- /dev/null +++ b/addons/real-time-lip-sync-gd/real_time_lip_sync.gdnlib @@ -0,0 +1,14 @@ +[general] + +singleton=false +load_once=true +symbol_prefix="godot_" +reloadable=true + +[entry] + +Windows.64="res://addons/real-time-lip-sync-gd/real_time_lip_sync_gd.dll" + +[dependencies] + +Windows.64=[ ] diff --git a/addons/real-time-lip-sync-gd/real_time_lip_sync_gd.dll b/addons/real-time-lip-sync-gd/real_time_lip_sync_gd.dll new file mode 100644 index 0000000000000000000000000000000000000000..d24894edc30185ca872449d5735b3573b6ce2dd4 GIT binary patch literal 529920 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
aYSQil~iNLxpuVP8(Hp_x<9PviAwcYHN=D?Zm^b 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 void: # TODO stopgap AppManager.sb.connect("blend_shapes", self, "_on_blend_shapes") + AppManager.sb.connect("lip_sync_updated", self, "_on_lip_sync_updated") + # Map expressions var anim_player: AnimationPlayer = find_node("anim") @@ -113,6 +120,8 @@ func _ready() -> void: for key in all_expressions.keys(): set(key, all_expressions[key]) + + current_mouth_shape = a _map_eye_expressions(all_expressions) @@ -154,6 +163,53 @@ func _on_blend_shapes(value: String) -> void: last_expression = ed +func _on_lip_sync_updated(data: Dictionary) -> void: + for x in current_mouth_shape.morphs: + _modify_blend_shape(x.mesh, x.morph, 1) + + last_vowels.push_back(data["vowel"]) + if last_vowels.size() > VOWEL_HISTORY: + last_vowels.pop_front() + + var vowel_count: Dictionary = { + "a": 0, + "i": 0, + "u": 0, + "e": 0, + "o": 0 + } + for x in last_vowels: + match x: + 0: # A + vowel_count.a += 1 + 1: # I + vowel_count.i += 1 + 2: # U + vowel_count.u += 1 + 3: # E + vowel_count.e += 1 + 4: # O + vowel_count.o += 1 + + var last_shape = current_mouth_shape + + if vowel_count.a >= MIN_VOWEL_CHANGE: + current_mouth_shape = a + elif vowel_count.i >= MIN_VOWEL_CHANGE: + current_mouth_shape = i + elif vowel_count.u >= MIN_VOWEL_CHANGE: + current_mouth_shape = u + elif vowel_count.e >= MIN_VOWEL_CHANGE: + current_mouth_shape = e + elif vowel_count.o >= MIN_VOWEL_CHANGE: + current_mouth_shape = o + + if current_mouth_shape != last_shape: + for x in current_mouth_shape.morphs: + _modify_blend_shape(x.mesh, x.morph, 1) + for x in last_shape.morphs: + _modify_blend_shape(x.mesh, x.morph, 0) + ############################################################################### # Private functions # ############################################################################### @@ -276,25 +332,25 @@ func custom_update(data, interpolation_data) -> void: if (last_expression != joy and last_expression != sorrow): # Left eye blinking if data.left_eye_open >= blink_threshold: - for i in blink_r.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[1] - interpolation_data.interpolate(InterpolationData.InterpolationDataType.LEFT_EYE_BLINK, 1.0)) + for x in blink_r.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[1] - interpolation_data.interpolate(InterpolationData.InterpolationDataType.LEFT_EYE_BLINK, 1.0)) else: - for i in blink_r.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[1]) + for x in blink_r.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[1]) # Right eye blinking if data.right_eye_open >= blink_threshold: - for i in blink_l.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[1] - interpolation_data.interpolate(InterpolationData.InterpolationDataType.RIGHT_EYE_BLINK, 1.0)) + for x in blink_l.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[1] - interpolation_data.interpolate(InterpolationData.InterpolationDataType.RIGHT_EYE_BLINK, 1.0)) else: - for i in blink_l.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[1]) + for x in blink_l.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[1]) else: # Unblink if the facial expression doesn't allow blinking - for i in blink_r.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[0]) - for i in blink_l.morphs: - _modify_blend_shape(i.mesh, i.morph, i.values[0]) + for x in blink_r.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[0]) + for x in blink_l.morphs: + _modify_blend_shape(x.mesh, x.morph, x.values[0]) # TODO eyes show weird behaviour when blinking # TODO make sure angle between eyes' x values are at least parallel @@ -340,10 +396,10 @@ func custom_update(data, interpolation_data) -> void: skeleton.set_bone_pose(left_eye_id, right_eye_transform) # Mouth tracking - for i in a.morphs: - _modify_blend_shape(i.mesh, i.morph, - min(max(i.values[0], interpolation_data.interpolate(InterpolationData.InterpolationDataType.MOUTH_MOVEMENT, 2.0)), - i.values[1])) + for x in current_mouth_shape.morphs: + _modify_blend_shape(x.mesh, x.morph, + min(max(x.values[0], interpolation_data.interpolate(InterpolationData.InterpolationDataType.MOUTH_MOVEMENT, 2.0)), + x.values[1])) else: # TODO implement eco mode, should be more efficient than standard mode # Eco-mode blinking diff --git a/project.godot b/project.godot index 9ffa49f6..28ebb3bd 100644 --- a/project.godot +++ b/project.godot @@ -69,6 +69,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://utils/JSONUtil.gd" }, { +"base": "Node", +"class": "LipSyncManager", +"language": "GDScript", +"path": "res://utils/LipSyncManager.gd" +}, { "base": "Reference", "class": "Logger", "language": "GDScript", @@ -122,6 +127,7 @@ _global_script_class_icons={ "GOTHGui": "", "InterpolationData": "", "JSONUtil": "", +"LipSyncManager": "", "Logger": "", "MainScreen": "", "ModelDisplayScreen": "", @@ -138,6 +144,10 @@ config/name="OpenSeeFace GD" run/main_scene="res://screens/MainScreen.tscn" config/icon="res://assets/osfgd_icon.png" +[audio] + +enable_audio_input=true + [autoload] AppManager="*res://utils/AppManager.gd" diff --git a/resources/gui/tracking.xml b/resources/gui/tracking.xml index f65de578..817735d6 100644 --- a/resources/gui/tracking.xml +++ b/resources/gui/tracking.xml @@ -37,6 +37,8 @@