Commit graph

217 commits

Author SHA1 Message Date
Anthony J. Thibault
54af6af651 Fix for pole vector stability and knee pole vector computation 2017-06-23 10:38:21 -07:00
Anthony J. Thibault
81852cd91c warning fixes 2017-06-16 18:15:41 -07:00
Anthony J. Thibault
e7991579ef Enabled elbow pole vectors
There are still some issues with rotations of the elbow pole vectors.
* When the (hand - shoulder) vector approaches the normal vector used in Rig::calculateElbowPoleVector() unexpected twists can occur.
* Also, when the (hand - shoulder) vector approaches zero, the IK system starts to flutter between two states.
* The shoulder twist constraint probably needs to be opened up for more natural range of motion.
2017-06-16 17:29:56 -07:00
Anthony J. Thibault
cdfba52488 precondition initial solution before solving to reduce limb locking. 2017-06-15 15:02:42 -07:00
Anthony J. Thibault
fac21033e7 Fixed matthew sitting pose by opening up UpLeg twist constraint to +- 90 degrees. 2017-06-14 11:53:54 -07:00
Anthony J. Thibault
10f94c2d60 Fixed pole vectors on straight limbs by using reference vector 2017-06-14 11:35:53 -07:00
Anthony J. Thibault
f20c03fa6e Pole vectors can be controlled via anim vars. 2017-06-13 15:36:05 -07:00
Anthony J. Thibault
7521d6124e WIP: added blend between hips and foot for knee pole vector 2017-06-12 17:23:23 -07:00
Anthony J. Thibault
0cde22d937 Bug fix for pole constraint on legs 2017-06-12 12:13:03 -07:00
Anthony J. Thibault
e8ca1a3060 WIP: added magnitude to damping rotation near singularities.
Also knee pole constraints don't work..  why?
2017-06-09 18:09:38 -07:00
Anthony J. Thibault
bb45fe0388 WIP, straight arm still rotates.. 2017-06-09 09:48:03 -07:00
Anthony J. Thibault
02f06d4d4e WIP pole vectors work.. but still have issues... 2017-06-09 09:48:02 -07:00
Anthony J. Thibault
6564cfd5d1 WIP 2017-06-09 09:48:00 -07:00
Anthony Thibault
e3c342aa77 Merge pull request #10595 from hyperlogic/feature/spine-spline
Spline IK target support
2017-06-08 18:09:55 -07:00
Anthony J. Thibault
8334dff610 compute rotation from derivative of spline
This should fix bad rotation values for the spine during bowing/touching toes.
2017-06-08 15:00:12 -07:00
Anthony J. Thibault
2422c7e1bb code review feedback 2017-06-02 15:47:51 -07:00
Anthony J. Thibault
551426f46e Made computeSplineJointInfosForIKTarget more general
It should now work for non-vertical oriented splines.
2017-06-01 13:56:06 -07:00
Anthony J. Thibault
f99b579c14 added some docs 2017-06-01 13:38:18 -07:00
Anthony J. Thibault
226855b2b9 Bug fixes and cleanup
* Bug fix for problem when chest target is enabled but hips target is not.
* centralized the two computeSplineFromTipAndBase functions into one.
* Removed dead code
2017-06-01 13:20:50 -07:00
Anthony J. Thibault
813feeb8fd Limit spine spline compression/stretch to 15% 2017-06-01 08:56:42 -07:00
David Rowe
47e65e942e Gradually relax hands from controlled positions when lose tracking 2017-06-01 23:42:08 +12:00
David Rowe
95aab28e91 Disable unused code
Keep for future experimentation per other commented-out code in method
2017-06-01 18:13:57 +12:00
Anthony J. Thibault
d3ca34956d Fix spline interpolation the wrong way when bending backward. 2017-05-31 16:58:17 -07:00
Anthony J. Thibault
cff42ab9b0 Working spline spline. 2017-05-30 19:01:52 -07:00
Anthony J. Thibault
d4dbd94a35 Compute defaultSpineSplineto defaultPose offset 2017-05-30 14:25:32 -07:00
Anthony J. Thibault
39c23bfe2f revision of spine spline rotation calculation 2017-05-30 14:25:30 -07:00
Anthony J. Thibault
fc12d7547a Addition of CubicHermiteSpline helper classes. 2017-05-30 14:25:29 -07:00
Anthony J. Thibault
e99001d86c debug draw ik chains, bug fix for flex coef on tips
And opened up hip constraints.
2017-05-18 16:29:55 -07:00
Anthony J. Thibault
87adeb0565 apply flexCoeff to tip of joint chain as well. 2017-05-18 11:26:49 -07:00
Anthony J. Thibault
abe19310da WIP: checkpoint of ik changes 2017-05-18 11:26:48 -07:00
Anthony J. Thibault
0018224fef moar warning fixes 2017-05-17 16:23:39 -07:00
Anthony J. Thibault
be7a9a2383 warning fixes 2017-05-16 11:00:25 -07:00
Anthony J. Thibault
1e276d113c Added support for weights per target 2017-05-15 09:26:24 -07:00
Anthony J. Thibault
67fbb15faa WIP: initial implementation of flexCoefficients 2017-05-15 09:26:23 -07:00
Anthony J. Thibault
a14fa5dab9 code review feedback 2017-05-11 10:54:15 -07:00
Anthony J. Thibault
e63dc52ec9 moar warning fixes 2017-05-09 13:59:07 -07:00
Anthony J. Thibault
0bcc3c023e warning fixes 2017-05-09 13:07:06 -07:00
Anthony J. Thibault
7b35e8c7fd Bug fix for hands, reduced elbow angle to 60 degrees from horizontal. 2017-05-09 11:57:41 -07:00
Anthony J. Thibault
fe69f58174 Bug fix centerLimit rot for LeftArm, also, lower arms in centerLimit pose
Lowering the arms in centerLimit poses will help keep the elbows relaxed on the side of the body.
2017-05-09 09:47:26 -07:00
Anthony J. Thibault
84aa86b464 Added animVar support for IK solutionSource. 2017-05-08 18:07:45 -07:00
Anthony J. Thibault
2166d8c159 Added setSolutionSource to AnimInverseKinematics node. 2017-05-08 15:06:31 -07:00
Anthony J. Thibault
7af93f9fea Hooked up IK constraint rendering 2017-05-08 15:06:29 -07:00
Anthony J. Thibault
e992d6703a WIP: debug render joint constraints. 2017-05-08 15:06:28 -07:00
Anthony J. Thibault
a260163aee WIP commit, first pass at generating limit center joints + debug draw 2017-05-08 15:06:27 -07:00
Anthony J. Thibault
c61e6a8a9e AnimInverseKinematics: reduce number of magic constants 2017-04-27 18:24:21 -07:00
Anthony J. Thibault
4336e22f5a clang warning fix 2017-04-24 17:06:02 -07:00
Anthony J. Thibault
937f308ba8 code cleanup 2017-04-24 17:04:16 -07:00
Anthony J. Thibault
8adbe34c27 added comment 2017-04-24 14:36:56 -07:00
Anthony J. Thibault
deca26e9eb Fix for HMDHead tip constraint 2017-04-24 14:33:14 -07:00
Anthony J. Thibault
1cd0f03242 Restore master version of computeHipsOffset() and special case for HeadHMD target type 2017-04-24 14:19:06 -07:00
Anthony J. Thibault
dc3803a225 Re-enable IK _hipsOffset computation when no hips IK target is present. 2017-04-24 13:59:02 -07:00
Anthony J. Thibault
47e51493e8 dynamicallyAdjustLimits on the underPoses not the relaxed poses. 2017-04-24 09:56:10 -07:00
Anthony J. Thibault
22e79504bb Elliptical swing targets for the spine, Bug fix for debug draw 2017-04-14 17:00:50 -07:00
Anthony J. Thibault
d464020577 Adjust min angle of knee constraint to prevent leg locks 2017-04-14 17:00:48 -07:00
Anthony J. Thibault
adaf7dda7c Check in viveMotionCapture test script. 2017-04-14 17:00:45 -07:00
Anthony J. Thibault
a10b157aff First pass at having an explicit Hips IK target.
Also, AnimManipulator nodes support setting position and rotation on a single joint.
2017-04-14 17:00:44 -07:00
Anthony J. Thibault
5eddd232b0 Fix for change from std::string to QString 2017-03-24 17:03:01 -07:00
Anthony J. Thibault
49a95089d1 Remove hacks for debug rendering of IK targets
A AnimContext class was introduced.  This context is passed into every node during evaluation/overlay.
It holds non-animVar "global" data passed from the application.

(cherry picked from commit a028d3ba58)
2017-03-24 16:27:27 -07:00
Anthony J. Thibault
dd17b2e2f3 Added developer option to draw IK targets in world.
(cherry picked from commit 7e7803c648)
2017-03-24 16:20:52 -07:00
Atlante45
ff9d6d657c Remove weighted offset, special case downward pressure 2017-03-06 19:41:08 -08:00
Atlante45
e03368414e CR 2017-02-27 18:57:44 -08:00
Atlante45
2d8b71810e remove hips swing 2017-02-27 16:38:57 -08:00
Andrew Meadows
6991970044 relax lower spine for head IK when sitting
also: fix crash bug for bad parentJointIndex
also: reduce limit leakage for IK rotation
2017-02-27 16:38:57 -08:00
Atlante45
d9e2b3a20d Remove lower spine constrain while sitting, losen head 2017-02-27 16:38:56 -08:00
Atlante45
fcc924ce8e Add downward force on the hips to strech the spine. 2017-02-27 16:38:56 -08:00
Atlante45
36dc2dc49d Compute spine length on skeleton load 2017-02-27 16:38:56 -08:00
Atlante45
e9316d30d0 More IK smoothing experimentation 2017-02-27 16:38:56 -08:00
Atlante45
187cd0d5cf Get IK error and stand up based on it 2017-02-27 16:38:55 -08:00
Atlante45
cc5967e8f9 Pull part of the Out Of Body Exp code 2017-02-27 16:38:53 -08:00
Brad Davis
e5e9ab42ea Encapsulate AnimPose members for easier optimizations 2016-12-28 12:11:24 -08:00
Brad Davis
30a9961362 tracing polish 2016-12-16 14:02:27 -08:00
Ryan Huffman
7bb2755913 Add chrome tracing support 2016-12-16 01:14:01 -08:00
Anthony J. Thibault
89ae3b3d6e Revert "Merge pull request #8691 from highfidelity/out-of-body-experience"
This reverts commit efe9571ab8, reversing
changes made to 333e9ec7f4.
2016-12-05 15:18:03 -08:00
Anthony J. Thibault
b68dbab994 Fix for incorrect hand offset when backing into collision.
We know properly account for the offset of the head due to clamping from a small maxHipsOffset.
This means the hands should look more natural when you are out-of-body and are moving your hand controllers.
2016-09-23 11:47:44 -07:00
Andrew Meadows
61be99b87e fix IK bug for RotationOnly head target 2016-09-22 16:14:19 -07:00
Anthony J. Thibault
9fa8fc11c9 More stability in hips offset calculation. 2016-09-21 18:20:35 -07:00
Anthony J. Thibault
a028d3ba58 Remove hacks for debug rendering of IK targets
A AnimContext class was introduced.  This context is passed into every node during evaluation/overlay.
It holds non-animVar "global" data passed from the application.
2016-09-19 15:03:46 -07:00
Andrew Meadows
a58773823d cleanup unused cruft 2016-09-16 14:50:29 -07:00
Andrew Meadows
61a05eb4d1 failed experiment for getting hip lean over table 2016-09-16 10:16:18 -07:00
Andrew Meadows
20418d5f58 fix hips sweep test 2016-09-15 18:39:57 -07:00
Andrew Meadows
83157b573a measure max hips offset and clamp it in IK 2016-09-15 14:55:04 -07:00
Anthony J. Thibault
5e0c2286ec Use OUTOFBODY_HACK as searchable token 2016-09-12 10:58:06 -07:00
Andrew Meadows
28d1faa1c0 remove unused variable 2016-09-12 09:10:11 -07:00
Anthony J. Thibault
7e7803c648 Added developer option to draw IK targets in world. 2016-09-09 12:50:34 -07:00
Anthony J. Thibault
1e95e067c0 warning fixes for llvm/gcc 2016-08-24 15:46:55 -07:00
Anthony J. Thibault
e1f7dfc4e1 Raised max iterations for IK to 16 from 4
* IK now returns early if solution is "good enough"
* IK now has nsight markers for profiling
2016-08-22 10:34:56 -07:00
Anthony Thibault
3b14988577 Fix another crash if "Hips" joint is not found. 2016-07-22 16:27:43 -07:00
Anthony Thibault
a43e9a5710 Fix for crash on avatars with missing "Hips" joint 2016-07-22 16:00:40 -07:00
Anthony J. Thibault
837b19ed1b fix for pushing avatar into floor when exiting away mode.
* Removed MyAvatar.reset() access from JavaScript
* Added HMD.centerUI() to JavaScript, which can be used to reset the 3D UI sphere around the current HMD orientation.
* Added MyAvatar.clearIKJOintLimitHistory() which can be used to reset any remembered IK joint limit history.
* Added MyAvatar.centerBody() which can be used to instantly re-orient the avatar's so that the hips and toes
  are facing the same direction as the current HMD orientation.

away.js now uses the above new API's instead of MyAvatar.reset()
2016-07-19 14:42:24 -07:00
Andrew Meadows
e81e49b32e prevent crash in SwingTwistConstraint 2016-03-18 15:59:25 -07:00
Andrew Meadows
48efbba335 use dynamic constraints for IK 2016-03-11 14:47:48 -08:00
Andrew Meadows
4b75144797 remove debug cruft 2016-03-11 14:47:47 -08:00
Andrew Meadows
df9ccf76ab fix animation-tests 2016-03-11 14:47:47 -08:00
Andrew Meadows
c06d76f7f0 remove twist constraints on hands
also tighten swing limit on shoulder
2016-03-04 10:56:29 -08:00
Anthony J. Thibault
3426173d1d AnimInverseKinematics: open up shoulder swing constraint. 2016-02-17 11:44:11 -08:00
Anthony J. Thibault
2d1304e070 AnimInverseKinematics: use glm::clamp for clarity. 2016-02-16 18:00:45 -08:00
Anthony J. Thibault
b5a72225db AnimInverseKinematics: renamed variable for extra style points 2016-02-16 17:42:51 -08:00
Anthony J. Thibault
df21fffa4a AnimInverseKinematics: fix for extra twist in lowerSpine joints.
* When computing tipPosition, for the next iteration of the CCD,
  use the leverArm before it's projected onto the lowerSpine twist axis.
* fix for acos() that was going outside of valid domain. (-1.0, 1.0)
2016-02-16 17:31:39 -08:00
Seth Alves
af6bb50f74 fix warning 2016-02-10 12:09:28 -08:00
Seth Alves
6fea0b9396 also make sure tau is >= 1.0 2016-02-10 11:20:56 -08:00