16 years agoSaturday morning first cup of coffee hack (yeah, its a late
Daniel Dunbar [Sat, 3 Sep 2005 17:22:29 +0000 (17:22 +0000)]
Saturday morning first cup of coffee hack (yeah, its a late

 - fun for the whole family, boolean mesh modifier... doesn't work
   with layered modifiers yet (just uses base mesh), although may
   god have mercy on your soul if you want to run boolean on a
   subsurf anyway
 - added displistmesh_add_edges

This exposes a bug in boolean, apparently the output is somehow
random (hash on alloc'd pointer value perhaps) which is sortof

It also makes more apparent the desire for some level of control
over dep graph evaluation during editmode (at the moment dep
graph is reevaluated for a mesh object in editmode, but since
mesh changes are on editmesh other objects don't really see
any change, so it is a wasted recalc).

16 years ago - assorted minor warning fixes
Daniel Dunbar [Sat, 3 Sep 2005 16:20:33 +0000 (16:20 +0000)]
 - assorted minor warning fixes

16 years agoFix for bug #2974:
Brecht Van Lommel [Sat, 3 Sep 2005 13:28:14 +0000 (13:28 +0000)]
Fix for bug #2974:
Circle select in uv editor crashed when an image was assigned but not loaded.

16 years agoBug fix #2788
Ton Roosendaal [Sat, 3 Sep 2005 12:35:13 +0000 (12:35 +0000)]
Bug fix #2788

in 3d window, nkey panel, click in middle of number button & press ESC
moved the 3d cursor to that location. The button was passing on its
event to the window event queue, which shouldn't be.

16 years agoBug fix #2985
Ton Roosendaal [Sat, 3 Sep 2005 12:14:59 +0000 (12:14 +0000)]
Bug fix #2985

Envelope correction for moving bone-points in edit mode didn't reset on ESC

16 years agoBugfix #2977
Ton Roosendaal [Sat, 3 Sep 2005 11:20:16 +0000 (11:20 +0000)]
Bugfix #2977

Tweaked selection code for Manipulators in 'combo' mode, it gives
preference now to the scale/translate widgets over the rotate arcs. This
enables use of these widgets in ortho top/side views.

16 years agoBug fix #2972
Ton Roosendaal [Sat, 3 Sep 2005 10:50:21 +0000 (10:50 +0000)]
Bug fix #2972

Copy/Paste bone name buttons crashed, didn't use the callback for buttons
proper yet.

Also added MAXFRAME defines for buttons, instead of hardcoded values 9000
or 18000

16 years agoAuto-Fgon Feature for subdivide
Johnny Matthews [Fri, 2 Sep 2005 16:31:03 +0000 (16:31 +0000)]
Auto-Fgon Feature for subdivide

If Fgon is selected in mesh tools panel, In the following cases

Quad - 2 edge Adjacent - Path
Quad - 2 edge Adjacent - Innervert
Quad - 3 edge

'extra' faces are combined to fgons. to make cleaner subdivides. Please give feedback

16 years agoAdding back in the "Big Purple Dot" to indicate which edge the non-proportional Edges...
Johnny Matthews [Thu, 1 Sep 2005 18:40:16 +0000 (18:40 +0000)]
Adding back in the "Big Purple Dot" to indicate which edge the non-proportional Edgeslide is using for distance

16 years ago- Changed xz limit drawing to use same formulas as the limiting in the IK
Brecht Van Lommel [Wed, 31 Aug 2005 22:09:44 +0000 (22:09 +0000)]
- 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.

16 years agoRe-enabled freetype font rendering :-)
Alexander Ewering [Wed, 31 Aug 2005 19:07:06 +0000 (19:07 +0000)]
Re-enabled freetype font rendering :-)

16 years ago - mesh_strip_loose_faces was completely wrong, dunno what I was on...
Daniel Dunbar [Wed, 31 Aug 2005 04:04:28 +0000 (04:04 +0000)]
 - mesh_strip_loose_faces was completely wrong, dunno what I was on...

16 years agoUpdate to .NET project files
Joseph Gilbert [Tue, 30 Aug 2005 22:11:31 +0000 (22:11 +0000)]
Update to .NET project files
- added edgehash stuff
- added new IK solver stuff (rebuild /intern)

16 years agoNonproportional mode for loopcut
Johnny Matthews [Tue, 30 Aug 2005 20:33:35 +0000 (20:33 +0000)]
Nonproportional mode for loopcut

while sliding the edge, press P this will swap modes. while in Non prop mode, press F to change the control "side". You can still change the control edge too.

16 years agoForce redraw on Edgeslide Cancel (RMB and ESC)
Johnny Matthews [Tue, 30 Aug 2005 18:09:07 +0000 (18:09 +0000)]
Force redraw on Edgeslide Cancel (RMB and ESC)

Fixes bug reported by Fab31 on IRC

16 years agoBug #2962
Ton Roosendaal [Mon, 29 Aug 2005 18:03:03 +0000 (18:03 +0000)]
Bug #2962

Moving in Posemode + Rest Position a Bone crashed. Uninitialized Trans...

16 years agoFirst version of visualizing the DoF (french degrees!) for Pose-bones. It
Ton Roosendaal [Mon, 29 Aug 2005 17:02:24 +0000 (17:02 +0000)]
First version of visualizing the DoF (french degrees!) for Pose-bones. It
now only draws the limits for X and Z rotations (Y is bone axis itself).

Quick snaphsots (links will disappear):

It only draws for selected Bones that are part of IK, and have limits set.
Most work was getting code OK to setup drawing this 'DoF space', so now
experiments can be done with more drawing types.

ALso; Buttons for DoFs now only draw if the pose-bones are part of an IK

16 years agoMore text object fancyness, and fixes:
Alexander Ewering [Mon, 29 Aug 2005 12:46:07 +0000 (12:46 +0000)]
More text object fancyness, and fixes:

 - "Flush" is now split into two seperate Alignment modes "Flush" and

   - Justify does exactly the same as a normal word processor's justify
     function does, and in addition, it uses *whitespace* instead of
     *character spacing* (kerning) to fill lines. Much more readable.

   - Flush is pretty much the old Blender "Flush" mode - and as such it
     uses character spacing to fill lines. Just as Justify, this only
     works with at least one textframe.

 - Underlining for text objects. Not a lot to explain. New button "U" in
   the editbuttons, and CTRL-U as hotkey toggle underlining for newly
   entered characters or for the selection, just like CTRL-B/CTRL-I do for

   Underline height (thickness) and Underline position (vertical) can be
   set in the editbuttons.

   Implemented as CU_POLY polygon curves.

 - The B, U and i buttons (and the corresponding CTRL-B/U/I keystrokes)
   have been fixed to only affect *one* attribute at a time. Formerly,
   hitting CTRL-B when no other style was active, on a text portion with
   italics text, for example, would kill the italics and just apply bold.

   Now, these attributes always add or substract only, but do not
   replace the style.

 - In the past, there were bugs with material indices uninitialized, and
   thus crashes in the renderer with illegal material indices.

   Even though I assume they have been fixed, I've put in a check that
   checks (hah) if the material index of a character is illegal (bigger
   than ob->totcol), and then sets it to zero, and spits out a warning
   on stderr.

   If you see such warnings, please report and link to the .blend.

 - Bugfix: All alignment modes only worked if there were at least *two*
   lines of text in the text object. Fixed

There's now a regression test file for text objects, please add to the
corresponding repository:

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

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

16 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

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

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

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

16 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

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

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

16 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

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

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

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

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

16 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! :)

16 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)

16 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!

16 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

16 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

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

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

16 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!

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

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

16 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

16 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

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

16 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

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

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

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

16 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

16 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:

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

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

16 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?)

16 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

16 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

16 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)

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

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

16 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

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

16 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

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

16 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)

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

16 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

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

16 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!

16 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

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

16 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

16 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. :)

16 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

16 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!

16 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!

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

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

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

16 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!

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

16 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

16 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!

16 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

16 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 :)

16 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

16 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

16 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

16 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

16 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

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

16 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

16 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!

16 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

16 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

16 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

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

16 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)

16 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 :)

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

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