Commit graph

115 commits

Author SHA1 Message Date
Anthony J. Thibault
5cd2786c1d First pass at Rig timeScaling and blending between slow, walk and run. 2015-10-20 16:37:05 -07:00
Anthony J. Thibault
e484a904a2 Rotate the avatar to align with the HMD while moving
MyAvatar: refactored updateFromHMDSensorMatrix() a bit by splitting it into several methods, because
it was getting quite large and becoming hard to follow.

* beginStraighteningLean() - can be called when we would like to trigger a re-centering action.
* shouldBeginStraighteningLean() - contains some of the logic to decide if we should begin a re-centering action.
  for now it encapulates the capsule check.
* processStraighteningLean() - performs the actual re-centering calculation.

New code was added to MyAvatar::updateFromHMDSensorMatrix() to trigger re-centering when the avatar speed rises
over a threshold.

Secondly the Rig::computeMotionAnimationState() state machine for animGraph added a state change hysteresis
of 100ms.  This hysteresis should help smooth over two issues.

1) When the delta position is 0, because the physics timestep was not evaluated.
2) During re-centering due to desired motion, the avatar velocity can fluctuate causing undesired animation state fluctuation.
2015-10-13 17:36:00 -07:00
U-GAPOS\andrew
f01847de14 experimental HMD hips tracking 2015-10-12 11:39:54 -07:00
Andrew Meadows
bc48f70877 move IKTarget into its own files 2015-10-12 11:39:54 -07:00
Andrew Meadows
224fc55033 put IK targets in skeleton's model-frame 2015-10-06 16:49:29 -07:00
Anthony J. Thibault
c0be32d359 Fix for model offset when using Rig Animations. 2015-10-02 11:40:46 -07:00
Anthony J. Thibault
fc7b6dee84 Merge branch 'master' into transmit-joint-translation 2015-10-02 11:40:33 -07:00
Anthony J. Thibault
a1b54945d6 Compute the model offset in the rig, using the bind pose of the hips. 2015-10-02 10:34:34 -07:00
Anthony J. Thibault
fa864d29f9 Merge branch 'master' into transmit-joint-translation 2015-10-01 16:55:24 -07:00
Howard Stearns
53e7d5fd7c Merge pull request #5975 from AndrewMeadows/cleanup-legacy-constraints
remove cruft relating to old verlet avatar skeleton simulation
2015-10-01 16:48:33 -07:00
Howard Stearns
739545794f Merge pull request #5944 from AndrewMeadows/ik-repairs-007
fix bug: IK attenuates fast underpose animations
2015-10-01 14:27:21 -07:00
Andrew Meadows
09ac01a5e7 remove cruft from old verlet avatar simulation 2015-10-01 13:44:50 -07:00
Seth Alves
8453043038 remove unused variable 2015-10-01 13:23:51 -07:00
Anthony J. Thibault
d993d39718 Bug fix for deriveBodyFromHMDSensor calculations
The calculation that determined where the body position relative to the HMD
was incorrect, one of the components was in the wrong coordinate frame.

Now use the skeleton's bind pose to compute the proper avatar offsets for the eyes, neck and hips.
Use these offsets to calculate where the hips should be given a specific hmd position and orientation.

Also, added a bug fix for Rig, which would cause a -1 index deference when an avatar was missing
certain named joints, such as, "LeftEye", "Neck" and "Head".
2015-09-30 16:28:33 -07:00
Andrew Meadows
b192d0a9cd make neck IK target type same as head 2015-09-29 17:39:17 -07:00
Seth Alves
4179e4aa74 merge from upstream 2015-09-28 15:28:10 -07:00
Anthony J. Thibault
a495a45ed0 unset "lean" when headParams.enableLean is false
Also added AnimVariantMap::dump() which will print out all the
currently set anim vars and their values.
2015-09-28 11:10:22 -07:00
Anthony J. Thibault
c970ff0c0c Reset joint priorities back to 0 for new animation system.
Added Rig::clearJointStatePriorities() to do this.
2015-09-27 18:25:28 -07:00
Anthony J. Thibault
4b31d87bf5 renamed magic constant to FRAMES_PER_SECOND. 2015-09-27 17:52:53 -07:00
Anthony J. Thibault
5a24a020ca Fix for HMD rotation sticking between 2d & HMD mode
The main fix for this was to set the JointState animation priority to 3.0
The secondary fix was only noticed when we changed the animation priority
Basically, the debugRendering was using the JointStates after they were
manipulated by SkeletonModel to 'relax' them toward thier default pose for
IK purposes.
2015-09-27 17:44:54 -07:00
Anthony J. Thibault
a2562c92f4 Small changes to Anim System for Debugging
* Added constant for Rig animation fade time
* Added index output for AnimSkeleton::dump()
2015-09-27 16:24:55 -07:00
Seth Alves
50dd8eba45 Relay joint translations across network. Apply animation's root-joint translation to avatar. 2015-09-26 11:40:39 -07:00
Howard Stearns
266c69fc70 Disable the old-school Rig::inverseKinematics during reset. 2015-09-24 15:33:52 -07:00
Andrew Meadows
17e3e9394f allow head translation for 3rd person screenie IK 2015-09-24 12:38:46 -07:00
Brad Hefta-Gaub
5e82b9c433 more warning fixes 2015-09-24 08:26:56 -07:00
Anthony J. Thibault
a9848cd157 Merge branch 'master' into tony/lean-threshold 2015-09-23 10:54:12 -07:00
Anthony J. Thibault
9ce43a57f1 Better head IK when in an HMD.
Because the current IK system doesn't quite handle what we need
for the head and neck IK, we do it procedurally in the rig, and
manually set both neck and head IK targets.
2015-09-22 19:58:21 -07:00
Howard Stearns
7e52d38870 Don't include the root rot, because it seems that this is already accounted for in the head params.
Restore the hmd conditional on setting head position. This had been removed when failing to pin it cause lean.
I believe that lean was being caused by coordinate system issues that are now addressed by the above and Andrew's big cleanup.
2015-09-22 10:12:59 -07:00
Andrew Meadows
e6776ef5eb split AnimIK::evaluate() into sub-functions
also IK targets now in model-frame instead of root-frame
2015-09-21 17:29:39 -07:00
Anthony J. Thibault
eadf212418 Updated avatar.json with talking idle animation. 2015-09-18 18:31:53 -07:00
Anthony J. Thibault
44eb448cbe Hooked up isTalking flag to Rig and AnimGraph. 2015-09-18 18:05:51 -07:00
Andrew Meadows
4505d5999c route hand data differently for new Anim system 2015-09-17 16:04:00 -07:00
Andrew Meadows
9746d31f5e notes for moving hand updates 2015-09-17 16:04:00 -07:00
Anthony J. Thibault
5aeebba90e Renamed AnimController to AnimManipulator, Removed offsets on IK targets 2015-09-16 15:49:47 -07:00
Howard Stearns
f6b5f3925a Place head at requested position in all modes. (At least, until we can figure out how to get underpose position cleanly without tilt.) 2015-09-15 16:43:52 -07:00
Anthony J. Thibault
1948829ca8 Improved state machine for right hand.
The hand state machine has the following features

* There's a idle to point animation, followed by a looping point hold state.
* There's a point to idle animation.
* The grab state is composed of a linear blend between an open and closed pose.

Additionally the C++ code will ramp on the left and right hand overlays,
This allows the fingers to be animated normally when the user is not actively
pointing or grabbing.
2015-09-15 15:09:08 -07:00
Anthony J. Thibault
90f46ba2c8 Added hand state machines to AnimGraph.
* Application: Forward trigger values to the MyAvatar's PalmData
* SkeletonModel: Pass PalmData to Rig via updateRigFromHandData() this is more explicit then
  the Rig::inverseKinematics methods.
* AnimNodeLoader & AnimOverlay: add support for LeftHand and RightHand bone sets
* Rig::updateRigFromHandData() read the triggers and set stateMachine trigger vars
* avatar.json - udpated with new hand state machine with temporary animations
2015-09-14 18:54:12 -07:00
Anthony J. Thibault
8e504e63b0 Removed unused variable, changed glm::vec3(0) to glm::vec3() 2015-09-11 10:43:49 -07:00
Anthony J. Thibault
7996a02bd8 Added head target to AnimGraph IK node.
* In HMD mode head orientation and position is set.
* When not in HMD only orientation is set, position should
  default to the underlying pose position.
2015-09-11 09:48:48 -07:00
Anthony J. Thibault
3149baeefc Merge branch 'master' into tony/ik-and-controllers 2015-09-10 11:04:31 -07:00
Anthony J. Thibault
09b2d8e4a4 Seed AnimGraph with hand controller position and orientation. 2015-09-09 18:16:57 -07:00
Anthony J. Thibault
ad49d0dd59 AnimInverseKinematics: update _maxTargetIndex correctly. 2015-09-09 16:09:38 -07:00
Anthony J. Thibault
756eb54a0a AnimNodeLoader support for InverseKinematics node. 2015-09-09 15:28:21 -07:00
Anthony J. Thibault
c1d7287652 AnimController node now takes absolute rotation vars, instead of relative. 2015-09-09 12:24:32 -07:00
Howard Stearns
f818ac2b74 Merge pull request #5744 from hyperlogic/tony/enable-lean-flag
Added a flag to enable and disable lean.
2015-09-09 10:18:12 -07:00
Howard Stearns
74c92af8e0 Merge pull request #5741 from AndrewMeadows/brokenCapsules
fix for bad bounding capsules for avatars
2015-09-09 09:33:57 -07:00
Anthony J. Thibault
39aef6edc9 AnimController fix for crash if underPoses vector was empty. 2015-09-08 21:42:42 -07:00
Anthony J. Thibault
75ecf0020d WIP commit, added AnimController node. 2015-09-08 20:34:21 -07:00
Anthony J. Thibault
387d50c217 Added a flag to enable and disable lean.
This should help improve our idle and walk animations, because
animation on the "lean" joint was being lost, even when we did
not require procedural leaning.
2015-09-08 16:35:06 -07:00
Andrew Meadows
90fe54e6d6 remove cruft and minor cleanup 2015-09-08 15:03:12 -07:00