Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Isolate Layers
|
|
Damping factors make the eraser too hard to use in general cases, so leaving as-is.
|
|
|
|
|
|
Pencil (instead of the object-mode one)
|
|
|
|
Knife had its own code for detecting holes which worked quite well,
but would prefer to use generic bmesh API call here.
|
|
|
|
Instead of immediately erasing points, the eraser now first reduces the thickness
of the stroke points before culling the ones that have become overly thin (and
cannot be rendered properly anyway as a result). It is also pressure sensitive now,
and has a linear falloff effect (i.e. points further away from the center of the
eraser circle get affected less). This should make it easier to use to eraser to
make fine adjustments to your sketches.
Notes:
* The eraser has been rewritten to use a new algorithm. Specifically, it now takes
advantage of the stroke point deletion methods developed for the Delete operator
instead of it's own buggy split-and-delete methods (which were only removing
a single point from each stroke each time).
* In tests so far, it seems to allow a wider range of control over what gets erased
and what doesn't. Pressing hard (or using a mouse) should still just erase everything
with relative ease still.
* The way that this behaves could still do with some tweaking. In particular, care
is needed when trying to use the eraser to "lighten up" tips of thin bunches of
strokes (e.g. eyebrows/moustaches), as it still tends to gobble these up too much.
We could probably do with some tool settings to control the eraser strength.
|
|
|
|
gp_stroke_delete_tagged_points() now adjusts timing data for stroke points
to ensure that all the timing info will be valid after creating the new
stroke segments (from splitting the original stroke).
Several other tools need to be modified to do this still (e.g. Copy and Duplicate)
|
|
strokes into a separate function
|
|
Display
|
|
|
|
Conflicts:
source/blender/editors/transform/transform_manipulator.c
|
|
|
|
For the intersect tool this made sense, but booleans can use cuts which overlap edges exactly.
|
|
Side was flipped
|
|
|
|
Binding code was re-building its own DM for the cage, now it uses given one instead.
I cannot see really any good reason not to use 'visual' modified cage for binding process,
using base mesh instead was breaking any 'advanced' binding as described in the report.
|
|
code.
C++ does not allow the assignment of a void pointer to a typed pointer without
explicit casting. Since we use a generic macro in bmesh for iterators we only
ever get a void* back and cannot cast it to the target type. However, casting
the target to a void* as well solves that issue.
This tweak is #ifdef'd to be used in C++ code only.
|
|
|
|
Needed for editmode use
|
|
|
|
This uses a bmesh-intersection, BLI_kdtree and watertight intersections to perform boolean operations.
For now keep both BMesh and Carve booleans usable at once for testing & bug reports,
however we plan to phase out Carve by next release.
|
|
|
|
Works much the same as intersect operator,
expose as a new operator since for users its quite different.
Access from face menu.
Internally, this adds boolean args to BM_mesh_intersect function.
|
|
This tooltip was missed when was copying over the RNA stuff from my
earlier Pose Sculpting work (that much of these tools were based on)
|
|
brush works
As in mesh sculptmode, there is now an Add/Subtract toggle to control whether the
brush applies the named effect or not (e.g. Thickness = Thicker/Thinner, or
Pinch = Pinch/Inflate)
|
|
edge-groups weren't being sorted with 2d-coords applied.
|
|
When toggling the per-layer onionskinning settings, the datablock-level
toggle (shown on the header) should also be updated. This only really
applies when there is/was a single layer with onionskinning.
|
|
The GPencil eraser now operates on all visible and editable layers, instead of
only operating on the active layer. There was really no reason why it needed to
only consider the active layer, as doing so only made it confusing for the user when
the strokes they were trying to erase wouldn't be affected. Besides, if you really
needed to restrict the eraser to working on a particular layer, you could just
lock all the others (which is now very easy with the new operators)
|
|
if something goes wrong (e.g. locked layers) in the meantime
|
|
the current context
For example, if a GP datablock was shared between two different types of editors
(e.g. 3D and Sequencer Preview), even the non-valid (and invisible) strokes would
get affected.
|
|
|
|
Support cutting many outlines into a single face (creating edges between isolated regions).
|
|
Removes edges/verts that become unused.
|
|
|
|
currently for bmesh
|
|
In practice this hardly ever happened.
|
|
Avoid double lookup on insertion ghash
|
|
|
|
|
|
This commit introduces a few operators to make it easier to perform a few common
layer-manipulation operations. Some of these have been sorely needed for quite
a while now...
* Lock/Unlock All - Just as their names suggest, these operators will lock and unlock
all layers in the GP datablock. This is a quick way to unlock all layers previously
locked. These can be found in the new dropdown which replaces the old "Duplicate"
below the +/- (for adding/removing layers); also featured in the dropdown are
the "Duplicate Layers" operator, as well as the show/hide ones.
* Isolate Layer - This operator makes it easy to focus on just a single layer (e.g. the
outlines for a particular character). The "star" button affects editability, while the
"eye" below it toggles editability + visibility.
If any layer is visible/unlocked, this operator will lock and/or hide all; otherwise,
it will unlock/unhide all (to reverse the previous operation).
|
|
Differential Revision: https://developer.blender.org/D1662
|
|
|
|
|