Commit Graph

61 Commits

Author SHA1 Message Date
Campbell Barton
a288644b1e Code Cleanup: WIN32 defines, check for _MSC_VER instead of !FREE_WINDOWS 2014-01-03 20:46:12 +11:00
Martijn Berger
1c8a12ee61 Fix T37987: MSVC 2013 has C99 headers and warns for out define hypot _hypot for good reason it seems 2014-01-02 22:19:10 +01:00
Brecht Van Lommel
4f3ca854e1 Fix various warnings with clang build, and adjust cmake clang warnings flags
to include a few more that gcc is using too.
2013-02-26 21:58:06 +00:00
Brecht Van Lommel
d8c257faa7 IK Solver:
* Rename Legacy to Standard, it's not being deprecated as far as I know.
* Make option to toggle off Location solving work with Standard.
* Make it converge a bit better in some cases by enforcing a minimum number of
  iterations before giving up.
* Move IK solver choice out of bone panel, it's an armature level setting and
  should be set there.
2012-11-24 00:18:34 +00:00
Campbell Barton
bc69b3a8df style cleanup 2012-09-20 01:32:13 +00:00
Campbell Barton
c2a1dcf621 fix for error in recent commit (made function static that shouldn't have been), add extra gcc warnings to cmake. 2012-09-16 01:35:00 +00:00
Campbell Barton
2cd0b3f064 defines to make it easier to manage ik stretch constants (these may need to be tweaked to fix [#32174]) 2012-07-27 23:16:33 +00:00
Campbell Barton
f23bfdfab4 style cleanup 2012-07-27 22:35:27 +00:00
Campbell Barton
e2360ab495 IK's were converting double -> float -> double's in a few places, since precision is important and doubles are used a lot here anyway. just use doubles, also quiet some double promotion warnings. 2012-07-27 22:27:06 +00:00
Campbell Barton
2b7ca2304a unify include guard defines, __$FILENAME__
without the underscores these clogged up the namespace for autocompleation which was annoying.
2012-02-17 18:59:41 +00:00
Brecht Van Lommel
4d7c44717a Code cleanup: fix some clang static checker warnings. 2011-12-22 20:29:44 +00:00
Campbell Barton
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
Campbell Barton
451136e7c0 warning fixes 2011-09-03 15:36:36 +00:00
Brecht Van Lommel
9159afe77a Fix #27891: IK stretch gives inaccurate results. Tweaked translation segment
convergence weight a bit to match angles better at typical scales.
2011-07-08 12:18:54 +00:00
Campbell Barton
33e554799b Minor warning cleanup & fix
- comment/remove assignments from values to themselves.
- add case break statements (no functional change but some source code checkers notice).
- fix python errors when the sculpt brush is None.
2011-06-27 03:36:14 +00:00
Brecht Van Lommel
754c134e09 Fix #27279: IK bone rotation limits set to 0 disabled the limit, this was
unintentional, since there is already a toggle to enable/disable it.
2011-05-12 08:34:31 +00:00
Nathan Letwory
c6f228c485 doxygen: intern/iksolver tagged. Leaving out TNT, since we have it in multiple locations. 2011-02-25 11:43:19 +00:00
Campbell Barton
89c617a116 remove nan-makefiles 2011-01-30 15:29:22 +00:00
Campbell Barton
627d47c322 remove MSVC 6.0 workaround. 2011-01-16 20:25:47 +00:00
Joshua Leung
013ffe9041 Bugfix #24296: AutoIK interactive chain length adjustment feature is missing
In 2.49, you could adjust the maximum length of Auto-IK Chains by using scrollwheel up/down or page up/down while moving Auto-IK bones. Now this is possible again with those hotkeys, but you need to hold SHIFT to get this to work, otherwise we get a conflict with the hotkeys for proportional edit nowadays.

Was broken when transform tools switched from using hardcoded key mappings to using a modal keymap.
2010-10-17 11:20:12 +00:00
Campbell Barton
75410037fd - correct some spelling errors.
- remove FreeCamera struct (wasnt used)
- remove world color alpha values (not used anywhre).
2010-07-20 10:41:08 +00:00
Brecht Van Lommel
0d5075676e Fix #22085: compile error on windows, M_PI undeclared. 2010-04-20 09:28:15 +00:00
Brecht Van Lommel
9a85013692 Merge various small changes from render branch:
* Division by zero fix for TNT SVD code.
* Sound fix, in case ffmpeg decode fails, don't use the samples.
* Fix for incorrect bounds of transformed objects in new raytracing code.
* Gave memory arena's a name used for allocations for easier memory
  usage debugging.
* Dupligroup no_draw option was using layers but not restrict view/render
  setting. (not a bugfix exactly but would do display list context switching
  while drawing for no reason).
* Fix objects instanced on hair particles not giving consistent results
  when the object is transformed.
* New math functions: madd_v4_v4fl, len_squared_v3v3, interp_v4_v4v4v4,
  mul_v4_m4v4, SH and form factor functions, box_minmax_bounds_m4.
* mul_m4_m4m4 and mul_m3_m3m3 now accept the same pointers for multiple
  arguments.
* endjob callback for WM jobs system.
* Geometry node uv/color layer now has search list/autocomplete.
* Various small buildsystem tweaks, not strictly needed yet in trunk.
2010-04-15 10:28:32 +00:00
Campbell Barton
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
Andrea Weikert
df2ed25558 MSVC compile fix
* needed to add _USE_MATH_DEFINES to make M_PI known
2010-02-06 10:50:34 +00:00
Joshua Leung
29a6465ed4 Bugfix #20971: IK Joints Inexplicably Stiff In Recent Blender 2.5 Builds
- IK-Solver interfaces were still converting units from degrees to radians. Made these all use radians now.

- Tried to fix the DOF limits drawing. This is still not totally functional again yet, but at least there are visible lines now.
2010-02-05 22:03:19 +00:00
Nathan Letwory
fb649d5824 * cleaning up warnings (mostly windows). A collection of other warning fixes too (undefined function, assuming int, etc.)
This compiled fine with scons/msvc and scons/mingw (gcc 4.4.0). Please test and report any problems.
2009-09-06 13:20:05 +00:00
Brecht Van Lommel
9bcdb4b758 2.5: various warning fixes. 2009-01-17 00:51:42 +00:00
Brecht Van Lommel
d5f4b3620f Fix for bug #8680: GameLogic.getRandomFloat() returns very small
values on 64 bit, instead of range 0..1. Also a warning fix.
2008-06-29 20:53:17 +00:00
Chris Want
5d0a207ecb Patch from GSR that a) fixes a whole bunch of GPL/BL license
blocks that were previously missed; and b) greatly increase my
ohloh stats!
2008-04-16 22:40:48 +00:00
Brecht Van Lommel
a8145c26f2 Bugfix: IK solving could go in infinite loop in SVD decomposition,
the matrix library used didn't have a maximum iterations check for
degenerate cases.
2008-02-06 16:45:51 +00:00
Brecht Van Lommel
37d11907d0 Bugfix for IK locked axes with an initial rotation, gave wrong
starting angle in some cases, but wasn't always noticeable due
to the IK solver changing it anyway.

Bugfix for hidden bones in pose mode still being active, and
preventing other bones from becoming active.
2007-12-06 19:44:17 +00:00
Brecht Van Lommel
c5d2be76d7 IK
==

Solving is now done independent of scale, by scaling the chain to have a
size of about 1.0. This solves some issues with small or big chains, and
also makes the IK stretch setting independent of scale. The latter breaks
backwards compatibility somewhat, but is an improvement over what it did
before.
2007-11-01 12:40:46 +00:00
Brecht Van Lommel
30be716fc8 Pole Target for IK
==================

This adds an extra target to the IK solver constraint to define the
roll of the IK chain.

http://www.blender.org/development/current-projects/changes-since-244/inverse-kinematics/

Also fixes a crashes using ctrl+I to set an IK constraint on a bone
due to the recent constraints refactor.
2007-10-24 14:58:31 +00:00
Kent Mein
6e91048bff This covers bugs # 7130 7131 7132 7133
All small patches submitted by Vladimar Marek (neuron)

Basically fixes up some headers for Solaris's compiler.

Kent
2007-08-31 15:47:45 +00:00
Ton Roosendaal
627261da50 Patch by Vladimír Marek (neuron), part of bugfix #5298
Solaris CC compiler choked on wrong .h prototypes for functions using
'const' arguments.
2006-11-25 16:35:56 +00:00
Brecht Van Lommel
2f5df4631d Fixes for some gcc 4 warnings in intern/. More than 100 lines of warnings
for 2 unused parameters in templated c++ code, that's just ridiculous.
2006-03-04 16:23:15 +00:00
Chris Want
0a2b71a3a4 Getting blender to compile for IRIX, in particular:
IK: needed to change abs() to TNT::abs() (thanks brecht!)

Freetype: FT_ENCODING_UNICODE typecast to FT_CharMap (thanks intrr!)

header_image: missing include for liballoc stuff

Ketsji: needed to declare m_hitObject as public in KX_MouseFocusSensor.h.
This is probably the wrong thing to do, but KX_MouseFocusSensor.cpp
compilation fails on line 279 otherwise.
2005-09-14 21:50:37 +00:00
Brecht Van Lommel
0535d26e6d - Changed xz limit drawing to use same formulas as the limiting in the IK
module -- the previous method could be off pretty far.
- Added drawing of transparent surface for it, instead of just the border.
- Added "stretch IK", allowing bones not only to rotate, but also scale.
  The "Stretch" value below the DoF buttons is used to enabled this.

- Some code tweaking: slightly simplified computation of transform for IK,
  renamed chain to tree, removed unused pchan->ik_mat, ..

Internal IK module work:
- Do damping per DoF also based on stiffness, hopefully makes it converge
  faster with very stiff joints.
- Instead of having two joints types (translational and rotational), now
  all 6 DoF's can be enabled for one joint.
- Added limits for translational joints.
2005-08-31 22:09:44 +00:00
Brecht Van Lommel
c921ee25cc Bugfix; rotation limits for < 3 DOF bones were using wrong reference
rotation, causing incorrect limits if there was already a pose transform.
2005-08-29 12:06:23 +00:00
Brecht Van Lommel
275c214195 IK rotation limits fixes:
- Z-axis rotation limits were not working, was using wrong flag.
- Don't allow min limit to go over max, or vice versa.
- Fix for jacobian getting overwritten with IK clamping.
2005-08-28 13:06:41 +00:00
Brecht Van Lommel
fa443a5f01 Bugfix; the IK solver would crash if there were 0 DOF's in the chain. 2005-08-27 23:04:37 +00:00
Brecht Van Lommel
8f5bff6051 Make IK DOF stiffness work in range 0.0-1.0, for consistency. 2005-08-27 14:27:05 +00:00
Brecht Van Lommel
ae9dcb3dc2 Update SConscript.
Fix some warnings.
Merge with latest soc code.

What changed in IK lib:

Fully restructured, with components now as follows:
  - IK_Solver: C <=> C++ interface
  - IK_QSegment: base class for bone/segment with 0
    to 3 DOF
  - IK_QTask: base class for a task (currently there's
    a position and a rotation task)
  - IK_QJacobian: the Jacobian matrix, with SVD
    decomposition, damping, etc
  - IK_QJacobianSolver: the iterative solver

The exponential map parametrization is no longer used,
instead we have now:
  - 3DOF and 2DOF XZ segments: directly update matrix
    with Rodrigues' formula
  - Other: Euler angles (no worries about singularities
    here)

Computation of the Jacobian inverse has also changed:
  - The SVD algorithm is now based on LAPACK code,
    instead of NR, to avoid some problems with rounding
    errors.
  - When the problem is underconstrained (as is the case
    most of the time), the SVD is computed for the transpose
    of the Jacobian (faster).
  - A new damping algorithm called the Selectively Damped
    Least Squares is used, result in faster and more
    stable convergence.
  - Stiffness is implemented as if a weighted psuedo-inverse
    was used.

Tree structure support.

Rotation limits:
  - 3DOF and 2DOF XZ segments limits are based on a swing
    (direct axis-angle over XZ) and twist/roll (rotation
    over Y) decomposition. The swing region is an ellipse
    on a sphere.
  - Rotation limits are implemented using an inner clamping
    loop: as long as there is a violation, a violating DOF
    is clamped and removed from the Jacobian, and the solution
    is recomputed.

Convergence checking is based now on the max norm of angle
change, or the maximum number of iterations.
2005-08-27 13:45:19 +00:00
Ton Roosendaal
8d36b517f9 Forgot to add new files... 2005-08-27 13:10:41 +00:00
Ton Roosendaal
665a6b2d95 First commit of Brecht's new IK work. This only does the IK module.
Don't start compiling yet!
2005-08-27 12:44:41 +00:00
Jean-Luc Peurière
c78e44cdc5 big warning hunt commit
lot of casts, added prototypes, missing includes and some true errors
2005-03-09 19:45:59 +00:00
Kent Mein
a297f42bcd Changed : A[i,k] to A[i][k]
Caught from the following warning:
In file included from IK_QChain.h:47,
                 from IK_QChain.cpp:44:
TNT/cmat.h: In function `void TNT::matmultdiag(TNT::Matrix<T>&, const TNT::Matri
x<T>&, const TNT::Vector<T>&)':
TNT/cmat.h:593: warning: left-hand operand of comma has no effect

Kent
2004-08-30 13:44:58 +00:00
Kester Maddock
6ce57a706f GCC 3.4 compile fixes from bug #1277 2004-07-22 00:15:50 +00:00
Daniel Dunbar
8768fdf08f Update to use <iostream> vs <iostream.h> 2003-03-18 23:21:31 +00:00