Commit Graph

182 Commits

Author SHA1 Message Date
1f77f7b05a Brush/Paint internal changes
- remove brush array for each Paint struct, just use a single brush pointer.
- removed rna function based template filtering.
- filter brushes using a flag on the brush and the pointer poll function.
- set the brushes using a new operator WM_OT_context_set_id().

TODO
- remake startup.blend, currently brush groupings are lost.
- rewrite WM_OT_context_set_id() to use rna introspection.
2010-08-04 12:18:07 +00:00
fdae90fb1f Revert [#23093] Curve -> CurveMapping in brush. Don't use camel case for
UI text, and this makes it inconsistent with the property name too, Curve
is just fine...
2010-07-30 09:32:21 +00:00
648f40f409 bugfix [#22660] Text Boxes properties are not animateable.
suggestion [#23093] Curve -> CurveMapping in brush...
2010-07-30 06:48:18 +00:00
63791e03d6 * Partially revert r30763, where PROP_IMAGEPATH was added.
* Brush icon property back to not using image browser until a better solution is decided on.
2010-07-26 23:40:46 +00:00
8fb499c34f * Added a new RNA subtype, PROP_IMAGEPATH. It's the same as PROP_FILEPATH, but for images only.
* Changed UI code to display image browser for PROP_IMAGEPATH
* Set the icon_filepath RNA property for brushes to use PROP_IMAGEPATH
* Changed preview icon drawing to ignore unset icons
* Fixed const warnings in brush RNA
2010-07-26 18:37:47 +00:00
9941b7d52d * was suggested I combine all the direction modes into a single enumeration by using RNA_def_property_enum_funcs 2010-07-26 05:25:09 +00:00
ec19c7dffc == Sculpt ==
Fixed brush icons loading slowly

* Changed brush icon property from an enum to a flag that toggles whether a custom file is used for the brush icon
* Changed get_brush_icon to only handle loading external icons, built-ins are handled through the regular icon system
* Modified preview icon drawing to allow built-in icons
* When not using a custom icon, a default icon is selected based on the current tool

TODO:
* Allowing preview to show built-in icons makes the brush texture selector look ugly when nothing is selected. As discussed on IRC though, the nothing-selected state needs to be clarified anyway; I'll address this in another commit
* Use image browser when selecting a custom icon
* Selecting the default icon is ugly (uses the active object's mode), this can be fixed by making brushes know which paint mode they are part of
2010-07-26 04:00:09 +00:00
5b1231849c * Factored out some duplicated code from rna_brush into paint.c, added a new function that checks whether a brush is used by that paint struct
* Fixed an improperly initialized variable in BKE_previewing_free_id
* Added an RNA access function to get the icon associated with a value
2010-07-26 02:35:43 +00:00
cc061d075f == Sculpt ==
More icon work

* Added icon defines for all the brushes
* Load all the brush icons after loading regular Blender icons
* Added the brush icons to their respective tool enums in RNA
* Fixed a couple unused-variable warnings
2010-07-25 22:23:40 +00:00
ba30ac1230 == Sculpt ==
Minor sculpt cleanups

* Moved the (previously extern) declarations of the brush icon data to ED_datafiles.h
* Set sculpt tool RNA to alphabetical order, quite a long list now
2010-07-25 22:05:52 +00:00
2a02632882 * removing the notifiers I added until I can discover the most lightweight way to achieve the same thing 2010-07-22 20:18:42 +00:00
3b5b761a56 == Sculpt/Paint Fixes ==
* Fix: unify strength and size did work consistently with other paint modes
* Fix: If [ and ] keys were used to resize a brush it was not possible to increase the size of the brush if it went under 10 pixels
* Fix: Made interpretation of brush size consistent across all modes, Texture/Image paint interpreted brush size as the diameter while all the other modes interpret it as radius
* Fix: The default spacing for vertex paint brushes was 3%, should be 10%
* Fix: due to fixes to unified strength, re-enabled 'Unify Size' by default
* Fix: Unified size and strength were stored in UserPrefs, moved this to ToolSettings
* Fix: The setting of pressure sensitivity was not unified when strength or size were unified.  Now the appropriate pressure sensitivity setting is also unified across all brushes when corresponding unification option is selected
* Fix: When using [ and ] to resize the brush it didn't immediately redraw
* Fix: fkey resizing/"re-strength-ing" was not working consistently accross all paint modes due to only sculpt mode having full support for unified size and strength, now it works properly.
* Fix: other paint modes did expose the ability to have a  custom brush colors, so I added the small bit of code to allow it.  Note: I made all of the other paint mode brushes white.  Note2: Actually, probably want to make the paint modes use the selected color for painting instead of a constant brush color.
* I had removed OPTYPE_REGISTER from some Sculpt/Paint operators but in this commit I add them back.  I'm not completely sure what this option does so I don't want to disturb it for now.
2010-07-22 18:56:46 +00:00
015ecdee29 * Polish preset did not enable tablet pressure for strength
* Turned off 'Front-Face Only' for all brushes, it needs more testing
* Added brush icons for other paint modes
* Moved 'tool' panel to bottom of all paint modes
* Moved 'appearance' panel to be next to bottom
* Moved brush selector panel to top of all modes
* Closed all panels except the brush selector panel
* Turned off X symmetry
2010-07-21 00:57:25 +00:00
e8d45a8c40 * typo fix 2010-07-20 13:43:09 +00:00
886ce5a351 * can use file for brush icon
* fixed memory leaks
* moved some of the brush icon code around
* the update of the icon after a change is more responsive
2010-07-20 13:42:27 +00:00
b618a335f5 * Made the default sculpt icons an internal part of the executable
* Default icons can be selected from a menu
* Option to make a custom icon from a file is present but the UI is disabled because of a mysterious crash
* New startup.blend that has the appropriate icons selected
2010-07-20 11:32:30 +00:00
80e6323646 * Images for brush icons are now reloaded when they are needed from an external file
* First, try to load the file from the given filename.  This is either absolute or relative to the current .blend
* If file is found using the given filename directly then look for the file in the datafiles/brushicons directory (local, user, or system).

* Note: This commit does not update the .blend to reference the default icons
* Note: This commit does not make sure that the build system copies the default icons to the 2.52/datafiles/brushicons directory
2010-07-20 02:18:10 +00:00
5505697ac5 Merge GSOC Sculpt Branch: 28499-30319
https://svn.blender.org/svnroot/bf-blender/branches/soc-2010-jwilkins
See log of that branch for details.
2010-07-14 14:11:03 +00:00
26736ac0f0 remove unused rna includes 2010-03-24 09:51:32 +00:00
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
391526c20e option to lock alpha while projection painting.
(commit 27538 by Campbell from render25 branch)
2010-03-16 18:05:53 +00:00
cb85779da9 Change airbrush rate min/max to allow lower values and add separate
soft/hard limits for even lower/higher ones.
2010-03-08 14:31:27 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
78faeb73b8 Operation Dot-Kill finished 2010-02-11 01:11:52 +00:00
148435b70a batch remove .'s used with RNA_def_struct_ui_text 2010-02-10 21:15:44 +00:00
c8b69b07c4 Fix #20926: 2d image paint was missing clone image, clone alpha, and wrap
option in the UI, also fixes missing refresh when changing these and wrong
order in keymap for clone grabbing operator.
2010-02-02 17:41:32 +00:00
4efed23517 Use #include "BLI_math.h" instead of _USE_MATH_DEFINES to get M_PI defined. 2010-01-26 11:25:39 +00:00
ab5a985cfe * Added #define _USE_MATH_DEFINES
in some files to get Blender to compile again on msvc. Without that, it didn't found M_PI.
2010-01-25 13:19:52 +00:00
0c5998e799 Radians -> Degrees (in UI)
Rotations are now stored internally as radians, while exposing degrees in the UI - 
in the graph editor and UI controls. This is done in two areas:
1) Using the unit system to convert RNA data to display as degrees in the UI controls
2) FCurves now use degrees for rotation, so you can edit in the graph editor what 
you see in the UI.

All rotation data is consistently accessible in DNA and RNA as radians, degrees are only 
used for the UI controls and graph editor.

This commit includes conversions will convert old files (stored data and also fcurve data) 
to the new units, hopefully everything should go smoothly!

Part of this also changes a few properties that were hard-coded as degrees before (such 
as IK pole angle and brush texture rotation) to also use the same consistent system of 
radians (dna/rna) and degrees (ui).

Thanks to Joshua for hints and review here too.
2010-01-25 06:24:05 +00:00
8038171919 bugfix [#20771] Blender crashes after using pop-up color selection dialog in Texture Paint 2010-01-22 16:47:52 +00:00
02ca0fda8e Moved the image paint tool and the vertex/weight paint tool (blend mode?)
to the Brush data. This now works the same way as sculpt, with named 
preset brushes that retain settings.
2010-01-20 08:30:40 +00:00
251ef0a47f Changes to Brush texture workflow
This changes how textures are accessed from Brushes, with the intention of simplifying 
the workflow, and reducing the amount of clicking. Rather than the previous texture slots 
(which didn't work as a stack anyway), brushes now have a single texture linked. Rather 
than taking time having to set up your slots in advance, you can now select and change 
textures directly as you sculpt/paint on the fly. For complex brushes, node textures can 
be used, or for fast access, it's easy to make a duplicate of your brush with the texture 
you like and assign a hotkey.

Brush textures can now be chosen from a new Textures panel in the brush tool 
properties - click on the thumbnail to open a texture selector. This is done using a new 
variation on the ID template - the number of rows and columns to display in the popup 
can be customised in the UI scripts.
2010-01-03 08:37:18 +00:00
6639ba6b86 Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r25180:25245
2009-12-09 15:24:55 +00:00
07904712e8 RNA:
* Property update functions no longer get context, instead they get only
  Main and Scene. The RNA api was intended to be as context-less as
  possible, since it doesn't really matter who is changing the property,
  everything that uses the property should be updated.
* There's still one exception case that use it now, screen operations
  still depend on context too much. It also revealed a few places using
  context where they shouldn't.
* Ideally Scene shouldn't be passed, but much of Blender still depends on
  it, should be dropped when we try to support multiple scene editing.

Change was planned for a while, but need this now to be able to call
update without a context pointer.
2009-12-08 17:23:48 +00:00
82ddfbf99f Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24889:25180
2009-12-07 19:22:48 +00:00
b89138564e Changes to Color Management
After testing and feedback, I've decided to slightly modify the way color 
management works internally. While the previous method worked well for 
rendering, was a smaller transition and had some advantages over this
new method, it was a bit more ambiguous, and was making things difficult 
for other areas such as compositing.

This implementation now considers all color data (with only a couple of 
exceptions such as brush colors) to be stored in linear RGB color space, 
rather than sRGB as previously. This brings it in line with Nuke, which also 
operates this way, quite successfully. Color swatches, pickers, color ramp 
display are now gamma corrected to display gamma so you can see what 
you're doing, but the numbers themselves are considered linear. This 
makes understanding blending modes more clear (a 0.5 value on overlay 
will not change the result now) as well as making color swatches act more 
predictably in the compositor, however bringing over color values from 
applications like photoshop or gimp, that operate in a gamma space, 
will give identical results.

This commit will convert over existing files saved by earlier 2.5 versions to 
work generally the same, though there may be some slight differences with 
things like textures. Now that we're set on changing other areas of shading, 
this won't be too disruptive overall.

I've made a diagram explaining the pipeline here:
http://mke3.net/blender/devel/2.5/25_linear_workflow_pipeline.png

and some docs here:
http://www.blender.org/development/release-logs/blender-250/color-management/
2009-12-02 07:56:34 +00:00
1327833282 Sculpt: WIP brush behavior changes
* Draw/Inflate/Layer now keep working on the original mesh coordinates and
  normals from when the stroke started. This helps avoid the mesh blowing
  up, but can still be better. The old behavior is still available as
  "Accumulate" in the UI.
* This requires some more memory usage for the BVH, would like to find a
  way to avoid that.
* Smooth falloff is now the default.
* Spacing is now enabled by default, with a value of 7.5.
* Anchored now stores normals per node to save some memory.
2009-11-06 16:46:35 +00:00
f1a0df22df Bugfix: texture nodes header was still showing wrong texture
when using node materials.
2009-10-12 13:12:45 +00:00
022a343223 Texture stack influences are now all separate values, and negative
mapped values now have their influence negated instead. Also a few
RNA changes for TextureSlot.

Bumped subversion for the version patch.
2009-10-01 17:15:23 +00:00
15d07720e5 Sorry, three commits in one, became difficult to untangle..
Editors Modules

* render/ module added in editors, moved the preview render code there and
  also shading related operators.
* physics/ module made more consistent with other modules. renaming files,
  making a single physics_ops.c for operators and keymaps. Also move all
  particle related operators here now.
* space_buttons/ now should have only operators relevant to the buttons
  specificially.

Updates & Notifiers

* Material/Texture/World/Lamp can now be passed to DAG_id_flush_update,
  which will go back to a callback in editors. Eventually these should
  be in the depsgraph itself, but for now this gives a unified call for
  doing updates.
* GLSL materials are now refreshed on changes. There's still various
  cases missing, 
* Preview icons now hook into this system, solving various update cases
  that were missed before.
* Also fixes issue in my last commit, where some preview would not render,
  problem is avoided in the new system.

Icon Rendering

* On systems with support for non-power of two textures, an OpenGL texture
  is now used instead of glDrawPixels. This avoids problems with icons get
  clipped on region borders. On my Linux desktop, this gives an 1.1x speedup,
  and on my Mac laptop a 2.3x speedup overall in redrawing the full window,
  with the default setup. The glDrawPixels implementation on Mac seems to
  have a lot of overhread.
* Preview icons are now drawn using proper premul alpha, and never faded so
  you can see them clearly.
* Also tried to fix issue with texture node preview rendering, globals can't
  be used with threads reliably.
2009-09-29 19:12:12 +00:00
ab518939b5 - jitter for painting (image and projection painting, others can be added)
- remove falloff setting now the curve is used.
- bugfix for airbrush & tablet, with no movement it would assume 1.0 pressure.
- rna, use the use_* prefix for brush options.
2009-09-18 11:25:52 +00:00
feff78170d RNA
* PROP_NEVER_NULL is now a flag instead of a subtype.
* It works for function parameters too now, so setting
  this flag can help avoid NULL checks in the function.
* Renamed LocalLamp to PointLamp, making it consistent
  with the UI name.
* Set icons for the different lamp struct types.
2009-09-16 18:04:01 +00:00
ba5df38d66 use static functions where possible for some local functions. 2009-09-14 16:52:06 +00:00
be7eeb888a Sculpt UI
*Changed Sculpt Modes Flip Direction to an enum so that you can explicitly choose Add or Subtract.
*Expanded the sculpt tool list. I realize Nicolas has a longer term plan for the brush tools, but at least now it's useable again.
2009-09-13 19:37:51 +00:00
10c18d72f4 * Another handful of brilliant new icons by jendryzch 2009-09-07 09:43:04 +00:00
589ea76833 2.5/Paint:
* Updated texture paint UI for stroke settings.
* Removed duplicate brush blend types, just use the ones defined in imbuf instead
2009-08-21 06:23:38 +00:00
a5da26f59d 2.5/Sculpt:
* Added UI for brush stroke. Contains for now spacing and smooth stroke
* Removed Sculpt UI for airbrush -- doesn't do anything in sculpt mode
* Improved smooth stroke by using float instead of int precision, so smooth stroke is even smoother now
2009-08-18 01:19:00 +00:00
afa0fa5e29 2.5 Sculpt:
* Added a new Paint type in scene DNA. This is now the base struct for Sculpt.
* The Paint type contains a list of Brushes, you can add or remove these much like material and texture slots.
* Modified the UI for the new Paint type, now shows the list of brushes active for this mode
* Added a New Brush operator, shows in the UI as a list of brush tool types to add
* Made the sculpt tool property UI smaller and not expanded, expectation is that we will have a number of preset brushes that will cover the basic sculpt brush types

TODO:
* Vertex paint, weight paint, texture paint need to be converted to this system next
* Add brush presets to the default blend
2009-08-16 19:50:00 +00:00
972224b9e1 2.5/Sculpt:
* Moved the brush texture settings to MTex/TextureSlot. The mapping settings now show up in the texture panel, pretty much like they do for textures used with materials.

TODO:
* Tiled mode should not show Z size setting
* Add a locked mode so that texture size can be changed uniformly like in 2.4x
2009-08-13 20:05:36 +00:00
f6682ab773 RNA: subtypes and units
* Reviewed subtypes, making them more specific and adding new ones.
* Subtypes now have an associated type of units (length, area, volume,
  mass, rotation, time, velocity, acceleration). These are not used
  yet anywhere.
* Centralized code that decides the name of array items based on
  subtype (XYZ, RGB), was copied in 3 places.
* RNA_def_float etc functions still need to be update, will do this
  later together with another change.
2009-08-10 21:31:05 +00:00