Commit Graph

271 Commits

Author SHA1 Message Date
Joshua Leung
14b951747f Grease Pencil - Storyboarding Features (merge from GPencil_EditStrokes branch)
This merge-commit brings in a number of new features and workflow/UI improvements for
working with Grease Pencil. While these were originally targetted at improving
the workflow for creating 3D storyboards in Blender using the Grease Pencil,
many of these changes should also prove useful in other workflows too.

The main highlights here are:
1) It is now possible to edit Grease Pencil strokes
   - Use D Tab, or toggle the "Enable Editing" toggles in the Toolbar/Properties regions
     to enter "Stroke Edit Mode". In this mode, many common editing tools will
     operate on Grease Pencil stroke points instead.
   - Tools implemented include Select, Select All/Border/Circle/Linked/More/Less,
     Grab, Rotate, Scale, Bend, Shear, To Sphere, Mirror, Duplicate, Delete.
   - Proportional Editing works when using the transform tools

2) Grease Pencil stroke settings can now be animated
   NOTE: Currently drivers don't work, but if time allows, this may still be
         added before the release.

3) Strokes can be drawn with "filled" interiors, using a separate set of
   colour/opacity settings to the ones used for the lines themselves.

   This makes use of OpenGL filled polys, which has the limitation of only
   being able to fill convex shapes. Some artifacts may be visible on concave
   shapes (e.g. pacman's mouth will be overdrawn)

4) "Volumetric Strokes" - An alternative drawing technique for stroke drawing
   has been added which draws strokes as a series of screen-aligned discs.

   While this was originally a partial experimental technique at getting better
   quality 3D lines, the effects possible using this technique were interesting
   enough to warrant making this a dedicated feature. Best results when partial
   opacity and large stroke widths are used.

5) Improved Onion Skinning Support
   - Different colours can be selected for the before/after ghosts. To do so,
     enable the "colour wheel" toggle beside the Onion Skinning toggle, and set
     the colours accordingly.
   - Different numbers of ghosts can be shown before/after the current frame

6) Grease Pencil datablocks are now attached to the scene by default instead of
   the active object.
   - For a long time, the object-attachment has proved to be quite problematic
     for users to keep track of. Now that this is done at scene level, it is
     easier for most users to use.
   - An exception for old files (and for any addons which may benefit from object
     attachment instead), is that if the active object has a Grease Pencil datablock,
     that will be used instead.
   - It is not currently possible to choose object-attachment from the UI, but
     it is simple to do this from the console instead, by doing:
     context.active_object.grease_pencil = bpy.data.grease_pencil["blah"]

7) Various UI Cleanups
   - The layers UI has been cleaned up to use a list instead of the nested-panels
     design. Apart from saving space, this is also much nicer to look at now.

   - The UI code is now all defined in Python. To support this, it has been necessary
     to add some new context properties to make it easier to access these settings.
     e.g. "gpencil_data" for the datablock
          "active_gpencil_layer" and "active_gpencil_frame" for active data,
          "editable_gpencil_strokes" for the strokes that can be edited

   - The "stroke placement/alignment" settings (previously "Drawing Settings" at the
     bottom of the Grease Pencil panel in the Properties Region) is now located in
     the toolbar. These were more toolsettings than properties for how GPencil got drawn.

   - "Use Sketching Sessions" has been renamed "Continuous Drawing", as per a
     suggestion for an earlier discussion on developer.blender.org

   - By default, the painting operator will wait for a mouse button to be pressed
     before it starts creating the stroke. This is to make it easier to include
     this operator in various toolbars/menus/etc.   To get it immediately starting
     (as when you hold down DKEy to draw), set "wait_for_input" to False.

   - GPencil Layers can be rearranged in the "Grease Pencil" mode of the Action Editor

   - Toolbar panels have been added to all the other editors which support these.

8) Pie menus for quick-access to tools
   A set of experimental pie menus has been included for quick access to many
   tools and settings. It is not necessary to use these to get things done,
   but they have been designed to help make certain common tasks easier.

   - Ctrl-D = The main pie menu. Reveals tools in a context sensitive and
              spatially stable manner.
   - D Q    = "Quick Settings" pie. This allows quick access to the active
              layer's settings. Notably, colours, thickness, and turning
              onion skinning on/off.
2014-12-01 01:52:06 +13:00
Antony Riakiotakis
0085c3c5e5 Typo fix (not related to previous drumroll) 2014-11-24 14:48:20 +01:00
Jonathan Williamson
64ac46126b Add Make Edge/Face to mesh Edit Mode toolbar.
The Mesh Tools have quite few crucial tools that're missing from the toolbar. This is the main one.

The tools that're here should also be reorganized a bit to introduce actual orgnization, as it's quite sporadic at the moment. Will do that later.
2014-11-14 15:48:18 -06:00
Antony Riakiotakis
a6a3989617 Texture Paint Add Simple UVs:
Add simple uvs now does a cube unwrap and pack operation. Result is not
optimal by far but it should not result in crashes and it will be quite
usable for simple cases.
2014-10-31 14:37:55 +01:00
Antony Riakiotakis
3b7794dab7 Fix T42330 game engine does not allow texture slots generation. 2014-10-23 13:39:45 +02:00
Antony Riakiotakis
4f8b513c1a Fix T42168 mask texture UI missing. Own sillyness after last data fix
commit.

If we include the data cleanup commit to an alpha version for 2.72a this
should be included as well
2014-10-10 12:33:02 +02:00
Antony Riakiotakis
c03951da14 Texture painting:
Do not generate materials/images/UVs if they are missing.

Now we spawn a panel ("Missing Data") with operators to generate the missing data and
pop a warning if user tries to paint without them.

The reason we have reverted this is that it is too easy to end up with more textures
than we wanted. It was impossible to enter texture paint without having textures added,
and code makes too many assumptions about what user may want.

Discussed during Sunday's meeting.

This might be a candidate for 2.72a but I'm not sure how other artists will take this
(and how refined and crash-free it is), better make a few iterations first.

And for interested parties...test please, don't wait until after a release to poke with such issues.

Also, add slot operator now adds a new unconnected image node in cycles. Only
used in the "Missing Data" panel. This should be a separate commit but I am squashing it into the same commit because
it relies too much on changes done here and can be reverted easily if complainstorm occurs again.
2014-10-06 20:10:12 +02:00
Antony Riakiotakis
72f557d34e Sculpting:
Grab and Snake hook brushes now support strength. To keep compatibility
with older brushes, this commit also sets strength to 1.0 for those
brushes.
2014-10-03 13:14:10 +02:00
Antony Riakiotakis
1294fc7d93 Another minor correction, use "Mask" instead of "Stencil" so users can
correlate the panel to the mask tool.
2014-09-21 01:00:38 +02:00
Antony Riakiotakis
3d93eb47f3 Minor polishing, add UV layer selection in image projection painting
mode.
2014-09-21 00:29:50 +02:00
Campbell Barton
0e0e528ea4 Cleanup: pep8 2014-09-17 18:36:17 +10:00
Antony Riakiotakis
cf3ce7322a Texture painting:
Include explicit control for texturing:

This commit introduces a painting mode option, available in
the slots panel. The default value "Material"  will create slots from the
blender material, same as just merged from the paint branch.

The new option "Image", will use an explicit image field that artists can use
to select the image to paint on. This will should allow painting regardless
of the renderer used or for use in modifiers.
2014-08-28 20:41:05 +02:00
Antony Riakiotakis
512b738352 Texture paint system:
* Add ability to choose blend type and enable/disable toggle for each
slot for blender internal.
2014-08-28 15:50:42 +02:00
Antony Riakiotakis
db844959d1 Add operator that deletes a texture paint layer for blender internal. 2014-08-26 19:00:25 +02:00
Bastien Montagne
f34685d8a1 Fix T39020: Undo/Redo/History buttons missing in "Edit mode"
Remotely based on patch by kevindietrich (Kévin Dietrich), but using
a single generic panel here, as suggested by UI team.

Note we add this panel in all modes (only one tweak in scuplt mode,
where there is no history menu generated it seems, unlike other
'paint-like' modes), we can decide to move it into its own tab later.

Differential Revision: https://developer.blender.org/D733
2014-08-26 16:45:40 +02:00
Antony Riakiotakis
20700ca43e Based on user input that we never listen to:
* Move "save all edited" operator to layer tab
* Duplicate operator in image menu in image editor.
2014-08-25 00:15:43 +02:00
Antony Riakiotakis
77b01f7393 Switch sampler icon to the right, it's easier for artists to access. 2014-08-14 16:27:19 +02:00
Antony Riakiotakis
2e50b4dc51 Minor changes:
* Changing UV map updates the UV editor.
* UV Layer -> UV Map
2014-07-25 15:27:17 +02:00
Antony Riakiotakis
d2cf9f0c4b Fix UI still allowing addition of slots in cycles if material did not
use nodes.
2014-07-24 15:28:02 +02:00
Antony Riakiotakis
36b6b69173 Fixes:
* Crash with image drag'n'drop
* Drag'n drop color to paint 2d canvas not working
* Change "Layers" to "Slots" to appease purists.
2014-07-24 15:18:49 +02:00
Antony Riakiotakis
6a933c858c Move stencil options to own panel under layer tab. 2014-07-24 12:41:39 +02:00
Antony Riakiotakis
cc40925c36 UI cleanup:
New layer in texture painting will now allow entering image parameters,
similar to new image.
2014-07-24 11:39:04 +02:00
Antony Riakiotakis
6e41b008e3 Allow renaming images from list in layers panel by double clicking.
Thanks to Sebastian Koenig for the report!
2014-07-24 11:05:37 +02:00
Antony Riakiotakis
af162658e1 Texture painting:
Add ability to select UV layer from the layer panel.
2014-07-23 20:06:41 +02:00
Antony Riakiotakis
c32a671b3a Fix T41141, can't paint texture in cycles.
The issue is actually that creating a new image in texture paint mode
will set it always as a stencil image. Internally, the code checks if
the painted image is the same as the stencil and if it is, no painting
is done.

Solution is to expose a boolena to the operator for setting the image as
a stencil (could be an enum in th future for more uses)

Stencil UI is a bit weird here, will definitely redesign.
2014-07-22 21:06:10 +02:00
Campbell Barton
200dd87de1 Cleanup: pep8 & redundant vars 2014-07-22 12:03:15 +10:00
Antony Riakiotakis
86059f03eb Make clone tool UI slightly less horrible.
Move clone tool options as well as layer selection to the brush panel.
That should make its use more apparent and, most importantly, easy.
2014-07-21 19:24:22 +02:00
Antony Riakiotakis
f745564e4e GSOC 2013 paint
Yep, at last it's here!

There are a few minor issues remaining but development can go on in
master after discussion at blender institute.

For full list of features see:

http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.72/Painting

Thanks to Sergey and Campbell for the extensive review and to the
countless artists that have given their input and reported issues during
development.
2014-07-21 12:02:05 +02:00
gaiaclary
a2936d1ffe Expose Weigth tools for edit mode
Most weight tools also work in edit mode.
This change exposes all applicable tools
within a separate weight tool panel
in the tools tab of the tool shelf

Reviewers: campbellbarton

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D592
2014-06-14 15:18:46 +02:00
Campbell Barton
9d0cf523b5 UI: correct __contains__ use, no need for substring check 2014-06-12 22:08:51 +10:00
Campbell Barton
e740afe1e6 View3d Toolbar: project-paint tools were in options, move into own panel 2014-06-03 12:23:37 +10:00
Bastien Montagne
9127b8f2a3 Fix T40246: Speaker Object is missing from Tabs > 'Create' tab in the Toolbar. 2014-05-18 09:55:47 +02:00
Jens Verwiebe
f3798fa45e Revert the testing sculpt openmp thread control and limit for OSX to physical threads as in 2.70a tag 2014-04-27 18:39:03 +02:00
Campbell Barton
a15be34389 Code cleanup: unused python vars & imports
Use frosted rather then pyflakes
2014-04-25 05:36:16 +10:00
Bastien Montagne
419f7750db Fix T39771: Armature Tools and Options Panel appears in other TABs. 2014-04-17 14:51:39 +02:00
Bastien Montagne
7d45ddae33 Add Edge sharp/smooth to 3DView shading panel, as well as new Vert sharp/smooth. 2014-04-16 15:26:48 +02:00
Campbell Barton
f38331adef Code cleanup: style 2014-04-03 09:24:09 +11:00
Jens Verwiebe
16537a8f89 Sculpt: the thread controls where unintentianlly greyed out along with capabilities.has_gravity condition 2014-04-01 22:52:10 +02:00
Campbell Barton
d25ba1eccd Changes to openmp threads commit (UI and RNA)
- use same names as render threads
- remove OpenMP from UI
- remove details from tips
2014-04-01 08:30:24 +11:00
Antony Riakiotakis
262fd0865a Revert using slider for detail size on previous commit, makes changing
detail slightly harder.
2014-03-31 20:01:28 +03:00
Antony Riakiotakis
fa3d9f4fbd Make dyntopo detail size maximum smaller (more than 40 pixels should not
be needed according to mapping in code) and change the property to
float.
2014-03-31 19:30:51 +03:00
Jens Verwiebe
277fb1a31f Sculpt/dyntopo: Make the omp threads configurable to overcome performance issues
- autodetect optimal default, which typically avoids HT threads
- can store setting in .blend per scene
- this does not touch general omp max threads, due i found other areas where the calculations are fitting for huge corecount
- Intel notes, some of the older generation processors with HyperThreading would not provide significant performance boost for FPU intensive applications. On those systems you might want to set OMP_NUM_THREADS = total number of cores (not total number of hardware theads).
2014-03-31 13:51:49 +02:00
Campbell Barton
2fc7d04804 Add Simple randomize vertex tool
D432 from Walid Shouman with normal & uniform options added.
2014-03-31 14:56:43 +11:00
Antony Riakiotakis
0adc1ba209 Attempt to fix T39412
do not use different stroke property names for different paint systems.
This was done due to different stroke sets being supported for each
system, but this lead to trouble if we changed the names (due to
different stroke sets being supported) and users created custom keymaps
with the old property name saved.

The first part of this fix addresses master. A similar commit will be
done to soc-2013-paint.
2014-03-27 00:04:59 +02:00
Antony Riakiotakis
1c22ba1e0e UI naming:
Change topology panel labels to "dyntopo"
2014-03-24 23:17:29 +02:00
Antony Riakiotakis
97e26494ee Slight cosmetic improvement on UI. Add eyedropper icon to detail sample
operator and move it next to the detail slider
2014-03-23 00:01:46 +02:00
Antony Riakiotakis
e732c5809c Detail sampling operator
Located on topology panel.

To use just click on button and click on mesh.
Operator will just use the dimensions of the triangles below to set the
constant detail setting.

Also changed pair of scale/detail size with nice separate float
percentage value.
2014-03-22 23:35:41 +02:00
Antony Riakiotakis
0ef416722e Flood fill for dyntopo constant detail mode.
Nothing spectacular here, fill tools are easy. Just take the dyntopo
code and repeat until nothing more to do.

The tool can be located in the dyntopo panel when the dyntopo constant
detail is on.

Also added scale factor for constant detail. This may change when detail
sampling gets in, I am not very happy with having two numbers here,
still it will give some more control for now.
2014-03-22 17:47:18 +02:00
Campbell Barton
cc2cdfb08a Code cleanup: de-triplicate add menu/toolbars, also style edits 2014-03-20 01:34:24 +11:00
Antony Riakiotakis
03afa6f9e7 Experimental dyntopo feature:
Dyntopo detail in object space. This allows to set the detail in
percentage of blender units and sculpt in this detail constantly,
regardless of the distance to the mesh.

This commit just enables the functionality, which is really trivial.
There will be some more commits like detail flood fill and
detail sampling in the future.
2014-03-06 20:15:44 +02:00