Skip to content

Commit

Permalink
Introduces the following:
Browse files Browse the repository at this point in the history
- XBox One Controller support.
- New Project Logo.
- Improvements to Sphinx phoneme breakdown.
- Misc fixes and improvements.
- Version bump to 0.2.3.

Commit List:

* xbox controller support; improvements to controller data model

* fix a nasty bug where long stretches of silence would block processing and cause yerface to run the system out of RAM

* version bump

* fix event replay for performance capture sessions which have been trimmed

* keep the CLI documentation up to date

* corrects an issue with phoneme breakdowns not making it into the output event data, and corrects an issue causing lip flapping to leak into offline event data

* improve SphinxDriver configuration

* introduce phoneme magnitude adjustment based on lip flapping (which is itself based on observed audio amplitude)

* update copyright and project logo
  • Loading branch information
alexmarkley committed Oct 16, 2019
1 parent 859cf83 commit c028257
Show file tree
Hide file tree
Showing 20 changed files with 1,034 additions and 123 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2017-2019 Alex Markley
Copyright (c) 2017-2019 Markley Bros. Entertainment, LLC

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<img align="right" height="200" src="doc/images/yer-face-logo.jpg" />YerFace!
<img align="right" height="200" src="doc/images/yer-face-logo-weboptimized.png" />YerFace!
========
A stupid facial performance capture engine for cartoon animation.

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.2
0.2.3
208 changes: 126 additions & 82 deletions data/yer-face-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,46 @@
"poseRotationPlusMinusZ": 15,
"poseRejectionResetAfterSeconds": 0.1,
"solvePnPVertices": {
"vertexNoseSellion": [0.0, 0.0, 0.0],
"vertexEyeRightOuterCorner": [-65.5, 5.0, -20.0],
"vertexEyeLeftOuterCorner": [65.5, 5.0, -20.0],
"vertexRightEar": [-77.5, 6.0, -100.0],
"vertexLeftEar": [77.5, 6.0, -100.0],
"vertexNoseTip": [0.0, 48.0, 21.0],
"vertexStommion": [0.0, 75.0, 10.0],
"vertexMenton": [0.0, 133.0, 0.0]
"vertexNoseSellion": [
0.0,
0.0,
0.0
],
"vertexEyeRightOuterCorner": [
-65.5,
5.0,
-20.0
],
"vertexEyeLeftOuterCorner": [
65.5,
5.0,
-20.0
],
"vertexRightEar": [
-77.5,
6.0,
-100.0
],
"vertexLeftEar": [
77.5,
6.0,
-100.0
],
"vertexNoseTip": [
0.0,
48.0,
21.0
],
"vertexStommion": [
0.0,
75.0,
10.0
],
"vertexMenton": [
0.0,
133.0,
0.0
]
},
"depthSlices": {
"A": -27,
Expand Down Expand Up @@ -77,90 +109,102 @@
"websocketServerPort": 9002
},
"SphinxDriver": {
"hiddenMarkovModel": "sphinx-models/en-us/en-us",
"allPhoneLM": "sphinx-models/en-us/en-us-phone.lm.bin",
"lipFlapping": {
"targetPhoneme": "AI",
"responseThreshold": 0.075,
"nonLinearResponse": 0.8,
"notInSpeechScale": 0.75
"responseThreshold": 0.15,
"nonLinearResponse": 0.1,
"notInSpeechScale": 0.1
},
"sphinxToPrestonBlairPhonemeMapping": {
"AA": "AI",
"AE": "AI",
"AH": "AI",
"AO": "O",
"AW": "O",
"AY": "AI",
"B": "MBP",
"CH": "etc",
"D": "etc",
"DH": "etc",
"EH": "E",
"ER": "E",
"EY": "E",
"F": "FV",
"G": "etc",
"HH": "etc",
"IH": "AI",
"IY": "E",
"JH": "etc",
"K": "etc",
"L": "L",
"M": "MBP",
"N": "L",
"NG": "L",
"OW": "O",
"OY": "WQ",
"P": "MBP",
"R": "etc",
"S": "etc",
"SH": "etc",
"T": "etc",
"TH": "etc",
"UH": "U",
"UW": "U",
"V": "FV",
"W": "WQ",
"Y": "etc",
"Z": "etc",
"ZH": "etc"
"sphinx": {
"influenceOfLipFlappingOnResult": 1.0,
"hiddenMarkovModel": "sphinx-models/en-us/en-us",
"allPhoneLM": "sphinx-models/en-us/en-us-phone.lm.bin",
"prestonBlairPhonemeMapping": {
"AA": "AI",
"AE": "AI",
"AH": "AI",
"AO": "O",
"AW": "O",
"AY": "AI",
"B": "MBP",
"CH": "etc",
"D": "etc",
"DH": "etc",
"EH": "E",
"ER": "E",
"EY": "E",
"F": "FV",
"G": "etc",
"HH": "etc",
"IH": "AI",
"IY": "E",
"JH": "etc",
"K": "etc",
"L": "L",
"M": "MBP",
"N": "L",
"NG": "L",
"OW": "O",
"OY": "WQ",
"P": "MBP",
"R": "etc",
"S": "etc",
"SH": "etc",
"T": "etc",
"TH": "etc",
"UH": "U",
"UW": "U",
"V": "FV",
"W": "WQ",
"Y": "etc",
"Z": "etc",
"ZH": "etc"
}
},
"PreviewHUD": {
"vuMeterWidth": 4,
"vuMeterWidth": 10,
"vuMeterWarningThreshold": 0.85,
"vuMeterPeakHoldSeconds": 1.0
"vuMeterPeakHoldSeconds": 5.0
}
},
"EventLogger": {
},
"EventLogger": {},
"SDLDriver": {
"joystick": {
"enabled": true,
"eventsRaw": true,
"controllerSettings": {
"default": {
"buttonEventMapping": {
"basis": 9,
"previewDebugDensity": 8
},
"axisSettings": {
"max": 32767,
"min": 10
}
},
"Nintendo GameCube Controller Adapter": {
"buttonEventMapping": {
"basis": 9,
"previewDebugDensity": 7
},
"axisSettings": {
"max": 22000,
"min": 500
}
}
"joystick": {
"enabled": true,
"eventsRaw": true,
"controllerSettings": {
"default": {
"buttonEventMapping": {
"basis": 9,
"previewDebugDensity": 8
},
"axisSettings": {
"max": 32767,
"min": 10
}
},
"Nintendo GameCube Controller Adapter": {
"buttonEventMapping": {
"basis": 9,
"previewDebugDensity": 7
},
"axisSettings": {
"max": 22000,
"min": 500
}
},
"Generic X-Box pad": {
"buttonEventMapping": {
"basis": 7,
"previewDebugDensity": 8
},
"axisSettings": {
"max": 32767,
"min": 50
}
}
}
}
},
"PreviewHUD": {
"numWorkersPerCPU": 0.5,
Expand All @@ -171,4 +215,4 @@
"previewCenterHeightPercentage": 0.2
}
}
}
}
13 changes: 13 additions & 0 deletions doc/CommandLineUsage.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,19 @@ Important notes:
Input event data / replay file. (Previously generated outEventData, for re-processing recorded sessions.)
```

### Input Event Data Start Seconds
_Use this parameter to compensate for alignment issues between the event data timestamps and the input video timestamps._

Important notes:
- Often you only want to use a part of a recorded performance capture session.
- You can trim the input video/audio before running it through YerFace again.
- This leads to alignment issues between the video timestamps and the event timestamps, which can be corrected with this argument.

```
--inEventDataStartSeconds (value:0.0)
Offset for input event data / replay file timestamps. (Useful if the capture session was trimmed.)
```


Preview Settings
----------------
Expand Down
3 changes: 3 additions & 0 deletions doc/images/yer-face-logo-weboptimized.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions doc/images/yer-face-logo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions doc/images/yer-face-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit c028257

Please sign in to comment.