14 years agoBugfix; rotation limits for < 3 DOF bones were using wrong reference
Brecht Van Lommel [Mon, 29 Aug 2005 12:06:23 +0000 (12:06 +0000)]
Bugfix; rotation limits for < 3 DOF bones were using wrong reference
rotation, causing incorrect limits if there was already a pose transform.

14 years agoupdated MSVC 6 Project file for IKSolver.
Simon Clitherow [Mon, 29 Aug 2005 10:19:59 +0000 (10:19 +0000)]
updated MSVC 6 Project file for IKSolver.

14 years agoMEM_freeN() and MEM_mallocN() should not have been redeclared in this
Chris Want [Mon, 29 Aug 2005 02:47:55 +0000 (02:47 +0000)]
MEM_freeN() and MEM_mallocN() should not have been redeclared in this

14 years agoErrors in buttons defining DoF for bones; needed a redraw and fixed typo
Ton Roosendaal [Sun, 28 Aug 2005 17:52:34 +0000 (17:52 +0000)]
Errors in buttons defining DoF for bones; needed a redraw and fixed typo
in min/max detection for buttons.

14 years agoPose depgraph error... skipped a bone for proper IK sorting. Caused lag or
Ton Roosendaal [Sun, 28 Aug 2005 15:26:00 +0000 (15:26 +0000)]
Pose depgraph error... skipped a bone for proper IK sorting. Caused lag or
bad updates in grabbing.

14 years agoIK rotation limits fixes:
Brecht Van Lommel [Sun, 28 Aug 2005 13:06:41 +0000 (13:06 +0000)]
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.

14 years agoIntegration of new IK lib features in Armature Poses.
Ton Roosendaal [Sun, 28 Aug 2005 12:23:06 +0000 (12:23 +0000)]
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
- 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
- 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

14 years agoBugfix; the IK solver would crash if there were 0 DOF's in the chain.
Brecht Van Lommel [Sat, 27 Aug 2005 23:04:37 +0000 (23:04 +0000)]
Bugfix; the IK solver would crash if there were 0 DOF's in the chain.

14 years agopatch #2911 - tp_getset for Lamp module.
Stephen Swaney [Sat, 27 Aug 2005 18:44:56 +0000 (18:44 +0000)]
patch #2911 - tp_getset for Lamp module.
A nice juicy chunk of new style attribute handling from Ken Hughes.

Thanks, Ken.

14 years agoIK work-in-progress commit;
Ton Roosendaal [Sat, 27 Aug 2005 17:04:29 +0000 (17:04 +0000)]
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

14 years agoMake IK DOF stiffness work in range 0.0-1.0, for consistency.
Brecht Van Lommel [Sat, 27 Aug 2005 14:27:05 +0000 (14:27 +0000)]
Make IK DOF stiffness work in range 0.0-1.0, for consistency.

14 years agoUpdate SConscript.
Brecht Van Lommel [Sat, 27 Aug 2005 13:45:19 +0000 (13:45 +0000)]
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

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
  - 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.

14 years agoAnother file missed in IK commit.
Brecht Van Lommel [Sat, 27 Aug 2005 13:27:49 +0000 (13:27 +0000)]
Another file missed in IK commit.

14 years agoForgot to add new files...
Ton Roosendaal [Sat, 27 Aug 2005 13:10:41 +0000 (13:10 +0000)]
Forgot to add new files...

14 years agoThird and last commit for Brecht's IK work.
Ton Roosendaal [Sat, 27 Aug 2005 12:48:45 +0000 (12:48 +0000)]
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! :)

14 years agoSecond commit for Brecht's IK work.
Ton Roosendaal [Sat, 27 Aug 2005 12:45:29 +0000 (12:45 +0000)]
Second commit for Brecht's IK work.

(Moto needs 'make install' before you can do IK lib btw)

14 years agoFirst commit of Brecht's new IK work. This only does the IK module.
Ton Roosendaal [Sat, 27 Aug 2005 12:44:41 +0000 (12:44 +0000)]
First commit of Brecht's new IK work. This only does the IK module.

Don't start compiling yet!

14 years agoFixes, as reported by Basse
Ton Roosendaal [Fri, 26 Aug 2005 17:48:46 +0000 (17:48 +0000)]
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

14 years ago - tsk tsk, ll suffix for constants is not C standard, doesn't
Daniel Dunbar [Fri, 26 Aug 2005 16:07:44 +0000 (16:07 +0000)]
 - tsk tsk, ll suffix for constants is not C standard, doesn't
   work on msvc

14 years agoaccidentally left in testing printf.
Ton Roosendaal [Thu, 25 Aug 2005 20:32:49 +0000 (20:32 +0000)]
accidentally left in testing printf.

14 years agoBased on a suggestion from Zr, using line line intersection for single axis projection.
Martin Poirier [Thu, 25 Aug 2005 18:03:19 +0000 (18:03 +0000)]
Based on a suggestion from Zr, using line line intersection for single axis projection.
This makes perspective handling a bit better.

14 years agoRandom() issues with rendering...
Ton Roosendaal [Thu, 25 Aug 2005 13:11:04 +0000 (13:11 +0000)]
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!

14 years agoiBug fix #2965
Ton Roosendaal [Wed, 24 Aug 2005 21:12:58 +0000 (21:12 +0000)]
iBug fix #2965

Switching scene in Edit Mode crashed. Accessed the DAG without it being
initialized yet.

14 years agoMove the settings in the Mesh Tools panel to the new toolsettings struct in Scene...
Johnny Matthews [Wed, 24 Aug 2005 20:37:25 +0000 (20:37 +0000)]
Move the settings in the Mesh Tools panel to the new toolsettings struct in Scene. These settings are now saved per scene.

14 years agoMaking compiler happy;
Ton Roosendaal [Wed, 24 Aug 2005 20:26:28 +0000 (20:26 +0000)]
Making compiler happy;

- removed unused variables
- #if 0 around unused calls
- init of uninitialized vars

14 years agoHuge commit, but not much features... had to shuffle a lot of code around.
Ton Roosendaal [Wed, 24 Aug 2005 20:18:03 +0000 (20:18 +0000)]
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

- removed unused variables from Constraint struct

14 years agoVariable was defined in a header file (constant_Type), resulting in
Chris Want [Tue, 23 Aug 2005 22:12:06 +0000 (22:12 +0000)]
Variable was defined in a header file (constant_Type), resulting in
'multiply defined symbol' warning on IRIX for every file that
included that file. Moved to a C source file.

14 years agohelp MSVC6 projects for edgehash files
Jens Ole Wund [Tue, 23 Aug 2005 21:49:30 +0000 (21:49 +0000)]
help MSVC6 projects for edgehash files

14 years ago - more fixes for wpaint mode, need to patch mesh modifier as well
Daniel Dunbar [Tue, 23 Aug 2005 21:04:17 +0000 (21:04 +0000)]
 - more fixes for wpaint mode, need to patch mesh modifier as well
 - change wpaint to flush changes during painting... can see this
   is going to be a problem because will also redeform. what to
   do, what to do...

14 years ago - disabled incremental subsurf support (during object mode) for the
Daniel Dunbar [Tue, 23 Aug 2005 20:39:58 +0000 (20:39 +0000)]
 - disabled incremental subsurf support (during object mode) for the
   time being, misses features for texture/color drawing and I don't
   have time to finish at the moment. can return once UV/colors are
   incorporated into subdivision.

14 years agoFix for reading older files... it didn't always convert OK for the new
Ton Roosendaal [Tue, 23 Aug 2005 20:19:01 +0000 (20:19 +0000)]
Fix for reading older files... it didn't always convert OK for the new
deformation options of Armatures, causing bones not to deform.

It was caused by using the old "boneclass" variable and SKINNABLE.
Apparently the boneclass can have any value in older files. Will be killed.

Please note; in files created after last sunday, with setting "No deform" on a
Bone, that setting has to be done again.

14 years ago - add option to drawMappedFaces to draw with colors (from tface or mcol)
Daniel Dunbar [Tue, 23 Aug 2005 20:04:10 +0000 (20:04 +0000)]
 - add option to drawMappedFaces to draw with colors (from tface or mcol)
 - convert weightpaint/vertexpaint to draw using drawMappedFaces, slightly
   hacky because during weightpaint mcol's get overridden in order to
   have them propogate through modifiers. should work fine.
 - add NULL check in shaded draw, prevents crash w/ dupliframe

14 years agoBretch's patch for 2D transform. Thanks
Martin Poirier [Tue, 23 Aug 2005 18:13:30 +0000 (18:13 +0000)]
Bretch's patch for 2D transform. Thanks

Using new transform code to handle UV window.

With the ground work done, Transform could more easily be extended to handle IPO window now.

Tracker item:

14 years agodon't need Object.h
Erwin Coumans [Tue, 23 Aug 2005 16:50:53 +0000 (16:50 +0000)]
don't need Object.h

14 years agoQuad Adjacent edge subdivide type moved to Mesh Tools panel rather than pupmenu on...
Johnny Matthews [Tue, 23 Aug 2005 14:13:00 +0000 (14:13 +0000)]
Quad Adjacent edge subdivide type moved to Mesh Tools panel rather than pupmenu on all subdiv calls. This is a session value like beauty and will revert to path each time you load blender.

14 years agonew game-menu option 'Record Game Physics to Ipo'
Erwin Coumans [Tue, 23 Aug 2005 13:16:02 +0000 (13:16 +0000)]
new game-menu option 'Record Game Physics to Ipo'
including implementation. hope it works, and doesn't break to much.
it bakes physics objects transform into ipo, every frame of the running gameengine.
When you disable and run the game again, it clears the ipo's again. just for physics objects at the moment.

(perhaps some better UI in the future?)

14 years ago - added iterator to edgehash
Daniel Dunbar [Tue, 23 Aug 2005 02:29:22 +0000 (02:29 +0000)]
 - added iterator to edgehash
 - updated decimator to make edges

14 years agoAdded (non-default) Makefile option to build blender with tweak mode.
Chris Want [Tue, 23 Aug 2005 02:28:01 +0000 (02:28 +0000)]
Added (non-default) Makefile option to build blender with tweak mode.
To build with this option, set:

export NAN_TWEAK_MODE=true

14 years ago - subsurf getVertCos returned verts in wrong order since
Daniel Dunbar [Tue, 23 Aug 2005 02:05:45 +0000 (02:05 +0000)]
 - subsurf getVertCos returned verts in wrong order since
   shuffling of code... led to fun and crazy results (maybe
   less fun for les artiste)

14 years agoOn windows/gcc (aka. FREE_WINDOWS), build the blenderplayer whenever
Chris Want [Tue, 23 Aug 2005 01:31:11 +0000 (01:31 +0000)]
On windows/gcc (aka. FREE_WINDOWS), build the blenderplayer whenever
blender is configured to build with the gameengine.

14 years agoAnother painful editing issue solved!
Ton Roosendaal [Mon, 22 Aug 2005 21:58:55 +0000 (21:58 +0000)]
Another painful editing issue solved!

Adding Ipos on a Constraint just was working totally insane. Here's how
it works now in the constraint Panel:

- Button "Show" will make the IpoWindow show the Constraint Ipo
 (it didn't before, when IpoWindow was not set to correct mode)

- Button "Key" will insert a key point on current frame (and show it in

Note that both options will create an Action too, if not existed yet.
So, without opening an IpoWindow you can already animate Constraints.
(Todo: use the auto key option to always insert on changing slider)

And; selecting a Bone will update the Constraint IpoWindow too. Note
however, that when theres multiple Constraint Ipos on a Bone, it only
shows the first... will solve that later.

14 years ago - switch modifiers_isDeformedByArmature to also include
Daniel Dunbar [Mon, 22 Aug 2005 20:25:54 +0000 (20:25 +0000)]
 - switch modifiers_isDeformedByArmature to also include
   virtual modifiers

14 years ago - added modifiers_isDeformedByArmature function
Daniel Dunbar [Mon, 22 Aug 2005 20:24:59 +0000 (20:24 +0000)]
 - added modifiers_isDeformedByArmature function

14 years agomore preparation for physics recording to ipo keyframes
Erwin Coumans [Mon, 22 Aug 2005 18:31:19 +0000 (18:31 +0000)]
more preparation for physics recording to ipo keyframes

14 years agoThis commit introduces 2 new filling methods for subdividing quads which have only...
Johnny Matthews [Mon, 22 Aug 2005 18:05:40 +0000 (18:05 +0000)]
This commit introduces 2 new filling methods for subdividing quads which have only 2 adjacent edges selected. Path, Fan and Innerverts. ATM whenever a call is made to any subdivide calling tool, you will be asked for the type by a pupmenu. This will be replaced (perhaps) by a panel setting...

14 years agoThree little feats;
Ton Roosendaal [Mon, 22 Aug 2005 17:52:52 +0000 (17:52 +0000)]
Three little feats;

- Vpaint and Wpaint now use our own custom cursor, this was a very old
  plan anyway. It uses the 'knife' now, we need a good brush icon for it!
- On scaling bones in editmode, the deform distance info gets scaled now
  too when no "Envelope" draw mode was set.
- Disabled front buffer drawing of objects with CTRL+select in Edit Mode.
  Uses a regular redraw now (like for select in Object Mode btw)

14 years ago- prepared for automatic game physics -> animation (ipo) conversion (this allows...
Erwin Coumans [Mon, 22 Aug 2005 15:47:56 +0000 (15:47 +0000)]
- prepared for automatic game physics -> animation (ipo) conversion (this allows to use bullet for animation)
- default the m_edgecode to 65535, the wireframe was invisible. when is the edgecode available again ?
- added an extra condition, nearsensor is not yet working for bullet, but it crashed.

14 years agoSome fixes;
Ton Roosendaal [Sun, 21 Aug 2005 22:01:20 +0000 (22:01 +0000)]
Some fixes;

- Armature deform options "Envelope" and "Vertexgroup" didn't combine. One
  Vertexgroup added disabled all Envelopes
- "Clear" option in WPaint Panel now sends refresh to deform
- Same for Undo in Wpaint

14 years agoUse new BLI_edgehash_* functions in unwrapper.
Brecht Van Lommel [Sun, 21 Aug 2005 21:39:44 +0000 (21:39 +0000)]
Use new BLI_edgehash_* functions in unwrapper.

14 years agoMuch wanted; Constraint "move up" and "move down" buttons, in the Panel!
Ton Roosendaal [Sun, 21 Aug 2005 21:20:53 +0000 (21:20 +0000)]
Much wanted; Constraint "move up" and "move down" buttons, in the Panel!

14 years ago - sillyness... added drawMappedEdges for mesh
Daniel Dunbar [Sun, 21 Aug 2005 20:48:45 +0000 (20:48 +0000)]
 - sillyness... added drawMappedEdges for mesh
 - revert to drawLooseEdges instead of general drawEdgesFlag
 - ditched TFace edge flags, done dynamically now which also
   means don't need to recalc surface on flag changes
 - added BLI_edgehash, guess what it does

14 years agoMade weight-painting more bearable :)
Ton Roosendaal [Sun, 21 Aug 2005 20:09:50 +0000 (20:09 +0000)]
Made weight-painting more bearable :)

- Hotkey CTRL+TAB toggles weightpaint on/off
- If Mesh has no vertex groups yet, it still accepts Weight Paint mode.
  Then, on a first painting stroke it creates a default group.
- When combining WeightPaint mode with Bone selecting, if you select a
  Bone without vertex group it draws Mesh dark blue. On a first painting
  stroke it then also creates a new group, with the Bone name.

14 years ago - bug fix, last edge wasn't flagged correctly on make_edges
Daniel Dunbar [Sun, 21 Aug 2005 19:01:30 +0000 (19:01 +0000)]
 - bug fix, last edge wasn't flagged correctly on make_edges

14 years agoControl over Armature deform. Three new options are added for it;
Ton Roosendaal [Sun, 21 Aug 2005 18:53:12 +0000 (18:53 +0000)]
Control over Armature deform. Three new options are added for it;

Armature Panel
- "Vertex Groups"
- "Envelope"

Bones Panel
- "Mult"

The logic works as follows;
- Set "Vertex Groups" will enable vertex group based deform (default)
- Set "Envelope" will enable Bone Envelopes to deform
- Set both will apply Envelope deform on vertices without VertexGroups

- Set the per-Bone "Mult" option to have Envelopes work on top of a
- The per-Bone "Deform" option (was called "Skinnable") will dis/enable
  the Bone to deform for all situations.

The old convention was that, without any vertex groups, the Bones deformed
with bone-distances. I can't patch that... so you have to enable it by
hand in older files. Not too bad, since this option was unusable before
anyway. :)

14 years ago - edge draw experiment didn't turn out to be useful, removed and reverted
Daniel Dunbar [Sun, 21 Aug 2005 17:57:06 +0000 (17:57 +0000)]
 - edge draw experiment didn't turn out to be useful, removed and reverted
   to old.
 - updated fasterdraw() to work with edges

14 years agobugfix: #2924 Bugs in api2_2x/Material.c
Stephen Swaney [Sun, 21 Aug 2005 15:16:16 +0000 (15:16 +0000)]
bugfix: #2924  Bugs in api2_2x/Material.c
 - BPy_Material_methods[] "setFilter" calls Material_setFresnelMirrFac()
 - Material_setSpecSmooth() should be setting param[3], not param[2]

Contributed by Ken Hughes.  Thanks!

14 years agoA large collection of fixes from Ken Hughes including:
Stephen Swaney [Sun, 21 Aug 2005 15:00:17 +0000 (15:00 +0000)]
A large collection of fixes from Ken Hughes including:
 - corrections to constants
 - parameter type checking
 - correct use of METH_VARARGS vs METH_NOARGS
 - return objects instead of strings in Scene.getChildren() as per doc.
 - correct logical operators

Thanks, Ken!

14 years agoTemporal; make compiling happy. :)
Ton Roosendaal [Sun, 21 Aug 2005 14:39:08 +0000 (14:39 +0000)]
Temporal; make compiling happy. :)

14 years agoAt last! B-bones now deform. :)
Ton Roosendaal [Sun, 21 Aug 2005 11:26:53 +0000 (11:26 +0000)]
At last! B-bones now deform. :)
This works pretty nice for better control over the curvature of any bone
deform. No need to give Bones (vgroups) large influence, just add a coupleof B-bone segments.

Two notes;
- The Bone property "Segments" defines if a deform happens as a 'B-bone'.
  The drawtype B-bone is just for display in 3d window.
- A B-bone also deforms (bends) in Rest-position, if there's a joint that
  creates a curved Bone. Therefore, best results you get by creating a
  rest-position with straight joints. Or, if you prefer a slightly bended
  restposition (for a spine or so), make sure the Mesh model is *not*
  curved, the B-bone will do this for you.

Also added: proper events on changing buttons for Bones, like "Segm" or
"Dist" etc.

14 years agoMEM_alloc allocated in units of 8 for 32 bits systems, and units of 4 for
Ton Roosendaal [Sun, 21 Aug 2005 10:05:50 +0000 (10:05 +0000)]
MEM_alloc allocated in units of 8 for 32 bits systems, and units of 4 for
64 bits systems... weird bug. :)
It now only does a unit-of-4 check, for all systems. This will work fine,
since the malloc code will return aligned anyway, and the guarded alloc
system only stores ints in the headers. Also, the sizeof() call will
correctly do padding, so there's no risk of allocating too small blocks.

14 years ago - added mesh_strip_loose_faces, works in conjunction with make_edges
Daniel Dunbar [Sun, 21 Aug 2005 07:19:20 +0000 (07:19 +0000)]
 - added mesh_strip_loose_faces, works in conjunction with make_edges
   to get rid of faces with MFace.v3==0
 - change all Mesh's to have ->medge now. This is forced by make_edges
   on readfile, and in the various exotic important routines, and on
   conversion back in python.
 - make python NMesh structure always have medges now (needs testing)
 - with above two changes it is guarenteed that mf->v3 is never ==0
   in main blender code (i.e., all MFace's are actually triangles
   or quads) and so I went through and removed all the historic tests
   to deal with MFace.v3==0. Equals lots of deleting, I am in heaven!
 - removed MEdge edcode flag, no longer needed
 - added experimental replacement for edge flag system

Still are some inconsistencies in FACESELECT mode edge drawing to
be ironed out.

NOTE: This commit adds an experimental edge flag calc system, based
on 10-seconds-of-thought algorithm by yours truly. Would appreciate
feedback on how this system works, esp compared to old one and esp
on complex or interesting models.

To Use: New system is enabled by setting G.rt to a value between
1 and 1000 (Value of 0 uses old system). Value 1000 is reserved for
"auto" edge, which is more or less identical to old system but also
makes sure that at least 10% of edges are drawn (solves errors for
super subdivided meshes). Values between 1 and 999 act as percent
(out of 1000) of edges that should be drawn, starting with "most
interesting" edges first. Please try it and comment!

14 years agoSome whitespace cleanup...
Johnny Matthews [Sun, 21 Aug 2005 03:37:38 +0000 (03:37 +0000)]
Some whitespace cleanup...

14 years agoTemp edge selection for edgeslide draw length now deselected properly at the end...
Johnny Matthews [Sat, 20 Aug 2005 21:37:52 +0000 (21:37 +0000)]
Temp edge selection for edgeslide draw length now deselected properly at the end of edgeslide

14 years agoFix for setting in perspective view mode the ALT+B clipping planes.
Ton Roosendaal [Sat, 20 Aug 2005 20:30:13 +0000 (20:30 +0000)]
Fix for setting in perspective view mode the ALT+B clipping planes.
Fun: do exact camera viewborder to see camera volume!

14 years ago - bug fix, mirror modifier could duplicate edges on boundary in
Daniel Dunbar [Sat, 20 Aug 2005 20:04:32 +0000 (20:04 +0000)]
 - bug fix, mirror modifier could duplicate edges on boundary in
   certain cases

14 years agoLeft in a testing value for clipping... tsk! Did only three planes :)
Ton Roosendaal [Sat, 20 Aug 2005 19:45:34 +0000 (19:45 +0000)]
Left in a testing value for clipping... tsk! Did only three planes :)

14 years agoNew feature; User definable Clipping Planes.
Ton Roosendaal [Sat, 20 Aug 2005 19:18:35 +0000 (19:18 +0000)]
New feature; User definable Clipping Planes.

Press ALT+B in 3d window, draw a rect, and it becomes a clipping
volume of 4 planes. You then can rotate the view anyway you like.
Works for each 3d window individually.

Disable it with another ALT+B press.

Commit is huge because it had to change all selection code as well.
The user-clipping planes are in 'eye space', the other clipping
happens in projected 'viewport space'.

Nice to notice is that the 'x=3200' convention (to denote a coordinate
is clipped) now is a define. Define value is still a number though... but
we now can get up to screens of 12000 pixels without issues!

Known issue; here it refuses to draw the 'object centers' or Lamp icons
within the clipping region. Can't find any reason for it... however, we
might move to non-pixmaps for it anyway.

Testing might reveil numerous issues, will be standby for it.

Curious? Check this

14 years ago - another drawing bugfix, some normals were passed wrong
Daniel Dunbar [Sat, 20 Aug 2005 18:49:08 +0000 (18:49 +0000)]
 - another drawing bugfix, some normals were passed wrong

14 years ago - possible fix #2 for editmode face's draw black
Daniel Dunbar [Sat, 20 Aug 2005 18:38:33 +0000 (18:38 +0000)]
 - possible fix #2 for editmode face's draw black

14 years ago - bug fix for stooooopid crash in mirror modifier
Daniel Dunbar [Sat, 20 Aug 2005 18:25:11 +0000 (18:25 +0000)]
 - bug fix for stooooopid crash in mirror modifier

14 years ago - possible fix for editmesh solid drawing black, I can't reproduce
Daniel Dunbar [Sat, 20 Aug 2005 18:14:04 +0000 (18:14 +0000)]
 - possible fix for editmesh solid drawing black, I can't reproduce
   so working a bit blind here

14 years agoIn edgeslide if Draw Edge Length is on, the rail edges will be temporarily selected...
Johnny Matthews [Sat, 20 Aug 2005 16:38:05 +0000 (16:38 +0000)]
In edgeslide if Draw Edge Length is on, the rail edges will be temporarily selected so that actual new edge length can be seen.

14 years ago - tweak virtual modifier display, now label "parent deform" and
Daniel Dunbar [Sat, 20 Aug 2005 11:01:17 +0000 (11:01 +0000)]
 - tweak virtual modifier display, now label "parent deform" and
   don't display with edit buttons

14 years agoA couple of smaller fixes;
Ton Roosendaal [Sat, 20 Aug 2005 09:55:11 +0000 (09:55 +0000)]
A couple of smaller fixes;

- Modifier Panel, name label for "Virtual" modifiers was too short
- On extrude Bones, "soft distance" now is always set based on length
  of the bone (also on CTRL+click, also when Envelope drawmode is not set)
- Added undo-push for "Apply Bone Envelopees to VertexGroup" in WeightPaint.
- Menu-buttons in floating panels sometimes gave drawing error
- InfoWindow buttons were always allocated & drawn, even when window was
  zero sized... waste of cpu, tsk!

14 years ago - agh! missed it again! for real this time, fix for proper updating
Daniel Dunbar [Sat, 20 Aug 2005 09:17:20 +0000 (09:17 +0000)]
 - agh! missed it again! for real this time, fix for proper updating
   in image window

14 years ago - made make_edge mark edges with LOOSEEDGE appropriately
Daniel Dunbar [Sat, 20 Aug 2005 09:16:09 +0000 (09:16 +0000)]
 - made make_edge mark edges with LOOSEEDGE appropriately
 - added user settable defaultEdgeData (for auto edge creation
   in CCGSubSurf)
 - bug fix, possible crash on meshes with loose edges but
   in mface not in medge
 - missed file in last commit, for proper updating in image

14 years ago - bug fix, apply modifier removed modifier even on certain
Daniel Dunbar [Sat, 20 Aug 2005 07:42:25 +0000 (07:42 +0000)]
 - bug fix, apply modifier removed modifier even on certain
 - change drawimagespace to check and update object data if
   it needs a recalc. this fixes errors with a recalc being
   flushed but not actually being done before spaceimage
   redraws. Updates typically actually happen in draw loop,
   which is not a great design...
 - make shared vertexcol didn't flush update

14 years ago - convert all DerivedMesh map functions to use index based
Daniel Dunbar [Sat, 20 Aug 2005 03:08:23 +0000 (03:08 +0000)]
 - convert all DerivedMesh map functions to use index based
   mapping (instead of Edit{Vert,Edge,Face} pointers)
 - dropped convertToDispListMeshMapped (whew, glad of it too)
 - added DerivedMesh drawMappedFaces function
 - dropped EM suffix for DerivedMesh functions, it was neither
   particularly correct nor descriptive
 - converted test_index_mface to test_index_face that also corrects
   MCol and TFace. Good thing we had three versions of this routine,
   you never know when one might burn down.
 - removed flipnorm_mesh, not used anymore (and was incorrect to

 - Getting face select to work with modifiers turned out to be much
   more complicated than expected. Reworked mapping architecture for
   modifiers - basically elements in a DispListMesh are now required
   to be stored in an order that corresponds exactly to original
   ordering. MVert/MEdge/MFace all have a new flag ME_XXX_STEPINDEX
   that is set on each element that is set on the first derived element
   of each original element. I can't say the code to follow these
   requirements for subsurf is particularly transparent, but on the
   upside it is a reasonably consistent and simple system that is memory
   efficient and allows keeping the DispListMesh structure.

 - rewrote mirror modifier to be simpler/conform to new requirements
   for mapped DispListMesh structure. This also means that mirror interacts
   much better with incremental subsurf calculation (it used to recalc
   one entire side on any topology change, now it generally avoids that).

 - added EM_{init,free}_index_arrays and EM_get_{vert,edge,face}_for_index
   functions to handle mapping indices back into appropriate EditMesh
 - bug fix, make edges didn't recalc object data
 - bug fix, initial image assignment to TFace's didn't recalc object data

 - new feature, added circle select support for FACESELECT
 - bug fix, creating new faces in editmode duplicated the TFACE active
   flag - but there should only be one active tface
 - bug fix, possible crash when deleting all faces in faceselect mode
   on mesh with tfaces...

Still todo: TFace edge drawing is still not always correct in face
mode, in particular with a mirror modifier when mesh has edges (and
no preceeding subsurf). Have not yet decided how to deal with this.
Best solution is probably to do switch to meshes all having MEdge's,
in which case I can get rid of TFace edge flags (and need to recalc
modifiers on tface selection change).

14 years agoMoving functions and calls to have a cleaner situation for futre work (implicit...
Jens Ole Wund [Fri, 19 Aug 2005 22:55:05 +0000 (22:55 +0000)]
Moving functions and  calls to have a cleaner situation for futre work (implicit solver .. n stuff)

14 years agoMore armature stuff;
Ton Roosendaal [Fri, 19 Aug 2005 21:37:29 +0000 (21:37 +0000)]
More armature stuff;

- The "Skinnable" option for Bones now is taken into account for the
  Envelope drawmode. If not Skinnable, it also doesn't draw the soft
  deform area. Maybe bone should be hidden... dunno yet.
- Use CTRL+LMB in weightpaint mode to sample the weight in a mesh.
  Note; it returns the weight of the closest visible vertex, not of a
  Blended result.
- NKey Panel for Mesh edit now shows a menu with the VertexGroup name(s)
  of a selected Vertex, plus the Weight.

- while scaling Bone points in editmode (Envelope drawtype), the Bone
  root scale was not copied from (or to) the parent tip. This was not
  visible (is not drawn) but deform did use it... causing weird errors.
  For those who saw this error today: just go into editmode, select all
  Bones, press Skey, enter. That fixes it :)

14 years agoCTRL+click now also allows Root-point extrude of Bones.
Ton Roosendaal [Fri, 19 Aug 2005 16:15:51 +0000 (16:15 +0000)]
CTRL+click now also allows Root-point extrude of Bones.

14 years agoForgot hidden flag update in this file...
Ton Roosendaal [Fri, 19 Aug 2005 12:39:43 +0000 (12:39 +0000)]
Forgot hidden flag update in this file...

14 years agoArmature "Envelope" editing.
Ton Roosendaal [Fri, 19 Aug 2005 12:35:15 +0000 (12:35 +0000)]
Armature "Envelope" editing.

For defining the deformation distances of Bones, three values are being
used now. The bone tip and root radius define the bone-shape itself and the
"dist" defines the soft area around it. A full (user) doc is in CMS here;

Note: todo still is allowing both Vertex Deform Groups and these Envelopes
together (and or per Bone).

Also part of this commit is:

- New: Hiding bones in EditMode. This is a separate 'hide flag', so you can
  keep the PoseMode hidden Bones separate from EditMode.
  (In the future we should do some kind of bone-grouping or so)
- While transform(), the hotkeys G,R,S only switch mode when the previous
  mode was compatible. Caused conflicts with Crease/BoneDist/etc.
- Deleting the last VertexGroup now also deletes the entire Mesh 'dvert'
  data. Sounds logical, but remember that VertexGroups are partial on a
  Mesh, partial on Object. Weird design decision though...
  Anyhoo, at this moment the only way to have Bone Envelopes deform, is
  by deleting all VertexGroups!
- In PoseMode, the hotkey ALT+S now does both B-Bone size or Envelope,
  depending draw type.
- In EditMode, Extrude now also works when only Root points were selected.
- Weight editing is also symmetrical btw, with the "X-axis Mirror" option

14 years agosupport for __MINGW32__ compiler, it doesn't have __forceinline
Erwin Coumans [Thu, 18 Aug 2005 17:32:25 +0000 (17:32 +0000)]
support for __MINGW32__ compiler, it doesn't have __forceinline

14 years agospack() is no longer used in the blender core, so I moved it to
Chris Want [Thu, 18 Aug 2005 16:48:10 +0000 (16:48 +0000)]
spack() is no longer used in the blender core, so I moved it to
this gameengine source file that depends on it.

14 years ago - added code to draw loose edges in textured and fastshade views
Daniel Dunbar [Thu, 18 Aug 2005 11:49:33 +0000 (11:49 +0000)]
 - added code to draw loose edges in textured and fastshade views

14 years ago - added DerivedMesh.drawUVEdges function & implementations
Daniel Dunbar [Thu, 18 Aug 2005 11:31:20 +0000 (11:31 +0000)]
 - added DerivedMesh.drawUVEdges function & implementations
 - removed DerivedMesh.drawLooseEdges and replaced with much more
   general drawEdgesFlag function that draws based edge flags.
 - switch DerivedMesh.drawFacesTex to give user control over which
   faces are drawn
 - added object_uvs_changed and object_tface_flags_changed functions
   to do object recalc flag flush/redraw queueing and added calls
   in appropriate places
 - added various edge flags to mark TFace information. This is used
   by the drawEdgesFlag routine and was the best way I could come
   up with to deal with drawing TFace information from modifier stack.
   Unfortunate side effects are (1) uses a lot of MEdge flags (although
   not needed in file so thats fine) and (2) requires recalculation
   of modifier stack on UV selection changes. #2 is disappointing
   but I could not find a better solution.
 - update UV mesh shadow drawing to use modifier result. At the moment
   just uses the final result but probably should be integrated with
   the editmode cage option.
 - convert draw_tfaces3D to use drawEdgesFlag routine which cleaned
   up the code quite a bit.
 - convert draw_tface_mesh to draw using result of modifier stack.
   Same comment about which result actually gets draw in FACESELECT
   mode as for UV editor shadow drawing applies.

There is a still a bug in that selection is using the wrong
mesh to draw.

14 years ago - bug fix, convert modifiers function used a shared displistmesh which
Daniel Dunbar [Thu, 18 Aug 2005 11:14:28 +0000 (11:14 +0000)]
 - bug fix, convert modifiers function used a shared displistmesh which
   could lead to crash
 - bug fix, exit_editmode was warning too often about free'ng baked
   softbody data.

14 years ago - remove redundant calculation of spring length
Daniel Dunbar [Thu, 18 Aug 2005 11:04:22 +0000 (11:04 +0000)]
 - remove redundant calculation of spring length

14 years agoSupport for 'Bullet' in the Makefiles. Enable with:
Chris Want [Thu, 18 Aug 2005 06:07:02 +0000 (06:07 +0000)]
Support for 'Bullet' in the Makefiles. Enable with:

export NAN_USE_BULLET=true

in environment, or in

14 years agoThe name of an included header had the capitalization wrong, causing
Chris Want [Thu, 18 Aug 2005 06:04:50 +0000 (06:04 +0000)]
The name of an included header had the capitalization wrong, causing
problems on unix.

14 years agosome more fixes in the raycast/mouse over
Erwin Coumans [Wed, 17 Aug 2005 19:52:56 +0000 (19:52 +0000)]
some more fixes in the raycast/mouse over

14 years agoGot rid of a couple other warnings, of the form:
Kent Mein [Wed, 17 Aug 2005 17:56:54 +0000 (17:56 +0000)]
Got rid of a couple other warnings, of the form:
struct blah was declared in param list this is probably not what you want...


14 years agoadded the "mouse over any", makes the sensor more useful
Erwin Coumans [Wed, 17 Aug 2005 14:29:58 +0000 (14:29 +0000)]
added the "mouse over any", makes the sensor more useful

14 years ago- update to constant.c
Joseph Gilbert [Wed, 17 Aug 2005 14:26:00 +0000 (14:26 +0000)]
- update to constant.c
  - give it the key/items interface
  - creates some factory functions for const generation
- genutils methods
  - method for getting module constants
  - method for throwing errors with a print string
- updates to function names
- clean up interpreter launch a bit

14 years ago- New feature: shift+ctrl+t in Mesh editmode splits quads in exact opposite
Ton Roosendaal [Wed, 17 Aug 2005 13:26:42 +0000 (13:26 +0000)]
- New feature: shift+ctrl+t in Mesh editmode splits quads in exact opposite
  way. Requested for low-poly modeling.

- fix: on exit editmode, the code always created a mesh->dvert block...
  silly, this made other code confused which decided whether to use
  dverts (vertex groups) or not.

- removed obsolete call from armature.c. Also fixed name of function there,
  preparation work for nicer support in Blender for "deform envelopes"

14 years ago - bug fix, free bake didn't work
Daniel Dunbar [Tue, 16 Aug 2005 22:58:31 +0000 (22:58 +0000)]
 - bug fix, free bake didn't work
 - bug fix, force free of bake data on exit editmode, can't
   give user a choice

14 years agoFor lukep:
Chris Want [Tue, 16 Aug 2005 22:11:40 +0000 (22:11 +0000)]
For lukep:

In face select mode, select faces by triangle/quad/other.
Available through header menu, toolbox, or hot keys.

Hot keys are:

ctrl-shift-alt-3: Select all triangles
ctrl-shift-alt-4: Select all quads
ctrl-shift-alt-5: Select all non-triangles/quads
(maybe a bit sore for the wrist)

And also available through the menu/toolbox.

I've never used f-gons so I don't know if the 'select other'
function works there (or works at all, for that matter).

14 years agoTurning off tweak mode until there's a better UI.
Martin Poirier [Tue, 16 Aug 2005 21:58:26 +0000 (21:58 +0000)]
Turning off tweak mode until there's a better UI.

14 years ago - bug fix, draw wire extra should use cage with vpaint/wpaint/tpaint
Daniel Dunbar [Tue, 16 Aug 2005 20:42:52 +0000 (20:42 +0000)]
 - bug fix, draw wire extra should use cage with vpaint/wpaint/tpaint