added animation files and updated ease in function in rig

This commit is contained in:
Angus Antley 2019-04-24 14:56:38 -07:00
parent 5aee2f35f0
commit 45f4cb2018
9 changed files with 16 additions and 9 deletions

Binary file not shown.

Binary file not shown.

View file

@ -1077,7 +1077,7 @@
"id": "altTalkIdle1",
"type": "clip",
"data": {
"url": "qrc:///avatar/animations/talk.fbx",
"url": "qrc:///avatar/animations/talk_righthand.fbx",
"startFrame": 1.0,
"endFrame": 800.0,
"timeScale": 1.0,

View file

@ -808,7 +808,7 @@ bool processRandomSwitchStateMachineNode(AnimNode::Pointer node, const QJsonObje
READ_STRING(currentState, jsonObj, nodeId, jsonUrl, false);
READ_OPTIONAL_FLOAT(randomSwitchTimeMin, jsonObj, -1.0f);
READ_OPTIONAL_FLOAT(randomSwitchTimeMax, jsonObj, -1.0f);
READ_STRING(triggerRandomSwitch, jsonObj, nodeId, jsonUrl, false);
READ_OPTIONAL_STRING(triggerRandomSwitch, jsonObj, nodeId, jsonUrl, false);
READ_OPTIONAL_FLOAT(triggerTimeMin, jsonObj, -1.0f);
READ_OPTIONAL_FLOAT(triggerTimeMax, jsonObj, -1.0f);
READ_OPTIONAL_STRING(transitionVar, jsonObj);

View file

@ -2012,23 +2012,30 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo
}
if (_previousIsTalking != params.isTalking) {
_talkIdleInterpTime = 0.0f;
if (_talkIdleInterpTime < 1.0f) {
_talkIdleInterpTime = 1.0f - _talkIdleInterpTime;
} else {
_talkIdleInterpTime = 0.0f;
}
}
_previousIsTalking = params.isTalking;
const float TOTAL_INTERP_TIME = 1.5f;
const float TOTAL_EASE_IN_TIME = 0.35f;
const float TOTAL_EASE_OUT_TIME = 1.5f;
if (params.isTalking) {
if (_talkIdleInterpTime < 1.0f) {
_talkIdleInterpTime += dt / TOTAL_INTERP_TIME;
float talkAlpha = glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f);
_animVars.set("idleOverlayAlpha", talkAlpha);
_talkIdleInterpTime += dt / TOTAL_EASE_IN_TIME;
float easeOutInValue = _talkIdleInterpTime < 0.5f ? (4.0f * _talkIdleInterpTime * _talkIdleInterpTime * _talkIdleInterpTime) : (4.0f * (_talkIdleInterpTime - 1.0f) * (_talkIdleInterpTime - 1.0f) * (_talkIdleInterpTime - 1.0f)) + 1.0f;
//float talkAlpha = glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f);
_animVars.set("idleOverlayAlpha", easeOutInValue);
} else {
_animVars.set("idleOverlayAlpha", 1.0f);
}
} else {
if (_talkIdleInterpTime < 1.0f) {
_talkIdleInterpTime += dt / TOTAL_INTERP_TIME;
float talkAlpha = 1.0f - glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f);
_talkIdleInterpTime += dt / TOTAL_EASE_OUT_TIME;
float easeOutInValue = _talkIdleInterpTime < 0.5f ? (4.0f * _talkIdleInterpTime * _talkIdleInterpTime * _talkIdleInterpTime) : (4.0f * (_talkIdleInterpTime - 1.0f) * (_talkIdleInterpTime - 1.0f) * (_talkIdleInterpTime - 1.0f)) + 1.0f;
float talkAlpha = 1.0f - easeOutInValue;// glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f);
_animVars.set("idleOverlayAlpha", talkAlpha);
} else {
_animVars.set("idleOverlayAlpha", 0.0f);