Skip to content

Commit 099ba47

Browse files
committed
To be tested: initial implementation of v1 params mapping
1 parent 705ff6c commit 099ba47

1 file changed

Lines changed: 43 additions & 12 deletions

File tree

ExpressionStrategies/V1Mapper.cs

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,66 @@
11
using VRCFaceTracking.Core.Params.Data;
2+
using VRCFaceTracking.Core.Params.Expressions;
3+
using VRCFaceTracking.Core.Types;
24

35
namespace ETVRTrackingModule.ExpressionStrategies;
46

57
public class V1Mapper : IExpressionMapper
68
{
7-
private Dictionary<string, float> parameterValues = new()
9+
private Dictionary<string, float> _parameterValues = new()
810
{
9-
{ "RightEyeLidExpandedSqueeze", 0f }, // no fucking idea if this should be EyeWide bullfuck
11+
{ "RightEyeLidExpandedSqueeze", 0f },
1012
{ "LeftEyeLidExpandedSqueeze", 0f },
1113
{ "LeftEyeX", 0f },
1214
{ "RightEyeX", 0f },
1315
{ "EyesY", 0f },
1416
};
1517

16-
private string[] eyeExpressions = new[]
17-
{
18-
"RightEyeLidExpandedSqueeze",
19-
"LeftEyeLidExpandedSqueeze"
20-
};
21-
2218
public void handleOSCMessage(OSCMessage message)
2319
{
24-
string paramToMap = IExpressionMapper.GetParamToMap(message.address);
25-
if (parameterValues.ContainsKey(paramToMap))
20+
var paramToMap = IExpressionMapper.GetParamToMap(message.address);
21+
if (_parameterValues.ContainsKey(paramToMap))
2622
{
27-
parameterValues[paramToMap] = message.value;
23+
_parameterValues[paramToMap] = message.value;
2824
}
2925
}
3026

3127
public void UpdateVRCFTEyeData(ref UnifiedEyeData eyeData, ref UnifiedExpressionShape[] eyeShapes)
3228
{
33-
throw new NotImplementedException();
29+
HandleEyeOpenness(ref eyeData, ref eyeShapes);
30+
HandleEyeGaze(ref eyeData);
31+
}
32+
33+
private void HandleEyeOpenness(ref UnifiedEyeData eyeData, ref UnifiedExpressionShape[] eyeShapes)
34+
{
35+
// we should widen the eye
36+
if (_parameterValues["RightEyeLidExpandedSqueeze"] > 0.8f)
37+
{
38+
eyeData.Right.Openness = _parameterValues["RightEyeLidExpandedSqueeze"];
39+
eyeShapes[(int)UnifiedExpressions.EyeWideRight].Weight = 1;
40+
}
41+
if (_parameterValues["RightEyeLidExpandedSqueeze"] < 0.0f)
42+
{
43+
eyeData.Right.Openness = _parameterValues["RightEyeLidExpandedSqueeze"];
44+
eyeShapes[(int)UnifiedExpressions.EyeSquintRight].Weight = -1;
45+
}
46+
eyeData.Left.Openness = _parameterValues["RightEyeLidExpandedSqueeze"];
47+
48+
if (_parameterValues["LeftEyeLidExpandedSqueeze"] > 0.8f)
49+
{
50+
eyeData.Left.Openness = _parameterValues["LeftEyeLidExpandedSqueeze"];
51+
eyeShapes[(int)UnifiedExpressions.EyeWideLeft].Weight = 1;
52+
}
53+
if (_parameterValues["LeftEyeLidExpandedSqueeze"] < 0.0f)
54+
{
55+
eyeData.Left.Openness = _parameterValues["LeftEyeLidExpandedSqueeze"];
56+
eyeShapes[(int)UnifiedExpressions.EyeSquintLeft].Weight = -1;
57+
}
58+
eyeData.Left.Openness = _parameterValues["LeftEyeLidExpandedSqueeze"];
59+
}
60+
61+
private void HandleEyeGaze(ref UnifiedEyeData eyeData)
62+
{
63+
eyeData.Right.Gaze = new Vector2(_parameterValues["RightEyeX"], _parameterValues["EyesY"]);
64+
eyeData.Left.Gaze = new Vector2(_parameterValues["LeftEyeX"], _parameterValues["EyesY"]);
3465
}
3566
}

0 commit comments

Comments
 (0)