Commit Graph

491 Commits

Author SHA1 Message Date
Joseph Eagar
3031f1f2bd =Draw Module Fixed=
This commit fixes the Draw module.  All buttons/widgets created via the Draw
module in a SpaceScript area are now inserted into a global list attached to
the SpaceScript data.  This list is cleared before each draw, when freeing
the space, and when the area is switched to another space.c

This is necessary to prevent Blender's internal UI code from getting invalid
pointers to python data.  In addition, it allows storing widget tooltips
inside the python Button objects, which solves that little bit of stupidity.

Note that this reverts the previous weaklist solution.  In fact, I had to go
over each previous commit by Campbell after this code originally branched
before the weaklist commit and re-add each commit.  So if anything is
missing, just tell me, or feel free to re-add it.
2007-07-27 06:14:25 +00:00
Joshua Leung
c8273f4f9e More constraints bugfixes:
* Action constraints on some older files (namely mancandy) should now get correctly loaded. Wrong check for subversion number was being used
* Removed unneeded version patches
2007-07-24 10:24:25 +00:00
Joshua Leung
939500392e == Constraints - Bugfixes ==
Here are some attempts at fixing bugs being encountered with the constraint system after the recode. I've just fixed a few typos (where relevant), and added some extra checks for things.
2007-07-23 11:28:43 +00:00
Joshua Leung
74ca178199 == Transformation Constraint ==
This commit adds a new constraint to Blender: the Transformation Constraint. This constraint gives you more freedom to choose how transforms are copied from one object/bone to another object/bone. 

You can assign the Loc/Rot/Scale channels of a source to the Loc/Rot/Scale channels of a destination, specifying the range of motion (per axis) from the source to consider, and the range of motion (per axis) that will be applied to the destination. Also, for each destination axis, you can choose which of the source axes to copy from. 

A similar constraint was coded by Jason Blary (snark), as Patch #4991. This constraint is basically rewritten from scratch, although there are some elements of the original patch which may be borrowed in future.

Various notes:
* PyAPI access has been coded. 
* Space conversion is also enabled for this constraint.
* Also the useless get_constraint_col function has been removed
* Doing a rotation copy with a ratio that is not 1:1 doesn't always work correctly yet (like for the Copy Rotation constraint).
2007-07-21 07:26:15 +00:00
Joshua Leung
1b0c72c3e5 Removed a variable that wasn't needed, but somehow ended up in the commit the other day. 2007-07-17 11:51:11 +00:00
Andrea Weikert
e64e6ae3a3 == MSVC compilation ==
two small fixes in this commit:
- added new file for nodes 
- fixed compile error in readfile.c, as reported by Jean-Michel Soler here:
  http://lists.blender.org/pipermail/bf-committers/2007-July/018849.html
2007-07-15 14:55:09 +00:00
Joshua Leung
af55d208f4 == Constraints System ==
After just over a week of coding, I've finished doing a major refactor/cleanup of the constraints code. In the process, quite a few old kludges and ugly hacks have been removed. Also, some new features which will greatly benefit riggers have been implemented.

=== What's New ===
* The long-awaited ``ChildOf Constraint'':
This allows you to animate parent influences, and choose which transformation channels the parent affects the child on (i.e. no translation/rotation/scaling). It should be noted that disabling some combinations may not totally work as expected. Also, the 'Set Inverse' and 'Clear Inverse' buttons at the bottom of this constraint's panel set/clear the inverse correction for the parent's effects. Use these to make the owner not stick/be glued to the parent.
* Constraint/Target Evaluation Spaces:
In some constraints, there are now 1-2 combo boxes at the bottom of their panel, which allows you to pick which `co-ordinate space' they are evaluated in. This is much more flexible than the old 'local' options for bones only were.
* Action Constraint - Loc/Rot/Size Inputs
The Action Constraint can finally use the target's location/rotation/scaling transforms as input, to control the owner of the constraint. This should work much more reliably than it used to. The target evaluation should now also be more accurate due to the new space conversion stuff.
* Transform - No longer in Crazy Space (TM)
Transforming objects/bones with constraints applied should no longer occur in Crazy Space. They are now correctly inverse-corrected. This also applies to old-style object tracking.

=== General Code Changes ===
* solve_constraints is now in constraints.c. I've removed the old `blend consecutive constraints of same type' junk, which made the code more complex than it needed to be.
* evaluate_constraint is now only passed the constraint, and two matrices. A few unused variables have been removed from here.
* A tempolary struct, bConstraintOb, is now passed to solve_constraints instead of relying on an ugly, static workobject in some cases. This works much better.
* Made the formatting of constraint code consistent
* There's a version patch for older files so that constraint settings are correctly converted to the new system. This is currently done for MajorVersion <= 244, and SubVersion < 3. I've bumped up the subversion to 3 for this purpose. However, with the imminent 2.45 release, this may need to be adjusted accordingly.
* LocEulSizeToMat4 and LocQuatSizeToMat4 now work in the order Size, Rot, Location. I've also added a few other math functions.
* Mat4BlendMat4 is now in arithb. I've modified it's method slightly, to use other arithb functions, instead of its crazy blending scheme. 
* Moved some of the RigidBodyJoint constraint's code out of blenkernel, and into src. It shouldn't be setting its target in its data initialisation function based + accessing scene stuff where it was doing so.

=== Future Work ===
* Geometry to act as targets for constraints. A space has been reserved for this already. 
* Tidy up UI buttons of constraints
2007-07-15 03:35:37 +00:00
Joshua Leung
d846d9db9f Bugfix: 'Random' crashes after duplicating bones
This commit should fix some seemingly random crashes broken and I have been experiencing while editing armatures.

A backtrace revealed that autosave was choking on the PoseChannels that didn't have a Bone assigned to them. This was caused by the bone duplication code making a new PoseChannel for a duplicated bone, but that new bone not getting assigned to the PoseChannel yet, as the user was still in EditMode.
2007-07-04 07:07:12 +00:00
Joshua Leung
129290fbe1 readfile.c - fixed a indentention on a few lines 2007-06-30 03:26:18 +00:00
Joshua Leung
ab8728df2a == Action Editor - Scrolling Fix ==
This fixes a problem introduced in http://lists.blender.org/pipermail/bf-blender-cvs/2007-May/010005.html

Now channels in older files will be in the view again upon loading.
2007-06-19 11:52:14 +00:00
Joshua Leung
01e8789f3f == PyConstraints ==
At last! The ability to code constraints in Python. This opens up many interesting rigging possibilities, as well as making prototyping constraints easier.

* A PyConstraint script must begin with the line 
#BPYCONSTRAINT
* It must also define a doConstraint function, which performs the core actions of the constraint.
* PyConstraints use IDProperties to store custom properties for each PyConstraint instance. The scripter can choose which of these ID-Properties to expose to a user to control the behaviour of the constraint. This must be done using the Draw.PupBlock method.

Credits to Joe Eager (joeedh) for coding the original patch on which this is based. I've made heavy revisions to large parts of the patch.

For more detailed information, and some demo scripts, see the following page:
http://aligorith.googlepages.com/pyconstraints2
2007-06-18 07:41:21 +00:00
Nicholas Bishop
3026e853b3 == Multires ==
* When loading multires files, clear the temporary connectivity data
2007-06-11 01:30:00 +00:00
Nicholas Bishop
2494a5ed0d == Multires ==
* Small optimization to multires based on profiling data; calculation of edge boudndaries is now cached along with multires mapping data to improve the performance of the catmull-clark code.

* Removed an unneeded call to create the temporary data when loading files.
2007-06-10 21:51:11 +00:00
Johnny Matthews
c6158b9293 Put declarations at the top of the block to save some compile problems. 2007-06-02 13:46:16 +00:00
Brecht Van Lommel
b726b64ead Fix error in the version patch for the SSS scene flag. 2007-06-01 16:53:55 +00:00
Nicholas Bishop
1a9f0e692a == Multires ==
* Moved the multires vertex data from struct MultiresLevel to struct Multires. There's no longer any reason to store data seperately for each level; it was just taking up extra memory.

* Incremented the subversion to 2 and adjusted do_versions to correctly load older files.

* Refactored the multires update process (which handles propagating changes to other levels)
2007-06-01 02:21:11 +00:00
Brecht Van Lommel
33466557fc Disable SSS better for preview rendering, so it does not slow down
other preview renders at all.

Also added a flag to enable/disable SSS per scene. There is no
button for it yet, the Render panel has no space left .. will find
a place for it later.

The subversion number was also increased to enable the flag for
older .blends.
2007-05-17 16:51:09 +00:00
Brecht Van Lommel
3a8c6c81d8 Subsurface scattering:
Documentation on the settings, known limitations and implementation
info can be found here:
http://www.blender.org/development/current-projects/changes-since-243/subsurface-scattering/
2007-05-03 21:37:52 +00:00
Campbell Barton
c24aa10561 Made it so blender has an active render layer for Uv and Vertex color mesh layers.
This means changing the active UV/VCol layers wont change what renders.
needed to adjust the minor version so old files will copy the active layer to the render-uv/vcol layer.

boxpack2d.py - redoen in C now, dont need python version.
2007-05-02 00:01:23 +00:00
Ben Batt
f62f07734f Patch #5629 - Mirror modifier axis' to be toggleable
This patch makes the X, Y and Z axes of the mirror modifier individually
toggleable, so it is possible to mirror in more than one direction with a
single modifier.

Thanks to Juho Vepsäläinen (bebraw) for the patch!

NOTE: BLENDER_SUBVERSION has been incremented to support translation from old
      to new axis specification.
2007-04-29 14:00:30 +00:00
Ton Roosendaal
243d1a28c0 Casting fixes for 64 bits. Incomplete commit, discussion on proper casting
has to be finished.
2007-04-29 10:49:02 +00:00
Ton Roosendaal
42057481fb Part 2 of 64 bits fixing; the files.
The good news; previously written 64 bits are still valid! All fixes
appeared to be possible in code, no versioning patches needed. :)
That also removes the I AM STUPID 64 bits ban from the code.

The bad news:
I couldn't get a 64 bits Blender running here (ghost-mac issues... it
has to be recoded using Quartz to be able to run 64 bits). So what I
have tested was:

32 bits binary:
  - Appending/linking data from 64 bits file.
  - Reading 64 bits chained library-linked files (file -> file -> etc)
  - Linking 32 bits files with 64 bits files

This has to be tested for 64 bits too. Will drop in IRC now to help.

Note: part 3 is fixing memory issues for addressing > 4 GB data. A first
start has been made for a blenlib API function.
2007-04-28 16:15:00 +00:00
Joshua Leung
01335fc7bb Bugfix:
Previous versions of Blender allowed Vertex Groups to be nameless, which
shouldn't be allowed. This caused problems with rigs from previous versions of Blender being loaded in 2.43+ versions, as the new VGroup feature for the
Armature modifier mis-identified these nameless group(s) as being the Vertex Group
to be used. As well as the checks done when renaming VGroups (from another commit), files created prior to and in 2.43 will have all such groups given default
names.

Code notes:
* I've moved the unique_vertexgroup_name function from src to blenkernel like for
 constraints
* Formatting in deform.c tidied up a bit
2007-04-27 11:16:35 +00:00
Joshua Leung
ff38a988ae Removed some un-needed code for Limit constraints from file-reading code. 2007-04-12 06:51:48 +00:00
Campbell Barton
76420c2fec appending libdata no longer breaks all external references.
Existing data is flagged with LIB_APPEND_TAG and all_local only has an option to only operate on un-flagged data.

If you append an object thats linked to a material alredy linked in your scene, the material will not be made local.
So at worst youll need to make local some of the datablocks.

This is fairly simple and though my tests show it to work, do some tests on your own libraries before assuming its problem free.


scripttemplate_mesh_edit wasnt updated with PyAPI changes and moved some functions into generic places.
2007-04-07 17:35:47 +00:00
Joshua Leung
655f9a61de == Clamp-To Constraint (was Patch #4818) ==
This (new) constraint limits the location of an object/bone to the range of locations
on a given curve. It works by comparing the location of the owner on one axis, to
the extents of the curve's bounding-box on the same axis, to find the location on
the curve.

Usage Notes:
* 'Ob:' field must point to a valid curve object
* This curve should have 'Path' turned on in order for this constraint to work. You
don't really need to do this as it will be taken care of by the code.
* 'Auto' toggle automically determines which axis should be used for the distance estimations/calculations. It is the default option, but may not work that well for
some cases.
* X/Y/Z toggles can be used to select the axis to use for these calculations. Try
to choose the axis along which the curve stretches out for most.

Python Notes:
Python API access for this constraint is not included in this commit. Will be coming
soon.
2007-04-07 03:32:57 +00:00
Nicholas Bishop
dca213525a == Multires ==
Fixed bug #6358, UV face select + Multires level change crashes

* Reading in multires files wasn't relinking the MTFace customdata stored for level 1. This was leaving tpage as a bad pointer.
2007-04-02 00:52:38 +00:00
Andrea Weikert
3c256eb9e4 ==== bugfix ====
small fix for uninitialized variable curlib
2007-04-01 19:00:10 +00:00
Joshua Leung
26fd086bca Removed some more debug prints (regarding camera angle/lens stuff) 2007-03-24 02:20:00 +00:00
Ton Roosendaal
bc31d61c3b patch 5341 by Juho
This adds option to show camera angle instead of camera lens value.
(Complete revised patch...)
2007-03-23 13:12:11 +00:00
Ken Hughes
3a834803ef Python API
----------
Support for new bpy.libraries module, which is being proposed to replace
the Blender.Library module.
2007-03-21 02:23:28 +00:00
Ken Hughes
001939bd66 Python API
----------
Bugfix #6255: Library.Load() failed on some blend files prior to 2.43.
Consolidated some code to make Python and Blender UI more in common.  Also
fixed some compiler warnings in the process.
2007-03-16 05:39:30 +00:00
Ken Hughes
115b65ce7c Fix numerous gcc warnings. 2007-03-16 05:03:38 +00:00
Ton Roosendaal
0bb0c54f4b Regression test fixes:
- New Softbody panel now is named "Soft Body Collision" (instead of II)
  Also made it start tabbed, and made Fluids panel start untabbed.

- Infowindow: skip drawing buttons when width is smaller than 320 pixels.
2007-02-14 11:00:05 +00:00
Brecht Van Lommel
cf00e675ed Addition to last bugfix:
Give the correct error message on saving instead of simply defaulting
to "not enough diskspace".
2007-02-11 00:13:07 +00:00
Brecht Van Lommel
89f4ca65f2 Fix for bug #5910:
Saving in sculpt mode with partial visibility would give "not enough
diskspace" errors. That wasn't the error at all though, but blender
gives this diskspace error message on any error (this is for another
commit to fix though).

The cause of the error was that with partial visibility it saved the
MEdge and MFace arrays as if they had the full length, which is not
the case, so it was reading past the end of the array. I added an
exception for these.

Also removed the oldstyle tface saving, this was only there to provide
temporary upward compatibility until release.
2007-02-10 23:47:31 +00:00
Ton Roosendaal
c45e057062 Plumiferos reported bug:
When weights in Meshes are extremely small (< 0.01) normalizing them
can give overflows, thanks to float precision limit.
This is still unsolved, but for now the limit had to be set smaller...
(reason is that Plumiferos uses mixed lattice and vertex-group deform)

Also: running Blender in debug (-d) will print subversion now.
2007-01-28 11:44:32 +00:00
Nicholas Bishop
d58cc7b9e6 == Multires ==
Partial fix for bug #5771, Multires tool deletes crease flags on edges

* Modified the edge flags code to support all of the edge flags (not just seams.)
* Added a new array to the Multires struct to store creases.
* For Mark Sharp, Clear Sharp, and Crease, displays an error if applied to a multires mesh not on level 1.
2007-01-22 08:34:53 +00:00
Brecht Van Lommel
ca56c87312 Addition to fix for bug #5709:
Needed to move the check one subversion further, because files with the
current subversion could already be saved with the wrong value.
2007-01-21 16:08:34 +00:00
Brecht Van Lommel
1ac4b1d5c3 Fix for bug #5709:
Join triangle threshold was initialized for wrong subversion.
2007-01-21 00:09:24 +00:00
Ton Roosendaal
53aabe99f8 Part 2 of bugfix #5741
Modifiers; on read file it sets user counter of linked ID data, except
for Object IDs.
2007-01-18 10:59:23 +00:00
Nicholas Bishop
9ff336d14d A few fixes for saving/loading partial mesh visibility (sculptmode): pay better attention to how many verts/edges/faces there really are (not just the visibile ones) 2007-01-16 06:49:57 +00:00
Brecht Van Lommel
b7ccb830d2 Fix for bug #5689:
Loss of UV coordinates reading from 2.42 .blend files, if there were
both vertex colors and tfaces (these contained colors also). It should
have been impossible to create them both in 2.42, but even if invalid
we should read them correct.
2007-01-14 12:35:45 +00:00
Ton Roosendaal
5fd071070b Bugfix #5698
Material Node Shader crash: new "layered UV" option required a better
version patch... now patches all 2.42.x files, and not only the 2.42.2 and
older :). Yes, subversioning doesn't always make things easier.
2007-01-13 10:52:39 +00:00
Joshua Leung
242db4a960 == Action/IPO Cleaning Cleanup ==
Further cleanups, this time moving all the checks for making sure that
the cleaning threshold is defined are centralised in the do_versions code.
2007-01-10 08:51:24 +00:00
Nicholas Bishop
043be07050 Large fix for multires. Changed UV coordinates (MTFaces) to be special first-level data in multires. The data is now stored in a standard CustomData struct in Multires, rather than being stored for each level. (The UVs can now only be edited on level 1.) Changes allow multiple sets of UVs to work correctly. This change should also decrease multires memory usage some (though only when UVs are being used, of course.)
Changes to CustomData:
Some functions would only return the current active layer, added extra variants that take an index to select the level (modeled after CustomData_get_layer_n.)

Still todo:
* UVs are being interpolated linearly, should probably offer Catmull-Clark subdivision like Subsurf modifier.
* Vertex Colors still don't support multiple customdata layers.
* Editing UV data on levels other than 1 should be disabled in the interface (same for weights)
2007-01-10 06:09:10 +00:00
Ton Roosendaal
2e66b143f3 - Added panel for Bake render (tabbed now in 'anim' panel).
(Empty space will get OSA options, that I add tomorrow or so)

- Removed a lot of old unused variables in renderdata. Also meant I had
  to remove this from python API... please check if this gives valid
  scripts?

- Cleaned up bad formatted code for FFMPG buttons (spaces instead of tabs)
2007-01-09 11:10:12 +00:00
Ton Roosendaal
dfeda474a5 New code to write 'sub version' string. It was using a (controlled) 1 byte
overflow in a safe area, but that's not very nice code...
2007-01-08 12:31:53 +00:00
Ton Roosendaal
1d4a9ee6ca Bugfix #5626
HSV node in composite got a new variable (V) in july, but this was not
initialized to '1' for older files.

This commit adds the initialize, for when the V==0. It might therefore
break cases saved with CVS versions with V set to 0 purposedly (not likely
but possible).
2007-01-07 14:18:03 +00:00
Brecht Van Lommel
36e03e5ca8 Potential fix for bug #5359:
Crash leaving editmode related to vertex groups. I couldn't reproduce this,
but suspect somehow multiple deformvert layers were created. Added some
extra checks to avoid that now.
2007-01-06 20:16:06 +00:00