Revision 85efe76 by Ton Roosendaal August 28, 2005, 12:23 (GMT) |
Integration of new IK lib features in Armature Poses. Best is to forget yesterday's commit and old docs. New docs are underway... Here's how IK works now; - IK chains can go all the way to the furthest parent Bone. Disregarding the old option "IK to Parent" and disgregarding whether a Bone has an offset to its parent (offsets now work for IK, so you can also make T-bones). - The old "IK to Parent" option now only does what it should do: it denotes whether a Bone is directly connected to a Parent Bone, or not. In the UI and in code this option is now called "Connected". - You can also define yourself which Bone will become the "Root" for an IK chain. This can be any Parent of the IK tip (where the IK constraint is). By default it goes all the way, unless you set a value for the new IK Constraint Panel option "Chain Lenght". - "Tree IK" now is detected automatic, when multiple IK Roots are on the same Bone, and when there's a branched structure. Multiple IK's on a single chain (no branches) is still executed as usual, doing the IK's sequentially. - Note: Branched structures, with _partial_ overlapping IK chains, that don't share the same Root will possibly disconnect branches. - When you select a Bone with IK, it now draws a yellow dashed line to its Root. - The IK options "Location Weight" and "Rotation Weight" are relative, in case there's a Tree IK structure. These weights cannot be set to zero. To animate or disable IK Targets, use the "Influence" slider. - This new IK is backwards and upwards compatible for Blender files. Of course, the new features won't show in older Blender binaries! :) Other changes & notes; - In PoseMode, the Constraint Panel now also draws in Editing Buttons, next to the Bones Panel. - IK Constraint Panel was redesigned... it's still a bit squished - Buttons "No X DoF" is now called "Lock X". This to follow convention to name options positive. - Added Undo push for Make/Clear Parent in Editmode Armature - Use CTRL+P "Make Parent" on a single selected Bone to make it become connected (ALT+P had already "Disconnect"). On todo next; Visualizing & review of Bone DoF limits and stiffness |
Revision fa443a5 by Brecht Van Lommel August 27, 2005, 23:04 (GMT) |
Bugfix; the IK solver would crash if there were 0 DOF's in the chain. |
Revision adc1d71 by Stephen Swaney August 27, 2005, 18:44 (GMT) |
patch #2911 - tp_getset for Lamp module. A nice juicy chunk of new style attribute handling from Ken Hughes. Thanks, Ken. |
Revision eb1f657 by Ton Roosendaal August 27, 2005, 17:04 (GMT) |
IK work-in-progress commit; - Removed old convention that only allowed one "IK" connection for Bones in a joint. Was highly frustrating for editing trees or branches. In a next commit, there will be a different method to define IK target and IK root, so this option actually will become "Connect Bone" or so. - the IK group name is gone, now is just an option "Tree IK". When IK chains share a root they'll form a tree. Todo is preventing conflicts here (will be for editor to define IK Root) - Adding new IK constraint with CTRL+I activates Constraint |
Revision 8f5bff6 by Brecht Van Lommel August 27, 2005, 14:27 (GMT) |
Make IK DOF stiffness work in range 0.0-1.0, for consistency. |
Revision ae9dcb3 by Brecht Van Lommel August 27, 2005, 13:45 (GMT) |
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. |
Revision fa0bbaf by Brecht Van Lommel August 27, 2005, 13:27 (GMT) |
Another file missed in IK commit. |
Revision 8d36b51 by Ton Roosendaal August 27, 2005, 13:10 (GMT) |
Forgot to add new files... |
Revision ac619ba by Ton Roosendaal August 27, 2005, 12:48 (GMT) |
Third and last commit for Brecht's IK work. Full logs for changes will be added later. Worth to note now; - support for 'tree IK' added - DOF and stiffness per IK bone (in pose only) - Orientation IK support (target rotates -> chain follows) This is still WIP. Buttons might change, button ranges will change, and the way 'IK groups' are working will change. You can play with this, but don't expect saved files to work still by end of this day! :) |
Revision a7f2ebf by Ton Roosendaal August 27, 2005, 12:45 (GMT) |
Second commit for Brecht's IK work. (Moto needs 'make install' before you can do IK lib btw) |
Revision 665a6b2 by Ton Roosendaal August 27, 2005, 12:44 (GMT) |
First commit of Brecht's new IK work. This only does the IK module. Don't start compiling yet! |
Revision 669c4db by Ton Roosendaal August 26, 2005, 17:48 (GMT) |
Fixes, as reported by Basse - Softbody Mesh didnt update when it was child of armature-posing - Bone Stick drawing didn't draw selected in Solid + Object mode. - WeightPaint + Subsurf (nice that it works!) didn't update on Bone selection |
Revision 1046dfb by Daniel Dunbar August 26, 2005, 16:07 (GMT) |
- tsk tsk, ll suffix for constants is not C standard, doesn't work on msvc |
Revision 8fb7bba by Ton Roosendaal August 25, 2005, 20:32 (GMT) |
accidentally left in testing printf. |
Revision 6c9d743 by Martin Poirier August 25, 2005, 18:03 (GMT) |
Based on a suggestion from Zr, using line line intersection for single axis projection. This makes perspective handling a bit better. |
Revision 8d940df by Ton Roosendaal August 25, 2005, 13:11 (GMT) |
Random() issues with rendering... - AO and soft shadow AreaLight tables were generated without fixed seed, causing animations to give unwanted amounts of noise. - Made sure these tables now are calculated before render, with fixed seed - Then found out the BLI_rand() has very bad seeding... it showed up as patterns. After some experimenting, found a nice method using noise.c hash tables. For compatibility with old code, named it BLI_srandom() to use this next to the BLI_srand(). This follows libc rand() and random() naming convention. - Then of course threading should work... so made a BLI_thread_rand version of the calls. Now supports up to 16 threads, comments added in .h and .c Result is stable animation render with AO and soft shadow. But, please test and feedback! |
Revision c9f01ee by Ton Roosendaal August 24, 2005, 21:12 (GMT) |
iBug fix #2965 Switching scene in Edit Mode crashed. Accessed the DAG without it being initialized yet. |
Revision a51896b by Johnny Matthews August 24, 2005, 20:37 (GMT) |
Move the settings in the Mesh Tools panel to the new toolsettings struct in Scene. These settings are now saved per scene. |
Revision a978c12 by Ton Roosendaal August 24, 2005, 20:26 (GMT) |
Making compiler happy; - removed unused variables - #if 0 around unused calls - init of uninitialized vars |
Revision dfb654b by Ton Roosendaal August 24, 2005, 20:18 (GMT) |
Huge commit, but not much features... had to shuffle a lot of code around. Main target was cleanup of editconstraint.c and removal of the ugly ob->activecon (active constraint channel), which was set by the "Show" button in the Constraint Panel. Better is to introduce an 'Active Constraint' itself, which stores in the Constraint itself. By using this setting, and by checking the active Bone, the UI can update reliably now. This only shows now in IpoWindow btw (for constraint ipos). The active Constraint is drawn in the Buttons with a slightly brighter backdrop. Any action in that Panel selects a constraint now (even click in backdrop). So now we have pose channels & constraint channels nicely behaving. Now the darn Action channels... :) Further in this commit: - interface.c: Button ROUNDBOX now does button callback too. Button NUMSLI didn't do the callback on a click only - Cleaned up include files in yafray, got annoyed it compiled over all the time. - removed unused variables from Constraint struct |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021