diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index b23b03861d..15ef447e61 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -11,112 +11,343 @@ "children": [ { "children": [ + { + "children": [ + ], + "data": { + "solutionSource": "relaxToUnderPoses", + "solutionSourceVar": "solutionSource", + "targets": [ + { + "flexCoefficients": [ + 1 + ], + "jointName": "Hips", + "positionVar": "hipsPosition", + "rotationVar": "hipsRotation", + "typeVar": "hipsType", + "weight": 1, + "weightVar": "hipsWeight" + }, + { + "flexCoefficients": [ + 1, + 0.5, + 0.5, + 0.2, + 0.01, + 0.005, + 0.001, + 0, + 0 + ], + "jointName": "RightHand", + "poleReferenceVectorVar": "rightHandPoleReferenceVector", + "poleVectorEnabledVar": "rightHandPoleVectorEnabled", + "poleVectorVar": "rightHandPoleVector", + "positionVar": "rightHandPosition", + "rotationVar": "rightHandRotation", + "typeVar": "rightHandType", + "weight": 1, + "weightVar": "rightHandWeight" + }, + { + "flexCoefficients": [ + 1, + 0.5, + 0.5, + 0.2, + 0.01, + 0.005, + 0.001, + 0, + 0 + ], + "jointName": "LeftHand", + "poleReferenceVectorVar": "leftHandPoleReferenceVector", + "poleVectorEnabledVar": "leftHandPoleVectorEnabled", + "poleVectorVar": "leftHandPoleVector", + "positionVar": "leftHandPosition", + "rotationVar": "leftHandRotation", + "typeVar": "leftHandType", + "weight": 1, + "weightVar": "leftHandWeight" + }, + { + "flexCoefficients": [ + 1, + 0.5, + 0.25 + ], + "jointName": "Spine2", + "positionVar": "spine2Position", + "rotationVar": "spine2Rotation", + "typeVar": "spine2Type", + "weight": 2, + "weightVar": "spine2Weight" + }, + { + "flexCoefficients": [ + 1, + 0.5, + 0.25, + 0.2, + 0.1 + ], + "jointName": "Head", + "positionVar": "headPosition", + "rotationVar": "headRotation", + "typeVar": "headType", + "weight": 4, + "weightVar": "headWeight" + } + ] + }, + "id": "ik", + "type": "inverseKinematics" + }, { "children": [ { "children": [ ], "data": { - "solutionSource": "relaxToUnderPoses", - "solutionSourceVar": "solutionSource", - "targets": [ - { - "flexCoefficients": [ - 1 - ], - "jointName": "Hips", - "positionVar": "hipsPosition", - "rotationVar": "hipsRotation", - "typeVar": "hipsType", - "weight": 1, - "weightVar": "hipsWeight" - }, - { - "flexCoefficients": [ - 1, - 0.5, - 0.5, - 0.2, - 0.01, - 0.005, - 0.001, - 0, - 0 - ], - "jointName": "RightHand", - "poleReferenceVectorVar": "rightHandPoleReferenceVector", - "poleVectorEnabledVar": "rightHandPoleVectorEnabled", - "poleVectorVar": "rightHandPoleVector", - "positionVar": "rightHandPosition", - "rotationVar": "rightHandRotation", - "typeVar": "rightHandType", - "weight": 1, - "weightVar": "rightHandWeight" - }, - { - "flexCoefficients": [ - 1, - 0.5, - 0.5, - 0.2, - 0.01, - 0.005, - 0.001, - 0, - 0 - ], - "jointName": "LeftHand", - "poleReferenceVectorVar": "leftHandPoleReferenceVector", - "poleVectorEnabledVar": "leftHandPoleVectorEnabled", - "poleVectorVar": "leftHandPoleVector", - "positionVar": "leftHandPosition", - "rotationVar": "leftHandRotation", - "typeVar": "leftHandType", - "weight": 1, - "weightVar": "leftHandWeight" - }, - { - "flexCoefficients": [ - 1, - 0.5, - 0.25 - ], - "jointName": "Spine2", - "positionVar": "spine2Position", - "rotationVar": "spine2Rotation", - "typeVar": "spine2Type", - "weight": 2, - "weightVar": "spine2Weight" - }, - { - "flexCoefficients": [ - 1, - 0.5, - 0.25, - 0.2, - 0.1 - ], - "jointName": "Head", - "positionVar": "headPosition", - "rotationVar": "headRotation", - "typeVar": "headType", - "weight": 4, - "weightVar": "headWeight" - } - ] }, - "id": "ik", - "type": "inverseKinematics" + "id": "defaultPose", + "type": "defaultPose" }, { "children": [ { "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 0, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx" + }, + "id": "rightHandGraspOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 0, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx" + }, + "id": "rightHandGraspClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightHandGrasp", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_open_right.fbx" + }, + "id": "rightIndexPointOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_closed_right.fbx" + }, + "id": "rightIndexPointClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightIndexPoint", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx" + }, + "id": "rightThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx" + }, + "id": "rightThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightThumbRaise", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx" + }, + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx" + }, + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear" + } ], "data": { + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpDuration": 3, + "interpTarget": 3, + "transitions": [ + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightIndexPoint", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + } + ] + } + ] }, - "id": "defaultPose", - "type": "defaultPose" + "id": "rightHandStateMachine", + "type": "stateMachine" }, { "children": [ @@ -132,30 +363,30 @@ "loopFlag": true, "startFrame": 0, "timeScale": 1, - "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx" + "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx" }, - "id": "rightHandGraspOpen", + "id": "leftHandGraspOpen", "type": "clip" }, { "children": [ ], "data": { - "endFrame": 0, + "endFrame": 10, "loopFlag": true, - "startFrame": 0, + "startFrame": 10, "timeScale": 1, - "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx" + "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx" }, - "id": "rightHandGraspClosed", + "id": "leftHandGraspClosed", "type": "clip" } ], "data": { "alpha": 0, - "alphaVar": "rightHandGraspAlpha" + "alphaVar": "leftHandGraspAlpha" }, - "id": "rightHandGrasp", + "id": "leftHandGrasp", "type": "blendLinear" }, { @@ -168,9 +399,9 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_point_open_right.fbx" + "url": "qrc:///avatar/animations/touch_point_open_left.fbx" }, - "id": "rightIndexPointOpen", + "id": "leftIndexPointOpen", "type": "clip" }, { @@ -181,17 +412,17 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_point_closed_right.fbx" + "url": "qrc:///avatar/animations/touch_point_closed_left.fbx" }, - "id": "rightIndexPointClosed", + "id": "leftIndexPointClosed", "type": "clip" } ], "data": { "alpha": 0, - "alphaVar": "rightHandGraspAlpha" + "alphaVar": "leftHandGraspAlpha" }, - "id": "rightIndexPoint", + "id": "leftIndexPoint", "type": "blendLinear" }, { @@ -204,9 +435,9 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx" + "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx" }, - "id": "rightThumbRaiseOpen", + "id": "leftThumbRaiseOpen", "type": "clip" }, { @@ -217,17 +448,17 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx" + "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx" }, - "id": "rightThumbRaiseClosed", + "id": "leftThumbRaiseClosed", "type": "clip" } ], "data": { "alpha": 0, - "alphaVar": "rightHandGraspAlpha" + "alphaVar": "leftHandGraspAlpha" }, - "id": "rightThumbRaise", + "id": "leftThumbRaise", "type": "blendLinear" }, { @@ -240,9 +471,9 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx" + "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx" }, - "id": "rightIndexPointAndThumbRaiseOpen", + "id": "leftIndexPointAndThumbRaiseOpen", "type": "clip" }, { @@ -253,337 +484,106 @@ "loopFlag": true, "startFrame": 15, "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx" + "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx" }, - "id": "rightIndexPointAndThumbRaiseClosed", + "id": "leftIndexPointAndThumbRaiseClosed", "type": "clip" } ], "data": { "alpha": 0, - "alphaVar": "rightHandGraspAlpha" + "alphaVar": "leftHandGraspAlpha" }, - "id": "rightIndexPointAndThumbRaise", + "id": "leftIndexPointAndThumbRaise", "type": "blendLinear" } ], "data": { - "currentState": "rightHandGrasp", + "currentState": "leftHandGrasp", "states": [ { - "id": "rightHandGrasp", + "id": "leftHandGrasp", "interpDuration": 3, "interpTarget": 3, "transitions": [ { - "state": "rightIndexPoint", - "var": "isRightIndexPoint" + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" }, { - "state": "rightThumbRaise", - "var": "isRightThumbRaise" + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" }, { - "state": "rightIndexPointAndThumbRaise", - "var": "isRightIndexPointAndThumbRaise" + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" } ] }, { - "id": "rightIndexPoint", + "id": "leftIndexPoint", "interpDuration": 3, "interpTarget": 15, "transitions": [ { - "state": "rightHandGrasp", - "var": "isRightHandGrasp" + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" }, { - "state": "rightThumbRaise", - "var": "isRightThumbRaise" + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" }, { - "state": "rightIndexPointAndThumbRaise", - "var": "isRightIndexPointAndThumbRaise" + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" } ] }, { - "id": "rightThumbRaise", + "id": "leftThumbRaise", "interpDuration": 3, "interpTarget": 15, "transitions": [ { - "state": "rightHandGrasp", - "var": "isRightHandGrasp" + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" }, { - "state": "rightIndexPoint", - "var": "isRightIndexPoint" + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" }, { - "state": "rightIndexPointAndThumbRaise", - "var": "isRightIndexPointAndThumbRaise" + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" } ] }, { - "id": "rightIndexPointAndThumbRaise", + "id": "leftIndexPointAndThumbRaise", "interpDuration": 3, "interpTarget": 15, "transitions": [ { - "state": "rightHandGrasp", - "var": "isRightHandGrasp" + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" }, { - "state": "rightIndexPoint", - "var": "isRightIndexPoint" + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" }, { - "state": "rightThumbRaise", - "var": "isRightThumbRaise" + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" } ] } ] }, - "id": "rightHandStateMachine", + "id": "leftHandStateMachine", "type": "stateMachine" }, { "children": [ - { - "children": [ - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 0, - "loopFlag": true, - "startFrame": 0, - "timeScale": 1, - "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx" - }, - "id": "leftHandGraspOpen", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 10, - "loopFlag": true, - "startFrame": 10, - "timeScale": 1, - "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx" - }, - "id": "leftHandGraspClosed", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "leftHandGraspAlpha" - }, - "id": "leftHandGrasp", - "type": "blendLinear" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_point_open_left.fbx" - }, - "id": "leftIndexPointOpen", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_point_closed_left.fbx" - }, - "id": "leftIndexPointClosed", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "leftHandGraspAlpha" - }, - "id": "leftIndexPoint", - "type": "blendLinear" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx" - }, - "id": "leftThumbRaiseOpen", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx" - }, - "id": "leftThumbRaiseClosed", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "leftHandGraspAlpha" - }, - "id": "leftThumbRaise", - "type": "blendLinear" - }, - { - "children": [ - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx" - }, - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 15, - "loopFlag": true, - "startFrame": 15, - "timeScale": 1, - "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx" - }, - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip" - } - ], - "data": { - "alpha": 0, - "alphaVar": "leftHandGraspAlpha" - }, - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear" - } - ], - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpDuration": 3, - "interpTarget": 3, - "transitions": [ - { - "state": "leftIndexPoint", - "var": "isLeftIndexPoint" - }, - { - "state": "leftThumbRaise", - "var": "isLeftThumbRaise" - }, - { - "state": "leftIndexPointAndThumbRaise", - "var": "isLeftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftIndexPoint", - "interpDuration": 3, - "interpTarget": 15, - "transitions": [ - { - "state": "leftHandGrasp", - "var": "isLeftHandGrasp" - }, - { - "state": "leftThumbRaise", - "var": "isLeftThumbRaise" - }, - { - "state": "leftIndexPointAndThumbRaise", - "var": "isLeftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftThumbRaise", - "interpDuration": 3, - "interpTarget": 15, - "transitions": [ - { - "state": "leftHandGrasp", - "var": "isLeftHandGrasp" - }, - { - "state": "leftIndexPoint", - "var": "isLeftIndexPoint" - }, - { - "state": "leftIndexPointAndThumbRaise", - "var": "isLeftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpDuration": 3, - "interpTarget": 15, - "transitions": [ - { - "state": "leftHandGrasp", - "var": "isLeftHandGrasp" - }, - { - "state": "leftIndexPoint", - "var": "isLeftIndexPoint" - }, - { - "state": "leftThumbRaise", - "var": "isLeftThumbRaise" - } - ] - } - ] - }, - "id": "leftHandStateMachine", - "type": "stateMachine" - }, { "children": [ { @@ -5494,381 +5494,382 @@ }, "id": "mainStateMachine", "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, + "loopFlag": true, + "startFrame": 11, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 30, + "loopFlag": true, + "startFrame": 30, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, + "loopFlag": true, + "startFrame": 50, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUp", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, + "loopFlag": true, + "startFrame": 70, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 97, + "loopFlag": true, + "startFrame": 97, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUpLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, + "loopFlag": true, + "startFrame": 110, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUpRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, + "loopFlag": true, + "startFrame": 130, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDownLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, + "loopFlag": true, + "startFrame": 150, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDownRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 3, + "loopFlag": true, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookCenter", + "type": "clip" + } + ], + "data": { + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "lookAroundAlpha", + "centerId": "lookCenter", + "downId": "lookDown", + "downLeftId": "lookDownLeft", + "downRightId": "lookDownRight", + "leftId": "lookLeft", + "rightId": "lookRight", + "upId": "lookUp", + "upLeftId": "lookUpLeft", + "upRightId": "lookUpRight" + }, + "id": "lookAround", + "type": "blendDirectional" } ], "data": { "alpha": 0, - "alphaVar": "leftHandOverlayAlpha", - "boneSet": "leftHand" + "alphaVar": "additiveBlendAlpha", + "blendType": "addAbsolute" }, - "id": "leftHandOverlay", - "type": "overlay" + "id": "additiveBlend", + "type": "blendLinear" } ], "data": { "alpha": 0, - "alphaVar": "rightHandOverlayAlpha", - "boneSet": "rightHand" + "alphaVar": "leftHandOverlayAlpha", + "boneSet": "leftHand" }, - "id": "rightHandOverlay", + "id": "leftHandOverlay", "type": "overlay" } ], "data": { "alpha": 0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" + "alphaVar": "rightHandOverlayAlpha", + "boneSet": "rightHand" }, - "id": "defaultPoseOverlay", + "id": "rightHandOverlay", "type": "overlay" } ], "data": { - "alpha": 1, - "alphaVar": "ikOverlayAlpha", - "boneSet": "fullBody" + "alpha": 0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" }, - "id": "ikOverlay", + "id": "defaultPoseOverlay", "type": "overlay" } ], "data": { "alpha": 1, - "alphaVar": "leftFootIKAlpha", - "baseJointName": "LeftUpLeg", - "enabled": false, - "enabledVar": "leftFootIKEnabled", - "endEffectorPositionVarVar": "leftFootIKPositionVar", - "endEffectorRotationVarVar": "leftFootIKRotationVar", - "interpDuration": 15, - "midHingeAxis": [ - -1, - 0, - 0 - ], - "midJointName": "LeftLeg", - "tipJointName": "LeftFoot" + "alphaVar": "ikOverlayAlpha", + "boneSet": "fullBody" }, - "id": "leftFootIK", - "type": "twoBoneIK" + "id": "ikOverlay", + "type": "overlay" } ], "data": { + "alpha": 1, + "alphaVar": "leftFootIKAlpha", "baseJointName": "LeftUpLeg", "enabled": false, - "enabledVar": "leftFootPoleVectorEnabled", - "midJointName": "LeftLeg", - "poleVectorVar": "leftFootPoleVector", - "referenceVector": [ + "enabledVar": "leftFootIKEnabled", + "endEffectorPositionVarVar": "leftFootIKPositionVar", + "endEffectorRotationVarVar": "leftFootIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + -1, 0, - 0, - 1 + 0 ], + "midJointName": "LeftLeg", "tipJointName": "LeftFoot" }, - "id": "leftFootPoleVector", - "type": "poleVectorConstraint" + "id": "leftFootIK", + "type": "twoBoneIK" } ], "data": { - "alpha": 1, - "alphaVar": "rightFootIKAlpha", - "baseJointName": "RightUpLeg", + "baseJointName": "LeftUpLeg", "enabled": false, - "enabledVar": "rightFootIKEnabled", - "endEffectorPositionVarVar": "rightFootIKPositionVar", - "endEffectorRotationVarVar": "rightFootIKRotationVar", - "interpDuration": 15, - "midHingeAxis": [ - -1, + "enabledVar": "leftFootPoleVectorEnabled", + "midJointName": "LeftLeg", + "poleVectorVar": "leftFootPoleVector", + "referenceVector": [ 0, - 0 + 0, + 1 ], - "midJointName": "RightLeg", - "tipJointName": "RightFoot" + "tipJointName": "LeftFoot" }, - "id": "rightFootIK", - "type": "twoBoneIK" + "id": "leftFootPoleVector", + "type": "poleVectorConstraint" } ], "data": { + "alpha": 1, + "alphaVar": "rightFootIKAlpha", "baseJointName": "RightUpLeg", "enabled": false, - "enabledVar": "rightFootPoleVectorEnabled", - "midJointName": "RightLeg", - "poleVectorVar": "rightFootPoleVector", - "referenceVector": [ + "enabledVar": "rightFootIKEnabled", + "endEffectorPositionVarVar": "rightFootIKPositionVar", + "endEffectorRotationVarVar": "rightFootIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + -1, 0, - 0, - 1 + 0 ], + "midJointName": "RightLeg", "tipJointName": "RightFoot" }, - "id": "userAnimNone", - "type": "poleVectorConstraint" - }, - { - "children": [ - ], - "data": { - "endFrame": 300, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle.fbx" - }, - "id": "userAnimA", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "endFrame": 300, - "loopFlag": true, - "startFrame": 1, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle.fbx" - }, - "id": "userAnimB", - "type": "clip" + "id": "rightFootIK", + "type": "twoBoneIK" } ], "data": { - "currentState": "userAnimNone", - "states": [ - { - "easingType": "easeInOutQuad", - "id": "userAnimNone", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "userAnimA", - "var": "userAnimA" - }, - { - "state": "userAnimB", - "var": "userAnimB" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "userAnimA", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "userAnimNone", - "var": "userAnimNone" - }, - { - "state": "userAnimB", - "var": "userAnimB" - } - ] - }, - { - "easingType": "easeInOutQuad", - "id": "userAnimB", - "interpDuration": 15, - "interpTarget": 15, - "interpType": "evaluateBoth", - "transitions": [ - { - "state": "userAnimNone", - "var": "userAnimNone" - }, - { - "state": "userAnimA", - "var": "userAnimA" - } - ] - } - ] + "baseJointName": "RightUpLeg", + "enabled": false, + "enabledVar": "rightFootPoleVectorEnabled", + "midJointName": "RightLeg", + "poleVectorVar": "rightFootPoleVector", + "referenceVector": [ + 0, + 0, + 1 + ], + "tipJointName": "RightFoot" }, - "id": "userAnimStateMachine", - "type": "stateMachine" + "id": "userAnimNone", + "type": "poleVectorConstraint" }, { "children": [ - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 11, - "loopFlag": true, - "startFrame": 11, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookLeft", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 30, - "loopFlag": true, - "startFrame": 30, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookRight", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 50, - "loopFlag": true, - "startFrame": 50, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookUp", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 70, - "loopFlag": true, - "startFrame": 70, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookDown", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 97, - "loopFlag": true, - "startFrame": 97, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookUpLeft", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 110, - "loopFlag": true, - "startFrame": 110, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookUpRight", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 130, - "loopFlag": true, - "startFrame": 130, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookDownLeft", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 150, - "loopFlag": true, - "startFrame": 150, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookDownRight", - "type": "clip" - }, - { - "children": [ - ], - "data": { - "baseFrame": 1, - "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", - "blendType": "addAbsolute", - "endFrame": 3, - "loopFlag": true, - "startFrame": 3, - "timeScale": 1, - "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" - }, - "id": "lookCenter", - "type": "clip" - } ], "data": { - "alpha": [ - 0, - 0, - 0 - ], - "alphaVar": "lookAroundAlpha", - "centerId": "lookCenter", - "downId": "lookDown", - "downLeftId": "lookDownLeft", - "downRightId": "lookDownRight", - "leftId": "lookLeft", - "rightId": "lookRight", - "upId": "lookUp", - "upLeftId": "lookUpLeft", - "upRightId": "lookUpRight" + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" }, - "id": "lookAround", - "type": "blendDirectional" + "id": "userAnimA", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" + }, + "id": "userAnimB", + "type": "clip" } ], "data": { - "alpha": 0, - "alphaVar": "additiveBlendAlpha", - "blendType": "addAbsolute" + "currentState": "userAnimNone", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "userAnimNone", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "userAnimA", + "var": "userAnimA" + }, + { + "state": "userAnimB", + "var": "userAnimB" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "userAnimA", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "userAnimNone", + "var": "userAnimNone" + }, + { + "state": "userAnimB", + "var": "userAnimB" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "userAnimB", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "userAnimNone", + "var": "userAnimNone" + }, + { + "state": "userAnimA", + "var": "userAnimA" + } + ] + } + ] }, - "id": "additiveBlend", - "type": "blendLinear" + "id": "userAnimStateMachine", + "type": "stateMachine" + }, "version": "1.1" } \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e48f669c17..f5ba1bfd32 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3604,7 +3604,8 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { // Always use the default eye position, not the actual head eye position. // Using the latter will cause the camera to wobble with idle animations, // or with changes from the face tracker - if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) { + CameraMode mode = _myCamera.getMode(); + if (mode == CAMERA_MODE_FIRST_PERSON) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { mat4 camMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); @@ -3615,11 +3616,8 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setPosition(myAvatar->getDefaultEyePosition()); _myCamera.setOrientation(myAvatar->getMyHead()->getHeadOrientation()); } - } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON || - _myCamera.getMode() == CAMERA_MODE_LOOK_AT || - _myCamera.getMode() == CAMERA_MODE_SELFIE) { + } else if (mode == CAMERA_MODE_THIRD_PERSON || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { if (isHMDMode()) { - if (!_thirdPersonHMDCameraBoomValid) { const glm::vec3 CAMERA_OFFSET = glm::vec3(0.0f, 0.0f, 0.7f); _thirdPersonHMDCameraBoom = cancelOutRollAndPitch(myAvatar->getHMDSensorOrientation()) * CAMERA_OFFSET; @@ -3636,7 +3634,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.setPosition(extractTranslation(worldCameraMat)); } else { _thirdPersonHMDCameraBoomValid = false; - if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) { + if (mode == CAMERA_MODE_THIRD_PERSON) { _myCamera.setOrientation(myAvatar->getHead()->getOrientation()); if (isOptionChecked(MenuOption::CenterPlayerInView)) { _myCamera.setPosition(myAvatar->getDefaultEyePosition() @@ -3647,7 +3645,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { } } else { glm::quat lookAtOffset = myAvatar->getLookAtOffset(); - if (_myCamera.getMode() == CAMERA_MODE_SELFIE) { + if (mode == CAMERA_MODE_SELFIE) { lookAtOffset = lookAtOffset * glm::angleAxis(PI, myAvatar->getWorldOrientation() * Vectors::UP); } _myCamera.setPosition(myAvatar->getDefaultEyePosition() @@ -3655,7 +3653,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { _myCamera.lookAt(myAvatar->getDefaultEyePosition()); } } - } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) { + } else if (mode == CAMERA_MODE_MIRROR) { _thirdPersonHMDCameraBoomValid= false; if (isHMDMode()) { @@ -3693,7 +3691,7 @@ void Application::updateCamera(RenderArgs& renderArgs, float deltaTime) { glm::vec3(0.0f, 0.0f, -1.0f) * myAvatar->getBoomLength() * _scaleMirror); } renderArgs._renderMode = RenderArgs::MIRROR_RENDER_MODE; - } else if (_myCamera.getMode() == CAMERA_MODE_ENTITY) { + } else if (mode == CAMERA_MODE_ENTITY) { _thirdPersonHMDCameraBoomValid= false; EntityItemPointer cameraEntity = _myCamera.getCameraEntityPointer(); if (cameraEntity != nullptr) { @@ -4410,12 +4408,12 @@ void Application::keyPressEvent(QKeyEvent* event) { } case Qt::Key_2: { Menu* menu = Menu::getInstance(); - menu->triggerOption(MenuOption::SelfieScreen); + menu->triggerOption(MenuOption::SelfieCamera); break; } case Qt::Key_3: { Menu* menu = Menu::getInstance(); - menu->triggerOption(MenuOption::LookAtScreen); + menu->triggerOption(MenuOption::LookAtCamera); break; } case Qt::Key_4: @@ -5977,16 +5975,16 @@ void Application::cycleCamera() { } else if (menu->isOptionChecked(MenuOption::FirstPerson)) { menu->setIsOptionChecked(MenuOption::FirstPerson, false); - menu->setIsOptionChecked(MenuOption::LookAtScreen, true); + menu->setIsOptionChecked(MenuOption::LookAtCamera, true); - } else if (menu->isOptionChecked(MenuOption::LookAtScreen)) { + } else if (menu->isOptionChecked(MenuOption::LookAtCamera)) { - menu->setIsOptionChecked(MenuOption::LookAtScreen, false); - menu->setIsOptionChecked(MenuOption::SelfieScreen, true); + menu->setIsOptionChecked(MenuOption::LookAtCamera, false); + menu->setIsOptionChecked(MenuOption::SelfieCamera, true); - } else if (menu->isOptionChecked(MenuOption::SelfieScreen)) { + } else if (menu->isOptionChecked(MenuOption::SelfieCamera)) { - menu->setIsOptionChecked(MenuOption::SelfieScreen, false); + menu->setIsOptionChecked(MenuOption::SelfieCamera, false); menu->setIsOptionChecked(MenuOption::FullscreenMirror, true); } @@ -5999,10 +5997,10 @@ void Application::cameraModeChanged() { Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true); break; case CAMERA_MODE_LOOK_AT: - Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtScreen, true); + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, true); break; case CAMERA_MODE_SELFIE: - Menu::getInstance()->setIsOptionChecked(MenuOption::SelfieScreen, true); + Menu::getInstance()->setIsOptionChecked(MenuOption::SelfieCamera, true); break; default: // we don't have menu items for the others, so just leave it alone. @@ -6018,11 +6016,11 @@ void Application::changeViewAsNeeded(float boomLength) { if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON && boomLengthGreaterThanMinimum) { Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false); - Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtScreen, true); + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, true); cameraMenuChanged(); } else if (_myCamera.getMode() == CAMERA_MODE_LOOK_AT && !boomLengthGreaterThanMinimum) { Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true); - Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtScreen, false); + Menu::getInstance()->setIsOptionChecked(MenuOption::LookAtCamera, false); cameraMenuChanged(); } } @@ -6034,14 +6032,14 @@ void Application::cameraMenuChanged() { _myCamera.setMode(CAMERA_MODE_FIRST_PERSON); getMyAvatar()->setBoomLength(MyAvatar::ZOOM_MIN); } - } else if (menu->isOptionChecked(MenuOption::LookAtScreen)) { + } else if (menu->isOptionChecked(MenuOption::LookAtCamera)) { if (_myCamera.getMode() != CAMERA_MODE_LOOK_AT) { _myCamera.setMode(CAMERA_MODE_LOOK_AT); if (getMyAvatar()->getBoomLength() == MyAvatar::ZOOM_MIN) { getMyAvatar()->setBoomLength(MyAvatar::ZOOM_DEFAULT); } } - } else if (menu->isOptionChecked(MenuOption::SelfieScreen)) { + } else if (menu->isOptionChecked(MenuOption::SelfieCamera)) { if (_myCamera.getMode() != CAMERA_MODE_SELFIE) { _myCamera.setMode(CAMERA_MODE_SELFIE); if (getMyAvatar()->getBoomLength() == MyAvatar::ZOOM_MIN) { @@ -9132,7 +9130,7 @@ void Application::setDisplayPlugin(DisplayPluginPointer newDisplayPlugin) { } // Remove the selfie camera options from menu if in HMD mode - auto selfieAction = menu->getActionForOption(MenuOption::SelfieScreen); + auto selfieAction = menu->getActionForOption(MenuOption::SelfieCamera); selfieAction->setVisible(!isHmd); } diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index ea265a1fc9..046a1bd892 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -179,14 +179,14 @@ Menu::Menu() { // View > Look At auto lookAtAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::LookAtScreen, 0, + viewMenu, MenuOption::LookAtCamera, 0, false, qApp, SLOT(cameraMenuChanged()))); lookAtAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); // View > Selfie auto selfieAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::SelfieScreen, 0, + viewMenu, MenuOption::SelfieCamera, 0, false, qApp, SLOT(cameraMenuChanged()))); selfieAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 2291ea4fb8..098e635578 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -129,7 +129,7 @@ namespace MenuOption { const QString Login = "Login/Sign Up"; const QString Log = "Log"; const QString LogExtraTimings = "Log Extra Timing Details"; - const QString LookAtScreen = "Third Person"; + const QString LookAtCamera = "Third Person"; const QString LowVelocityFilter = "Low Velocity Filter"; const QString MeshVisible = "Draw Mesh"; const QString MuteEnvironment = "Mute Environment"; @@ -182,7 +182,7 @@ namespace MenuOption { const QString RunTimingTests = "Run Timing Tests"; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; const QString ShowTrackedObjects = "Show Tracked Objects"; - const QString SelfieScreen = "Selfie"; + const QString SelfieCamera = "Selfie"; const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; const QString SendWrongProtocolVersion = "Send wrong protocol version"; const QString SetHomeLocation = "Set Home Location"; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 610404fa78..f20495ef31 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -940,7 +940,8 @@ void MyAvatar::simulate(float deltaTime, bool inView) { head->setPosition(headPosition); head->setScale(getModelScale()); head->simulate(deltaTime); - if (_scriptControlsHeadLookAt || qApp->getCamera().getMode() == CAMERA_MODE_LOOK_AT || qApp->getCamera().getMode() == CAMERA_MODE_SELFIE) { + CameraMode mode = qApp->getCamera().getMode(); + if (_scriptControlsHeadLookAt || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) { updateHeadLookAt(deltaTime); } else if (_headLookAtActive){ resetHeadLookAt(); @@ -3333,8 +3334,8 @@ void MyAvatar::setRotationThreshold(float angleRadians) { void MyAvatar::updateOrientation(float deltaTime) { // Smoothly rotate body with arrow keys float targetSpeed = getDriveKey(YAW) * _yawSpeed; - bool computeLookAt = (qApp->getCamera().getMode() == CAMERA_MODE_LOOK_AT || - qApp->getCamera().getMode() == CAMERA_MODE_SELFIE) && isReadyForPhysics(); + CameraMode mode = qApp->getCamera().getMode(); + bool computeLookAt = (mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE) && isReadyForPhysics() && !qApp->isHMDMode(); if (computeLookAt) { // For "Look At" and "Selfie" camera modes we also smooth the yaw rotation from right-click mouse movement. float speedFromDeltaYaw = deltaTime > FLT_EPSILON ? getDriveKey(DELTA_YAW) / deltaTime : 0.0f; @@ -3425,9 +3426,8 @@ void MyAvatar::updateOrientation(float deltaTime) { if (totalBodyYaw != 0.0f) { _lookAtOffsetYaw = _lookAtOffsetYaw * glm::quat(glm::radians(glm::vec3(0.0f, totalBodyYaw, 0.0f))); } - float deltalPitchSign = 1.0f;// qApp->getCamera().getMode() == CAMERA_MODE_SELFIE ? -1.0f : 1.0f; float pitchIncrement = getDriveKey(PITCH) * _pitchSpeed * deltaTime - + deltalPitchSign * getDriveKey(DELTA_PITCH) * _pitchSpeed / PITCH_SPEED_DEFAULT; + + getDriveKey(DELTA_PITCH) * _pitchSpeed / PITCH_SPEED_DEFAULT; if (pitchIncrement != 0.0f) { glm::quat _previousLookAtOffsetPitch = _lookAtOffsetPitch; _lookAtOffsetPitch = _lookAtOffsetPitch * glm::quat(glm::radians(glm::vec3(pitchIncrement, 0.0f, 0.0f))); @@ -3535,14 +3535,13 @@ void MyAvatar::updateOrientation(float deltaTime) { cameraVector = glm::mix(cameraVector, ajustedYawVector, 1.0f - lookAttenuation); // Calculate the camera target point. - const float TARGET_DISTANCE_FROM_EYES = 20.0f; - glm::vec3 targetPoint = eyesPosition + TARGET_DISTANCE_FROM_EYES * glm::normalize(cameraVector); + glm::vec3 targetPoint = eyesPosition + glm::normalize(cameraVector); - // const float LOOKAT_MIX_ALPHA = 0.25f; + const float LOOKAT_MIX_ALPHA = 0.25f; if (getDriveKey(TRANSLATE_Y) == 0.0f) { // Approximate the head's look at vector to the camera look at vector with some delay. - float mixAlpha = (frontBackDot > 0.0f ? _backLookAtSpeed : _frontLookAtSpeed) * timeScale; + float mixAlpha = LOOKAT_MIX_ALPHA * timeScale; if (mixAlpha > 1.0f) { mixAlpha = 1.0f; } @@ -5276,7 +5275,7 @@ glm::quat MyAvatar::getOrientationForAudio() { switch (_audioListenerMode) { case AudioListenerMode::FROM_HEAD: { - // Compute the head orientation if we are using the look at blending + // Using the camera's orientation instead, when the current mode is controlling the avatar's head. CameraMode mode = qApp->getCamera().getMode(); bool headFollowsCamera = mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE; result = headFollowsCamera ? qApp->getCamera().getOrientation() : getHead()->getFinalOrientationInWorldFrame(); @@ -6311,36 +6310,6 @@ QVariantMap MyAvatar::getFlowData() { return result; } -QVariantMap MyAvatar::getLookAtCameraData() { - QVariantMap result; - if (QThread::currentThread() != thread()) { - BLOCKING_INVOKE_METHOD(this, "getLookAtCameraData", - Q_RETURN_ARG(QVariantMap, result)); - return result; - } - result.insert("selfieTriggerAngle", _selfieTriggerAngle); - result.insert("backLookAtSpeed", glm::pow(_backLookAtSpeed, 0.25f)); - result.insert("frontLookAtSpeed", glm::pow(_frontLookAtSpeed, 0.25f)); - return result; -} - -Q_INVOKABLE void MyAvatar::setLookAtCameraData(const QVariantMap& data) { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "setLookAtCameraData", - Q_ARG(const QVariantMap&, data)); - return; - } - if (data.contains("selfieTriggerAngle")) { - _selfieTriggerAngle = data["selfieTriggerAngle"].toFloat(); - } - if (data.contains("backLookAtSpeed")) { - _backLookAtSpeed = glm::pow(data["backLookAtSpeed"].toFloat(), 4.0f); - } - if (data.contains("frontLookAtSpeed")) { - _frontLookAtSpeed = glm::pow(data["frontLookAtSpeed"].toFloat(), 4.0f); - } -} - QVariantList MyAvatar::getCollidingFlowJoints() { QVariantList result; if (QThread::currentThread() != thread()) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 90a2c0887a..0a74f9a16d 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1852,8 +1852,6 @@ public: * @returns {MyAvatar.FlowData} */ Q_INVOKABLE QVariantMap getFlowData(); - Q_INVOKABLE QVariantMap getLookAtCameraData(); - Q_INVOKABLE void setLookAtCameraData(const QVariantMap& data); /**jsdoc * Gets the indexes of currently colliding flow joints. diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index a29a8ed98d..6dfcfc6994 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1644,7 +1644,7 @@ void Rig::updateHead(bool headEnabled, bool hipsEnabled, const AnimPose& headPos _animVars.set("splineIKEnabled", false); _animVars.unset("headPosition"); _animVars.set("headRotation", headPose.rot()); - _animVars.set("headType", (int)IKTarget::Type::RotationOnly); + _animVars.set("headType", (int)IKTarget::Type::Unknown); } } }