Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Use float in moto instead of double for MT_Scalar.
This switch allow future optimization like SSE.
Additionally, it changes the OpenGL calls to float versions as they are
very bad with doubles.
Reviewers: campbellbarton, moguri, lordloki
Reviewed By: lordloki
Subscribers: brecht, lordloki
Differential Revision: https://developer.blender.org/D1610
|
|
|
|
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
|
|
This patch improves clock management in BGE, to be able to accelerate /
slow the time, and also to finely synchronize clock with external
engines. Several new python functions have been added and existence ones
have been improved for that purpose. Now we have:
- getClockTime(): Get the current BGE render time, in seconds. The BGE
render time is the simulation time corresponding to the next scene that
will be rendered.
- getFrameTime(): Get the current BGE frame time, in seconds. The BGE
frame time is the simulation time corresponding to the current call of
the logic system. Generally speaking, it is what the user is interested
in.
- getRealTime(): Get the number of real (system-clock) seconds elapsed
since the beginning of the simulation.
- getTimeScale(): Get the time multiplier between real-time and
simulation time. The default value is 1.0. A value greater than 1.0
means that the simulation is going faster than real-time, a value lower
than 1.0 means that the simulation is going slower than real-time.
- setTimeScale(time_scale): Set the time multiplier between real-time
and simulation time. A value greater than 1.0 means that the simulation
is going faster than real-time, a value lower than 1.0 means that the
simulation is going slower than real-time. Note that a too large value
may lead to some physics instabilities.
- getUseExternalClock(): Get if the BGE use the inner BGE clock, or rely
or on an external clock. The default is to use the inner BGE clock.
- setUseExternalClock(use_external_clock): Set if the BGE use the inner
BGE clock, or rely or on an external clock. If the user selects the use
of an external clock, he should call regularly the setClockTime method.
- setClockTime(new_time): Set the next value of the simulation clock. It
is preferable to use this method from a custom main function in python,
as calling it in the logic block can easily lead to a blocked system (if
the time does not advance enough to run at least the next logic step).
Rationale are described more precisely in the thread
http://lists.blender.org/pipermail/bf-gamedev/2013-November/000165.html.
See also T37640
Reviewers: sybren, panzergame, #game_engine, lordloki, moguri
Reviewed By: sybren, panzergame, #game_engine, lordloki, moguri
Subscribers: moguri, hg1, sybren, panzergame, dfelinto, lordloki
Projects: #game_engine
Maniphest Tasks: T37640
Differential Revision: https://developer.blender.org/D728
|
|
|
|
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.
|
|
|
|
|
|
|
|
|