// By gravity we mean the force that will pull the mask back to its neutral state. private void InitializeGravity() { _isInitialized = false; _gravityStartTime = Time.time; _startGravityAu = _animUnits; _startGravityPos = _position; _startGravityRot = _rotation; }
public static AnimationUnits operator +(AnimationUnits first, AnimationUnits second) { var animUnits = new AnimationUnits(); animUnits.Au012 = first.Au012 + second.Au012; animUnits.Au345 = first.Au345 + second.Au345; return(animUnits); }
// AU3 private float MapBrowLowererValue(AnimationUnits animUnits) { if (animUnits.OuterBrowRaiser > 0f) { return(Mathf.Clamp(animUnits.BrowLowerer - animUnits.OuterBrowRaiser, -1f, 1.7f)); } return(Mathf.Clamp(animUnits.BrowLowerer - 3 * animUnits.OuterBrowRaiser, -1f, 1.7f)); }
void ProcessFaceTrackingData(float au0, float au1, float au2, float au3, float au4, float au5, float posX, float posY, float posZ, float rotX, float rotY, float rotZ) { _hasNewData = true; var animUnits = new AnimationUnits(au0, au1, au2, au3, au4, au5); _position = new Vector3(posX, posY, posZ); _rotation = new Vector3(rotX, rotY, rotZ); // We amplify the position to exagerate the head movements. _position *= 10; SetCurrentAUs(animUnits); }
private void ApplyGravityToParams() { float time = Mathf.Clamp01((Time.time - _gravityStartTime) / TimeToReturnToDefault); _position = Vector3.Lerp(_startGravityPos, _userInitialPosition, time); _rotation = Vector3.Lerp(_startGravityRot, new Vector3(0, 0, 0), time); var animUnits = new AnimationUnits(); animUnits.Au012 = Vector3.Lerp(_startGravityAu.Au012, Vector3.zero, time); animUnits.Au345 = Vector3.Lerp(_startGravityAu.Au345, Vector3.zero, time); SetCurrentAUs(animUnits); }
// Perform random faces automatically to fill the gaps whenever we do not have any input data from kinect. private void ManipulateMaskAutomatically() { CurrentMode = TrackingMode.ComputerControlled; _waitTimer -= Time.deltaTime; if (_waitTimer > 0) { return; } _waitTimer = 3f; _rotation = new Vector3(Random.Range(-10f, 10f), Random.Range(-10f, 10f), Random.Range(-10f, 10f)); _targetAnimUnits = new AnimationUnits(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)); }
private void SetCurrentAUs(AnimationUnits animUnits) { const float weight = 0.8f; for (int i = 0; i < 6; i++) { _accAu[i] = animUnits[i] * weight + _accAu[i] * (1 - weight); } animUnits = _accAu; _targetAnimUnits.LipRaiser = MapLipRaiserValue(animUnits.LipRaiser); _targetAnimUnits.JawLowerer = MapJawLowererValue(animUnits.JawLowerer); _targetAnimUnits.LipStretcher = MapLipStretcherValue(animUnits.LipStretcher); _targetAnimUnits.BrowLowerer = MapBrowLowererValue(animUnits); _targetAnimUnits.LipCornerDepressor = MapLipCornerDepressorValue(animUnits.LipCornerDepressor); _targetAnimUnits.OuterBrowRaiser = MapOuterBrowRaiserValue(animUnits.OuterBrowRaiser); }