| 1 | # Config file for FacialLandmarksForCubism |
| 2 | |
| 3 | # The path of this config file should be passed to the constructor |
| 4 | # of the FacialLandmarkDetector. |
| 5 | |
| 6 | # Comments are lines that start with a '#' and are ignored by the parser. |
| 7 | # Note that a line will be considered as a comment ONLY IF the '#' is the |
| 8 | # very first character of the line, i.e. without any preceeding whitespace. |
| 9 | |
| 10 | |
| 11 | ## Section 0: OpenSeeFace connection parameters |
| 12 | osfIpAddress 127.0.0.1 |
| 13 | osfPort 11573 |
| 14 | |
| 15 | ## Section 1: Cubism params calculation control |
| 16 | # |
| 17 | # These values control how the facial landmarks are translated into |
| 18 | # parameters that control the Cubism model, and will vary from person |
| 19 | # to person. The following values seem to work OK for my face, but |
| 20 | # your milage may vary. |
| 21 | |
| 22 | # Section 1.0: Live2D automatic functionality |
| 23 | # Set 1 to enable, 0 to disable. |
| 24 | # If these are set, the automatic functionality in Live2D will be enabled. |
| 25 | # Note: If you set auto blink, eye control will be disabled. |
| 26 | autoBlink 0 |
| 27 | autoBreath 0 |
| 28 | randomMotion 0 |
| 29 | |
| 30 | # Section 1.1: Face Y direction angle (head pointing up/down) |
| 31 | # The Y angle is calculated mainly based on the angle formed |
| 32 | # by the corners and the tip of the nose (hereafter referred |
| 33 | # to as the "nose angle"). |
| 34 | |
| 35 | # This applies an offset (in degrees). |
| 36 | # If you have a webcam at the top of your monitor, then it is likely |
| 37 | # that when you look at the centre of your monitor, the captured image |
| 38 | # will have you looking downwards. This offset shifts the angle upwards, |
| 39 | # so that the resulting avatar will still be looking straight ahead. |
| 40 | faceYAngleCorrection 10 |
| 41 | |
| 42 | # This is the baseline value for the nose angle (in radians) when looking |
| 43 | # straight ahead... |
| 44 | faceYAngleZeroValue 1.8 |
| 45 | |
| 46 | # ... and this is when you are looking up... |
| 47 | faceYAngleUpThreshold 1.3 |
| 48 | |
| 49 | # ... and when looking down. |
| 50 | faceYAngleDownThreshold 2.3 |
| 51 | |
| 52 | # This is an additional multiplication factor applied per degree of rotation |
| 53 | # in the X direction (left/right) - since the nose angle reduces when |
| 54 | # turning your head left/right. |
| 55 | faceYAngleXRotCorrection 0.15 |
| 56 | |
| 57 | # This is the multiplication factor to reduce by when smiling or laughing - |
| 58 | # the nose angle increases in such cases. |
| 59 | faceYAngleSmileCorrection 0.075 |
| 60 | |
| 61 | |
| 62 | # Section 1.2: Eye control |
| 63 | # This is mainly calculated based on the eye aspect ratio (eye height |
| 64 | # divided by eye width). |
| 65 | |
| 66 | # Maximum eye aspect ratio when the eye is closed |
| 67 | eyeClosedThreshold 0.18 |
| 68 | |
| 69 | # Minimum eye aspect ratio when the eye is open |
| 70 | eyeOpenThreshold 0.21 |
| 71 | |
| 72 | # Max eye aspect ratio to switch to a closed "smiley eye" |
| 73 | eyeSmileEyeOpenThreshold 0.6 |
| 74 | |
| 75 | # Min "mouth form" value to switch to a closed "smiley eye" |
| 76 | # "Mouth form" is 1 when fully smiling / laughing, and 0 when normal |
| 77 | eyeSmileMouthFormThreshold 0.75 |
| 78 | |
| 79 | # Min "mouth open" value to switch to a closed "smiley eye" |
| 80 | # "Mouth open" is 1 when fully open, and 0 when closed |
| 81 | eyeSmileMouthOpenThreshold 0.5 |
| 82 | |
| 83 | # Enable winks (experimental) |
| 84 | # Winks may or may not work well on your face, depending on the dataset. |
| 85 | # If all you get is ugly asynchronous blinks, consider setting this to |
| 86 | # zero instead. |
| 87 | # Also, this seems to not work very well when wearing glasses. |
| 88 | winkEnable 1 |
| 89 | |
| 90 | |
| 91 | # Section 1.3: Mouth control |
| 92 | # Two parameters are passed to Cubism to control the mouth: |
| 93 | # - mouth form: Controls smiles / laughs |
| 94 | # - mouth openness: How widely open the mouth is |
| 95 | # Mouth form is calculated by the ratio between the mouth width |
| 96 | # and the eye separation (distance between the two eyes). |
| 97 | # Mouth openness is calculated by the ratio between the lip separation |
| 98 | # (distance between upper and lower lips) and the mouth width. |
| 99 | |
| 100 | # Max mouth-width-to-eye-separation ratio to have a normal resting mouth |
| 101 | mouthNormalThreshold 0.75 |
| 102 | |
| 103 | # Min mouth-width-to-eye-separation ratio to have a fully smiling |
| 104 | # or laughing mouth |
| 105 | mouthSmileThreshold 1.0 |
| 106 | |
| 107 | # Max lip-separation-to-mouth-width ratio to have a closed mouth |
| 108 | mouthClosedThreshold 0.1 |
| 109 | |
| 110 | # Min lip-separation-to-mouth-width ratio to have a fully opened mouth |
| 111 | mouthOpenThreshold 0.4 |
| 112 | |
| 113 | # Additional multiplication factor applied to the mouth openness parameter |
| 114 | # when the mouth is fully smiling / laughing, since doing so increases |
| 115 | # the mouth width |
| 116 | mouthOpenLaughCorrection 0.2 |
| 117 | |
| 118 | |
| 119 | ## Section 2: Filtering parameters |
| 120 | # The facial landmark coordinates can be quite noisy, so I've applied |
| 121 | # a simple moving average filter to reduce noise. More taps would mean |
| 122 | # more samples to average over, hence smoother movements with less noise, |
| 123 | # but it will also cause more lag between your movement and the movement |
| 124 | # of the avatar, and quick movements (e.g. blinks) may be completely missed. |
| 125 | |
| 126 | faceXAngleNumTaps 7 |
| 127 | faceYAngleNumTaps 7 |
| 128 | faceZAngleNumTaps 7 |
| 129 | mouthFormNumTaps 3 |
| 130 | mouthOpenNumTaps 3 |
| 131 | leftEyeOpenNumTaps 3 |
| 132 | rightEyeOpenNumTaps 3 |
| 133 | |