Commit Graph

798 Commits

Author SHA1 Message Date
Brecht Van Lommel
373f91c8b1 Bone Heat Weighting
===================

This is a new automatic vertex weighting method, next to the existing
envelope based method. The details are here:

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

This is based on section 4 of the paper:

"Automatic Rigging and Animation of 3D Characters"
Ilya Baran and Jovan Popovic, SIGGRAPH 2007

Implementation Notes:

- Generic code for making mesh laplacian matrices has been added, which
  is only used by bone heat weighting at the moment.
- Bone to vertex visibility checking is done with the raytracing code.
- Fixed an issue in the subsurf limit calculation function, where the
  position of vertices on boundary edges was wrong. It is still not the
  correct position, but at least it's in the neighbourhood now.
2007-07-28 14:04:02 +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
9116a62336 == Action Editor Bugfixes ==
Resolved Issues:
* My drawing cleanup commit the other day broke shapekey keyframe selection - was using wrong filter for Action Editor data
* Removed the old hack to limit vertical scrolling so that shapekeys were visible. It wasn't really needed anymore, and was causing problems with HomeKey.

Unresolved Issues:
* Vertical placement of sliders is slightly off
* In a test file I obtained, shapekey sliders don't work immediately after the file is loaded.
2007-07-06 09:59:18 +00:00
Joshua Leung
b6ccafc501 == Action/IPO Mute Icons ==
Added new defines for the icons used to show this, on the request of Matt Ebb. For now, the eye icons have simply been duplicated to the new spaces, but 'more descriptive' icons should be made.
2007-07-03 01:23:30 +00:00
Joshua Leung
d65816c49a == Action Editor ==
Some cleanups of the Action Editor drawing methods. These now make use of the filtering stuff I added for the backend cleanup.

Unfortuantely I still cannot get Blender's ui widgets to really work properly, so that toggle icons can have tooltips. There were some severe scaling issues.
2007-07-02 12:04:22 +00:00
Kent Mein
cdb07720ed Code cleanup's done by bedraw
This is patch #6886
https://projects.blender.org/tracker/index.php?func=detail&aid=6886&group_id=9&atid=127

removes some unused define's and some code that is no longer used and fixes some
formatting issues.

Kent
2007-06-28 15:57:54 +00:00
Roland Hess
a7a5e5c6cb Adds the following selection methods to the Sequence Editor:
Ctrl-RMB and Alt-RMB now call for different selection methods that are helpful when working within a single channel that holds several strips. The Ctrl modifier signals "Right" and the Alt modifier signals "Left".

Ctrl-RMB clicking a strip will select that strips left handle and the adjacent handle of any strip that abuts it on the left, allowing you to move the boundary between the strips without changing their outer endpoints. Ctrl-RMB clicking again on that strip will add to the selection all strips to the left of it, allowing you to slide the entire set of strips out of the way for a new one.

Alt-RMB works the same, but to the right.

Ctrl-Alt-RMB on a strip selects the surrounding handles only, allowing you to move the targeted strip and have the surrounding two strips adjust to follow.
2007-06-26 17:46:12 +00:00
Joshua Leung
a82b7171a2 == Action/IPO Editors - Code Cleanup ==
Added two macros which are used to test if the active Action/IPO editor is displaying data from a scaled NLA-strip.
2007-06-26 10:08:58 +00:00
Ton Roosendaal
9dd0c5abe5 Whoa, a new feature!
Sequence Editor: SHIFT+R, Remap Paths (also in pull down menu)

This allows to remap the root of a path to another directory.
Works on all selected Image strips. That way you can make absolute
paths relative, for example.

Example:
original path: /mnt/orange/finals/06_which_way/06_03b/
to be remapped: /mnt/orange/finals/
remap to: //
new path: //06_which_way/06_03b/
2007-06-25 13:01:46 +00:00
Nicholas Bishop
8cf2d5ca4a == Sculpt Mode ==
Added a new input control that smooths the brush stroke.

This option controlled by the menu item Sculpt>Input Control>Smooth Stroke. When enabled, the brush has a delayed effect on the model; a green line is drawn to indicate the smoothed path of the stroke. After ~200 pixels, the first half of the stroke will be applied to the model; the process then repeats, with a new segment of the stroke being applied to the model after every 200 pixels. On mouse up, any remaining portion of the stroke will be applied.

Other changes:
* Added a flags field to SculptData; currently only used for smooth stroke but other flags can be moved into it
* Moved the damaged_rects/verts into SculptSession
* Simplified brush application by moving init_editdata into do_symmetrical_brush_actions
* Removed Averaging from sculpt Input menu; smooth stroke should take its place

TODO:
* Fix display of the smooth line in Partial Redraw mode
* Make the smoothing and delay factors adjustable
* Optimize the stroke application (currently using the old 'dot' style of applying the brush)
2007-06-24 22:28:28 +00:00
Joshua Leung
1c41d19964 == Auto-Keyframing ==
I've moved the Auto-Keyframing functionality out of the special_aftertrans_update function into two separate functions, which can be called independent of the Transform system. One is for Bones, while the other is for Objects.

This now means that the Shift-S Snapping Tools will now work with auto-keyframing.
2007-06-23 06:56:16 +00:00
Joshua Leung
3caf086137 == Action Editor - Long Keyframes ==
I've recoded the way long keyframes work a bit, so that more cases are handled accurately. Now, it takes into account the number of IPO-curves that have keyframes in them on the start/end frame of the long-keyframe, instead of just taking the total number of IPO-curves present for the channel being drawn.
2007-06-19 09:46:52 +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
Juho Vepsalainen
a499da7192 Curve Selection Tool Refactor:
This commit refactors curve selection system to use certain curve selections
functions that encapsulate setting of selection flags. New function to select
adjacent control points was introduced too. Refactoring made it possible to 
simplify certain existing selection functions quite a bit. 
New functionality was delivered as well. Select more/less works now with NURBS 
as expected. Also two new curve selection functions were added: Select Every Nth 
and Select Random. 

See http://wiki.blender.org/index.php/BlenderDev/Curve_Selection_Tools for 
further information.
2007-06-14 14:36:27 +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
Brecht Van Lommel
d39d2e7279 Patch #6717:
Select Inverse function in the UV editor, by Juho Vepsalainen.
2007-06-10 14:06:34 +00:00
Jiri Hnidek
d1711b3972 Patch [#6729] from Juho Vepsäläinen. It adds inverse and random select for metaelems. I simplified random select a little. 2007-06-08 14:17:13 +00:00
Joshua Leung
25935dbdb1 == Action Editor - Major Recode ==
I've just spent two days rewriting the Action Editor to unify its code and bring it under control again (it was 107kb, now it is around 73 kb). 
* This means that there are no longer separate functions for each tool for Actions and Shapekeys in the Action Editor, and also no more missing tools for either. 
* Also, I've gotten rid of the need for those complicated, hierarchial loops used for action channels, as they were a pain to keep consistent with each other.
* Baking functions have been removed. See user-level-changes for more details.
* Reorganised and completely rewrote code in editaction.c, thus the lengthy diff.

User Level Changes:
* For the meantime, border-selecting Action Channels has been disabled
* Baking functions have been removed. As far as I have been able to find out, these were really non-functional anyway. Besides, I don't think they really belonged in editaction.c
* Editing Shapekey keyframes now yields the same feature set as for those in Action Channels.
* There shouldn't be any major bugs left, but I might have missed something.

Further Work:
* Do a cleanup like this to the Action Editor drawing code in drawaction.c
* Baking??? (harkyman seems to be doing something about this)
2007-06-05 12:11:00 +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
Joshua Leung
2d8dd194cc == Action Editor ==
Small Action Editor feature to hopefully make keyframing quicker. Just press the IKEY in the Action Editor. Feedback on the (annoyance factor of the) popups welcome.
2007-05-31 11:47:04 +00:00
Joshua Leung
024485b9b8 Patch #6759: this speeds up the vertex group editing workflow a bit.
The hotkey Ctrl-G in EditMode for Meshes and Lattices, brings up a menu giving the user options to assign/remove selected vertices to a new/the active Vertex Group.

The hotkey Ctrl-Shift-G in EditMode for Meshes and Lattices, brings up a menu giving the user options to change the active Vertex Group and delete the current Vertex Group.
2007-05-30 10:36:17 +00:00
Campbell Barton
26e60db6b5 option to limit the size of textures loaded into GL memory, usefull when a scene's models wont fit into GFX memory. 2007-05-22 14:20:18 +00:00
Brecht Van Lommel
53b434919b Added highlighting of non-existant names and autocomplete for
specifying the uv layer name in a material.

Also added generic autocomplete_begin/do_name/end functions,
this code was copied five times.
2007-05-17 17:15:22 +00:00
Brecht Van Lommel
15e79ef4c8 SSS fixes:
- Radius R, G, B sliders had too small number increase on clicking.
- Preview render now renders with higher SSS error setting to speed it up a
  bit.
- bug #6664: 3d preview render had artifacts. re->viewdx/dy wasn't set then,
  which is needed to estimate the area of each point. Have set this now, not
  in the nicest way, there is some bit duplicated code, but I don't want to
  refactor existing code with the chance of breaking it at this point.
- bug #6665: grid like artifacts with parts rendering. The two extra pixels
  around parts used for filtering were used as well, leading to double points.
2007-05-08 10:15:51 +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
Campbell Barton
99135b0674 dont use tface hide or select anymore, since maintaining 2 sets of hide/select data for each face is annoying.
using mface->flag for both.

Also found that the cdDM_drawMappedFaces and cdDM_drawFacesTex_common could get normals mixed up when rendering hidden faces. because hidden/invisible faces used continue without advancing to the next normal.
2007-04-29 13:39:46 +00:00
Joshua Leung
6bb16e0c86 == IPO Editor - Scaled Curves for NLA-Strip Curves ==
This commit resolves an issue dating back a few releases. When the IPO block being displayed in the IPO editor came from an Action being used as an Action Strip
in the NLA editor, the keyframes in the IPO editor were not displayed in 'NLA-time'.

There are however a number of things that still need work on so that they will play
nicely with these changes. Having said that, the IPO editor is still generally stable
for use (or should be). In case anything plays up, 'pin' the IPO view you're using
to turn off these changes.

This resolves Todo #4335.

Known Issues:
* When 'K' (show keys) mode is on, it doesn't work too too well yet. The display
 in such situations will be a bit confusing.
* Pressing IKEY in the IPO editor (for inserting a keyframe on the current frame)
 also doesn't work too well yet. It will insert a keyframe on the wrong frame.
* Transforms don't get any correction for scaling yet. This is only an issue when
 snapping transforms to the grid, or relying on the delta numbers printed in the
 header.
2007-04-28 09:35:16 +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
fabcaacc51 == Action Editor ==
In the Action Editor, sliders are now drawn beside IPO-Curve and Constraint Channels and for the active Action Channel when the 'Show Sliders' option in the View menu is turned on. This behaves like for shapekeys.

You can change the limits of the sliders by either Ctrl-Clicking or NKEY over the
name of the relevant IPO-Curve channel.


Also, documented the IPO-curve struct a bit. There are a few variables there that
I'm not sure what they are used for.
2007-04-25 11:57:02 +00:00
Campbell Barton
13b1fbd665 made blender take hidden objects into account in more situations.
Ctrl+RMB used to select a hidden object as well as "Select Grouped -> Parent"

Also made OOps and data browser check for hidden objects.

Added a countall to hide/unhide objects.
2007-04-25 02:20:55 +00:00
Campbell Barton
94ad8c810c Changed TESTBASE and TESTBASE_LIB to check the hidden flag
Checked every instance of testbase to see this dosnt break anything, also changed TESTBASE and TESTBASELIB, both were used incorrectly in places.

added error_libdata() for library error messages that are everywhere.
added object_data_is_libdata to test if the object and its data's are from a library.
fixed 2 crashs in adding Curve points to a library object (remember to check, verify_ipocurve returns NULL!)
made duplicating and making dupli's real for lib objects possible, disabled joining into lib armatures and meshes.
2007-04-22 22:08:19 +00:00
Geoffrey Bantle
f5a40315ca -> Keybindings for hiding objects
Small feature, added keybindings for setting the visibility restriction flags
that were previously only accesible via the outliner

HKEY 		Hides all selected
SHIFT-HKEY 	Hides all unselected
ALT-HKEY 	Shows all hidden
2007-04-19 19:47:51 +00:00
Campbell Barton
f9ff47464d remove warnings from last commit.
smooth view now works for change between cameras, smooth view now blends the lens angle too.
2007-04-18 22:53:20 +00:00
Campbell Barton
9c8bc4badc Starting blender with -w does not switch of maximize anymore, so with and without the -w arg, the window should start maximized. 2007-04-17 18:15:31 +00:00
Campbell Barton
b95f4ba2ad added a hook menu for object mode, more commands can be added here but currently there is only Reset Offset and Recenter at Cursor
This functionality was requested by malfico when dealing with many hooks.
2007-04-17 16:14:41 +00:00
Campbell Barton
0a0cf54a27 update to center view.
- Dont do anything if no verts or faces are selected (used to zoom into 0,0,0)
 - use the centers of dupli objects (should eventually use their bound boxes), much nicer when dealing with many dupli-objects
2007-04-14 13:18:24 +00:00
Joshua Leung
99e4e1fcb7 == Action Editor - Individual IPO-Curves Now Shown ==
Continuing on from my previous 'Expandable/Collapsable Action Channel' commit, this commit introduces the ability to show/hide the keyframes in each ipo-curve represented by an Action Channel.

When you expand an Action-Channel by clicking on the triangle beside its name, you will now be presented with options to show/hide the ipo-curves represented by
the Action-Channel, and/or the Constraint Channels belonging to that Action-Channel. Actual ipo-curves will not be drawn in the Action-Editor, but the keyframes
will be shown.

Screenshot:
* http://wiki.blender.org/index.php/Image:244_ActionEditor_SubTracks_01.png

Possibly Coming Soon/Further Work:
* 'Protection' options for ipo-curves (currently disabled in code, as all IPO-related
 tools will need to be made aware of this)
* Sliders for IPO-Curve Channels of the active Action-Channel
2007-04-13 11:15:08 +00:00
Campbell Barton
a64339d319 Use smoothview For * (align to object) and editmode align to selected. 2007-04-09 12:22:22 +00:00
Campbell Barton
525e7ac8d0 smooth view transformations, set the smoothview value to about 250 and the view animates when you switch between side, top etc. 2007-04-09 11:15:23 +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
Matt Ebb
bbceedced0 * Tablet support fixup
This commit should hopefully fix some of the problems some people were
having with tablet support in sculpt mode, and also the problems I made
visible with my previous commit related to number field dragging.

Now, all the ghost related stuff is tucked away in ghostwinlay.c and a
simple Blender API, similar to the existing get_mbut() for example, is
provided to access the tablet data. As with the other mouse related data in
Blender, the tablet data is cached upon each mouse move or click, in the
Window struct.

You can now just use:

float get_pressure(void);
void get_tilt(float *xtilt, float *ytilt);
short get_activedevice(void);

to get such data from the tablet. Documentation on the returned data
is in ghostwinlay.c in the _Window struct definition.


Brecht and Nicholas, I've updated the painting and sculpt code and it works
just fine here, you may want to give it a check though to make sure I
haven't done anything silly.
2007-04-05 12:42:07 +00:00
Campbell Barton
afdd54fa37 moved source and text to american spelling
* colour -> color
* centre -> center
* normalise -> normalize
* modelling -> modeling
2007-04-04 13:18:41 +00:00
Campbell Barton
273ca449d3 added options to add mesh (cap ends, radius and depth) 2007-03-28 15:25:07 +00:00
Campbell Barton
c820e79e77 made the add mesh functions use do_clever_numbuts so multiple options can be in the one popup 2007-03-28 04:18:58 +00:00
Robert Holcomb
c1e9018118 All UI code reverted to drawnode.c 2007-03-25 23:54:39 +00:00
Robert Holcomb
808a5fc05a Scons build system. MSVC 7.1 in a moment. 2007-03-24 18:41:54 +00:00
Martin Poirier
d193ce012a Followup to Bugfix #6435 by Ton.
Added sensible way in calculateTransformCenter to report an error (including empty selection).
2007-03-24 13:38:50 +00:00
Brecht Van Lommel
5219812f55 Added "Pack Charts" function in the UV editor, using Campbell's new box
packing code.
2007-03-22 20:32:20 +00:00
Joshua Leung
3cb25c774c == Action Editor - Collapsable Action Channels ==
Action Channels can now be collapsed/expanded to show/hide Constraint Channels, lessening clutter. In future, this could (will probably be) expanded to
show the show/hide individual transform channels.

User Notes:
* Expansion is off by default
* NKEY popup now features option to turn expansion on/off
* Changed behaviour of protection a bit - now if an action channel has protection
 on, constraint channels under it are also automagically protected

Developer Notes:
* I've gone through doing a lot of whitespace/linebreak tweaking to get the code looking more consistent with itself
* To save typing (and to make it easier to make future revisions), a set of macros
 is now used to check for some commonly-checked settings (i.e. selection, visibility,
 and protection).
2007-03-20 11:04:47 +00:00
Joshua Leung
8b4b8d4dd2 == Preview Range ==
Preview Range is a useful tool for animating (espcially on longer timelines). It allows you to only run through a limited set of frames to quickly preview the timing of a section of movement without going through the whole timeline. It means you don't have to set/reset start/end frame for rendering everytime you wish to only preview a region of frames.

Hi Ton,

Attached is a patch (I know you've already got lots of them in the tracker ;-) ) for a feature that I've sometimes wanted. It seems that this sort of thing is supported in other packages, but I can't be sure.

Note: I may have left in a few bits and pieces I didn't mean to in the patch (this is off a source tree which had quite a few revisions in it, all of which was experimental)



== Preview Range ==
Preview range is useful for animating (espcially on longer timelines). It allows you to only run through a limited set of frames to quickly preview the timing of a section of movement without going through the whole timeline. It means you don't have to set/reset start/end frame for rendering everytime you wish to only preview a region of frames.

* 'Ctrl P' in Action/NLA/Timeline sets preview range. Click+drag to form selection-box defining region of frames to preview
* 'Alt P' in Action/NLA/Timeline to clear preview range
* 'Pre' button beside Start/End fields in timeline toggles whether start/end fields refer to scene or preview
* 'Ctrl Rightarrow' and 'Ctrl Leftarrow' jump to start/end of preview region when it is set
* 'S' and 'E' set the start/end frames of preview region when it is set (just like normally) in Timeline only
* In Action/NLA editors, frames out of preview region are now drawn darkened when preview-region is set


See the following page for more info later:
http://wiki.blender.org/index.php/User:Aligorith/Preview_Range
2007-03-19 07:32:36 +00:00