Age | Commit message (Collapse) | Author |
|
This new discontinuity filter performs actions on the entire Euler
rotation, rather than only on the individual X/Y/Z channels. This makes
it fix a wider range of discontinuities, for example those in T52744.
The filter now runs twice on the selected channels, in this order:
- New: Convert X+Y+Z rotation to matrix, then back to Euler angles.
- Old: Add/remove factors of 360° to minimize jumps.
The messaging is streamlined; it now reports how many channels were
filtered, and only warns (instead of errors) when there was an actual
problem with the selected channels (like selecting three or more
channels, but without X/Y/Z triplet).
A new kernel function `BKE_fcurve_keyframe_move_value_with_handles()` is
introduced, to make it possible to move a keyframe's value and move its
handles at the same time.
Manifest Task: T52744
Reviewed By: looch
Differential Revision: https://developer.blender.org/D9602
|
|
Left out in {rB7f28a99dd5a57216fb477d844ae1fec5510ad5d5}
|
|
Causes link issues on Xcode's "New Build System" which was introduced
in Xcode 10 and is default on Xcode 12.
https://devtalk.blender.org/t/16273
Differential Revision: https://developer.blender.org/D9624
Reviewed by: brecht, #platform_macos
|
|
|
|
Simplify and sanitize handling of usercounts for Text IDs generated
trhough `BKE_text_load_ex`.
|
|
Just a beginning of tests coverage, related on the planned upcoming
development.
|
|
|
|
Make unit more explicit.
Ideally would be "embedded" into the field name itself, but this will be
more involved change.
|
|
The caller is still responsible for allocating list of markers,
but the track allocation and initialization can now be reused.
Currently no functional changes, preparing for an upcoming
development.
|
|
This code doesn't actually do anything, but it provides a base for an
implementation and exposes the the necessary interface to the UI.
|
|
Generally doxygen headers are title case and are styled like prose
rather than code.
|
|
|
|
Use a dynamic name/description based on the set properties. This makes it more
clear what's going on and avoids confusion, as explained in the report.
|
|
This makes it clear that only the final "r_data" is being changed.
Also rename a variable to be less vague.
|
|
Just a few minor improvements: declare variables where they are
initialized, decrease scope, expand some variable names, and use
LISTBASE_FOREACH.
|
|
Having up to nine levels of indentation make this function hard to
follow. Instead of indenting the rest of the loop for a simple special
case, just continue.
|
|
|
|
|
|
By using floating point filters, the speed improves by a factor of 2 to 10.
This will help speed up some cases of the Exact Boolean modifier.
Changed the interface of mpq2::isect_seg_seg to not return mu, as it was
not needed and not calculating it saved 15% time.
|
|
|
|
The assert was when use segment selection mode.
|
|
Reduce variable scope, and in a few cases, use bool instead of int.
|
|
|
|
This changes the meaning of the order of the two geometry input sockets
to match the existing boolean modifier. The first socket is now the base
mesh and the second socket is the "cutter" geometry.
|
|
|
|
Similar to how the node editor context works for materials, this commit
makes the node group displayed in the node editor depend on the active
object and its active modifier. To keep the node group from changing,
just pin the node group in the header.
There are still missing updates when switching the modifier's node group.
|
|
This exposes the operator to set the active modifier as the type icon
in the header of the modifier panels. Tweaks to the widget drawing
code were necessary to use the red alert for non-emboss operator
buttons. Then, the panel for the active modifier gets a border around it
(which currently uses the property search theme color), requiring
an "active property" field in the PanelType struct.
|
|
Previously, it was always outputting an empty geometry in that case.
This was confusing because e.g. the output of a union operation
with a single non-empty mesh is also non-empty.
|
|
This will probably not stay exactly like this, because it looks a bit ugly.
Adding this now, because it increases flexibility a lot and allows me
to test the attribute api a bit more.
|
|
Originally, there were technical reasons for why two different domains
were used. Those reasons have been lost unfortunately, and there
don't seem to be any issues with combining the domains now.
This reduces confusion when users have to select the domain type
in enums.
|
|
Those allows e.g. float attributes to be accessed as if they were vector attributes.
|
|
When lowering the wireframe opacity with sculpt overlays enabled, the
wireframe overlay was creating white artifacts along the edges.
Reviewed By: fclem
Differential Revision: https://developer.blender.org/D9607
|
|
|
|
Attributes can now be accessed through a GeometryComponent.
MeshComponent and PointCloudComponent implement the specific
attribute access mechanisms using virtual methods.
This simplifies code that should work on different geometry components
quite a bit, because it only has to be written once without using templates.
The Random Attribute node benefits from that a lot.
|
|
This is useful when one wants to get an input value multiple times.
|
|
|
|
|
|
|
|
Some checkboxes had nonessential spacing between rows which made the
popover taller than needed.
|
|
This adds an invert toggle for the outliner object state filters.
There are some cases where we want a filter for invertable states (Selected,
Unselected) and having a single toggle to invert the filter reduces the
number of separate filter types needed. This removes the "Hidden" filter
which can now be replicated with an inverted "Visible" filter.
Differential Revision: https://developer.blender.org/D9598
|
|
Although disabling this option is equivalent to setting the edge angle
to 180 degrees, there is no great reason to change the settings from what
is exposed in the modifier.
Differential Revision: https://developer.blender.org/D9564
|
|
`object.modifiers.active = None` will just clear the active flag
from every modifier.
|
|
This is a RNA only pointer property used to set and get the active
modifier without using an operator.
|
|
|
|
|
|
In case we do not use names, code adding new insert operations in
collections was broken.
Not a proble in practice so far, since this case was not yet in use, but
will be soon with NLA overrides.
|
|
Since add-ons now unregister on exit
(as of fa566157a5c351775d082b05b180c630665b4afc)
clearing functions in `bpy.app.handlers` caused an error on exit.
Resolve by restoring handlers before exiting.
|
|
|
|
Zoom with an orthographic view wasn't refreshing the preview plane.
|
|
When an projecting onto a plane that is orthogonal to the views Z axis,
project onto a view aligned axis then map it back to the original plane.
see: ED_view3d_win_to_3d_on_plane_with_fallback
Since the depth can't be properly visualized in 3D, display a 2D so
it's possible to to tell the depth from the cursor motion.
|