Apply blendshapes to model

main
copygirl 2 weeks ago
parent 679f5935ba
commit 6cb085ff82
  1. 21
      copyMediaPipe.gd

@ -1,10 +1,15 @@
class_name copyMediaPipe
extends Mod_Base
var Blendshapes = preload("res://Mods/MediaPipe/MediaPipeController_BlendShapes.gd")
# -----------------------------------------------------------------------------
# Potentially configurable variables.
# -----------------------------------------------------------------------------
enum BlendshapeMode { NONE, MEDIA_PIPE, VRM_STANDARD }
var blendshape_mode := BlendshapeMode.VRM_STANDARD
var arm_rest_angle := 65
var interpolation_factor := 0.000000001 # Yes this value needs to be THAT small.
var rest_interpolation_factor := 0.2 # "Lerp about 80% of the way in one second."
@ -86,6 +91,7 @@ func _process(delta: float) -> void:
receive_tracker_packets()
update_visual_trackers(delta)
update_ik_chains()
update_blendshapes()
## Sets up 21 nodes for the landmarks that make up hand/finger tracking.
func setup_hand_landmarks() -> void:
@ -348,6 +354,21 @@ func update_ik_chains() -> void:
for chain in ik_chains:
chain.do_ik_chain()
func update_blendshapes() -> void:
var model := get_model()
if (not model) or (not head.last_data): return
var data: Dictionary = head.last_data.blendshapes
var shape_dict: Dictionary
match blendshape_mode:
BlendshapeMode.MEDIA_PIPE: shape_dict = data
BlendshapeMode.VRM_STANDARD: shape_dict = \
Blendshapes.convert_mediapipe_shapes_to_vrm_standard(data)
# TODO: Blendshapes.apply_smoothing(...)
Blendshapes.fixup_eyes(shape_dict)
Blendshapes.apply_animations(model, shape_dict)
# -----------------------------------------------------------------------------
# Utility functions, currently only relating to update_visual_trackers.
# -----------------------------------------------------------------------------

Loading…
Cancel
Save