Commit graph

261 commits

Author SHA1 Message Date
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
Anthony J. Thibault
69e463bbfd AnimDebugDraw Improvements
* Now always works, regardless of whether or not Rig or AnimGraph animations
  are enabled.
* Changed joint radius to 1 cm.
* Changed xyz axis length to 4 cm.
2015-09-04 16:01:05 -07:00
Anthony J. Thibault
3f258c89b4 Fix transition from AG+Rig to AG only. 2015-09-04 11:03:59 -07:00
Anthony J. Thibault
dcecd7b73a Added hysteresis to the state machine for turning and moving states.
This should help a bit with the jerkiness, as state transitions
occur less often due to noise or the user straddling the boundary
between two states.
2015-09-03 19:13:39 -07:00
Anthony J. Thibault
85cb503152 Made Enable Anim Graph menu option dynamic.
It will load the anim graph when enabled and destroy
the anim graph when disabled.
2015-09-03 14:46:44 -07:00
Anthony J. Thibault
471400e595 Fix for jerky behavior when positionDelta is zero.
This can occur with vsync disabled.  Possibly due to two avatar updates occurring
within a single physics time-step.
2015-09-02 19:59:05 -07:00
Anthony J. Thibault
de31b92fd5 Merge branch 'master' into ajt/new-anim-system 2015-09-02 17:53:56 -07:00
Anthony J. Thibault
46b3a7fd23 Improved default avatar.json state machine.
Now triggers 7 states.
Idle, WalkFwd, WalkBwd, StrafeLeft, StrafeRight, TurnLeft & TurnRight.
As well as variable speed walking to match current velocity.
2015-09-02 17:28:06 -07:00
Howard Stearns
389e752b6e Merge pull request #5695 from AndrewMeadows/dysprosium
avoid bad joints when computing avatar bounding capsule
2015-09-02 15:58:42 -07:00
Anthony J. Thibault
fea030b9a0 Compile and warning fixes for MacOSX. 2015-09-02 12:18:17 -07:00
Seth Alves
3e11852845 Merge pull request #5685 from howard-stearns/standing-hmd-animations
Standing hmd animations
2015-09-02 10:57:45 -07:00
Anthony J. Thibault
d151474446 Merge branch 'master' into ajt/new-anim-system 2015-09-02 10:00:36 -07:00
Anthony J. Thibault
7b4cb8655c First pass integration of new anim system into rig. 2015-09-01 17:57:01 -07:00
Andrew Meadows
4a7a384c65 avoid bad joints when computing bounding capsule 2015-09-01 14:12:14 -07:00
Andrew Meadows
7410baedf0 merge highfidelity/master into andrew/copernicium
Conflicts:
	interface/src/avatar/SkeletonModel.cpp
	libraries/animation/src/Rig.cpp
	libraries/animation/src/Rig.h
2015-09-01 11:08:01 -07:00
Andrew Meadows
47c18fa18a reduced gravity effect in IK 2015-09-01 09:51:14 -07:00
Andrew Meadows
0e5b357362 revert unintended change to "gravity" term in IK 2015-09-01 09:51:14 -07:00
Andrew Meadows
bdcc68ce36 fix bug: allow IK to iterate more than once
also changed name of parentTransform to be rootTransform
for more correctness
2015-09-01 09:51:14 -07:00
Andrew Meadows
bb63267e30 fix hand IK rotations or all models 2015-09-01 09:45:14 -07:00
Howard Stearns
2dbfa5ce9f Be more uniform in deciding animation movement, and incorporate HMD standing mode (which sets position, but not velocity). 2015-08-31 11:10:05 -07:00
Andrew Meadows
d3f06af892 remove PhysicsEntity class 2015-08-27 18:22:12 -07:00
Howard Stearns
96c74ebbd5 Enable Rig Animations is now a developer menu item (rather than requiring javascript to set). Also turning it off resets you to bind pose and deliberately throws away old animations.
Default animations are the new ones for our standard T-pose. (Had been for the double-A pose fightbot.)
Rig state machine now does "backup", and doesn't apply strafe while turning.
2015-08-27 12:25:40 -07:00
Howard Stearns
d28c555a79 Synchronize eye joint and debugging vectors when the other avatar is looking at me. 2015-08-14 16:47:34 -07:00
Howard Stearns
964d04d24f Restore correct space for eye joint rotations.
Also, do not correct for camera position on my avatar. (That will be done by zero or one receivers.)
2015-08-10 12:34:01 -07:00
Seth Alves
b1e69537f3 Merge pull request #5524 from howard-stearns/cleanup-jointstate
Clean Up JointState
2015-08-07 13:50:02 -07:00
Howard Stearns
145b730f80 Clean up instantiation. 2015-08-07 12:27:26 -07:00
Howard Stearns
a840a17106 Change name originalRotation defaultRotation. 2015-08-06 19:45:58 -07:00
Howard Stearns
42cc34cd64 JointState has our own copy of any ivars we want from FBXJoint, instead of keeping a reference to the fbx. 2015-08-06 16:54:09 -07:00
Howard Stearns
02f57286e4 Don't let individual startAnimation get messed up by blend/fade. 2015-08-06 11:30:18 -07:00
Howard Stearns
bb974edf7f Add assert on mix range. 2015-08-05 11:09:04 -07:00
Howard Stearns
f51b5be167 Simplify fade normalization, eliminating a loop. 2015-08-05 11:00:40 -07:00
Howard Stearns
2f2b59b6b6 Merge branch 'master' of https://github.com/highfidelity/hifi into smooth-faded-animations 2015-08-05 10:05:05 -07:00
Howard Stearns
a1f86cc7b8 Make MSVC happy. 2015-08-04 19:49:12 -07:00
Howard Stearns
731bcba956 Merge branch 'master' of https://github.com/highfidelity/hifi into smooth-faded-animations 2015-08-04 17:27:23 -07:00
Howard Stearns
61198a658c Smooth fading of animations in and out.
Also, turn on the secret rig animations from Javascript with MyAvatar.setEnableRigAnimations(true). (persists)
2015-08-04 17:04:15 -07:00
Seth Alves
9171033f21 Merge branch 'master' of github.com:highfidelity/hifi into rig 2015-08-04 16:06:38 -07:00
Eric Levin
f506e58687 Merge pull request #5490 from howard-stearns/restart-animations-at-specified-parameters
restart animations at specified parameters
2015-08-04 15:09:11 -07:00
Howard Stearns
61afc362e7 For startAnimation (but not startAnimationByRole), use the specified parameters even if the animation
was already playing.  This fixes the behavior exercised by the squeezeHands.js script.
Fixes https://app.asana.com/0/32622044445063/44025709513292
2015-08-03 17:00:39 -07:00
Howard Stearns
2e5142e9bb Fix end of idle. 2015-08-03 16:09:48 -07:00
Howard Stearns
cdb697760f Remove some debug. 2015-08-03 15:51:07 -07:00
Howard Stearns
4c1d1a65d5 Provide initial fight club animations and use them in rig.
Still only active when you do Settings.setValue('enableRig', true) and restart.
(Will be more exposed after fadein/fadeout is implemented.)
2015-08-03 15:41:15 -07:00
Seth Alves
c80516a051 Merge branch 'rig' of github.com:howard-stearns/hifi into rig 2015-07-30 18:39:09 -07:00
Seth Alves
c1f777e18f move setHandPosition from SkeletonModel to AvatarRig. Tell Rig::initJointStates joint-indexes for hands and elbows and shoulders 2015-07-30 18:39:01 -07:00
Howard Stearns
78a900c866 Prototype blend. Just equal weighting for now. 2015-07-30 17:01:48 -07:00
Anthony J. Thibault
4bb415fd0d Fix for torso twist.
Off by one error, 0 is a valid parent bone index.
2015-07-30 09:31:23 -07:00
Anthony J. Thibault
c2934bdb5d Fix avatar head, eye and torso twist.
* Updated SkeletionModel::updateRig to explicitly pass a set of HeadParameters
  to the rig to do procedural animation.
* Moved torso lean procedural animation from SkeletonModel into Rig.
* Moved eye tracking procedural animation from HeadModel into Rig.
* Moved neck procedural animation from HeadModel into Rig.
2015-07-29 17:35:29 -07:00
Howard Stearns
a9f76324b5 Merge branch 'rig' of https://github.com/sethalves/hifi into sethalves-rig2 2015-07-29 10:49:27 -07:00
Anthony J. Thibault
b06485c266 Remove cauterize code from Rig and move it back into Model.
* cauterize code is used as at render time and is not dependent on
  the jointStates.
* MyAvatar now initialize the bone set used for cauterization and
  makes the decision to perform cauterization or not in preRender.
2015-07-28 17:45:33 -07:00
Howard Stearns
4754615159 Fix NPC animations. 2015-07-28 12:34:10 -07:00
Seth Alves
6e5aca6da4 merge from upstream 2015-07-27 16:52:36 -07:00
Howard Stearns
146ddd2240 Cleanup false starts. 2015-07-27 13:42:18 -07:00
Howard Stearns
990f0d6d07 Pass correct position/velocity/orientation to Rig simulation. 2015-07-27 12:57:39 -07:00
Seth Alves
a3c6a4b9bc merge from upstream 2015-07-27 09:29:18 -07:00
Howard Stearns
dac6667ee6 Start of state. 2015-07-27 09:21:24 -07:00
Howard Stearns
8b5f24e4df Keep list of animations in Rig, not MyAvatar. 2015-07-24 22:02:39 -07:00
Howard Stearns
4e298d815d Add the joint mapping necessary for playing animations in the rig. 2015-07-24 14:07:32 -07:00
Seth Alves
d5400e2b9d Merge branch 'rig' of github.com:howard-stearns/hifi into rig 2015-07-23 15:14:23 -07:00
Seth Alves
33c97a1833 get rid of _firstPersonSkeletonModel in MyAvatar. add flag in Rig for joints being dirty so Model knows when to recompute meshes 2015-07-23 15:14:10 -07:00
Howard Stearns
9593668110 Bring animation file headers up to date. 2015-07-23 15:08:22 -07:00
Seth Alves
4566d16402 move Model's AnimationHandles to Rig. Move a bunch of Model methods from public to protected 2015-07-23 13:03:38 -07:00
Seth Alves
ee334ff826 JointStates are owned by Rig objects. Model, FaceModel, SkeletonModel call into their Rig pointer to access JointStates. 2015-07-22 18:43:10 -07:00
Seth Alves
7c8d52cbd1 back out some changes to Model.cpp, change how rig pointer is delivered to model initilizer 2015-07-22 13:41:31 -07:00
Seth Alves
abfe60aa20 whenever Model class uses _jointState, use the Rig version if there is a Rig. 2015-07-20 18:31:42 -07:00
Seth Alves
bcd6b30ec3 move AnimationHandle from render-utils to animation. give Rig some jointstates and animation lists 2015-07-17 13:31:48 -07:00
Howard Stearns
5312993e56 Hmm, last was missing some emptiness. 2015-07-15 15:30:34 -07:00
Howard Stearns
bbb5f832a2 Empty Rig. 2015-07-15 15:11:16 -07:00