If there's no material in the Grease Pencil object, exporting those
strokes will cause crash because the SVG exporter didn't handle the
case for when there's no material. Now uses black stroke when material
is `nullptr`.
Pull Request: https://projects.blender.org/blender/blender/pulls/134314
The use of `GeometryDeformation` is incorrect for computing the bounds:
It contains _evaluated_ positions for the _original_ points, but does not
match the size of evaluated geometry after constructive modifiers like
Line-Art. For the bounds the evaluated positions should be used as-is.
Pull Request: https://projects.blender.org/blender/blender/pulls/134325
This patch refactors the ShaderNode class to be a concrete class that
is implemented in terms of the node type gpu_fn. This is done to make it
easier to reuse existing nodes in other parts of Blender.
Pull Request: https://projects.blender.org/blender/blender/pulls/134210
`mouse_over_key_get_from_strip` doubled the hotspot for start and end
fake keys, but this was not reflected in the other use case of
`RETIME_KEY_MOUSEOVER_THRESHOLD`. Fix and add a comment for
documentation.
OpenCollada used to rely on PCRE (a Perl Regexp library). Since
switching to Aras' OpenCollada fork (#122270), the library is no
longer needed, but is still required as a dependency.
This patch cleans this up by completely removing it from our build
system and linux system package installation script. This also lets
us remove it from our pre-compiled library platform repos, making the
process of recompiling our libraries from scratch easier as it wasn't
compiled by our dependency builder anymore.
Pull Request: https://projects.blender.org/blender/blender/pulls/134310
As noted in #134241 this modal poll function cannot return false on an
item because there is a conflict in the way the operation is started
versus how it is set to cancel. Doing so also stops the escape key from
canceling the operator.
Pull Request: https://projects.blender.org/blender/blender/pulls/134273
Use float for intermediate values when calculating speed or timeline
frames.
More details on precision improvement itself: In some cases, setting
strip speed to say 70% would result in actual speed being set to say
69.5%. With this change, the number would be closer or equal to 70%.
There few tangentially related changes:
- `SEQ_retiming_key_speed_get` was changed so both functions work in
same time domain.
- `SEQ_retiming_key_speed_set` now expects speed as float factor
instead of percentage. This is consistent with get function return
value.
- Improve variable names, for better code readability.
Pull Request: https://projects.blender.org/blender/blender/pulls/131782
This would be done when the frame, layer, pass or view changes compared to
the previous value. But for cases like old files without these members or
loading the image datablock into a different scene, this considered the image
to be always be changed on file load.
Now always reset this state on file load, and don't consider the initial
state as an image update.
This could also happen in the middle of GPU rendering, causing the GPU
texture to be freed while still in use.
Pull Request: https://projects.blender.org/blender/blender/pulls/134198
Move `Library.runtime` to be a pointer, move the related
`LibraryRuntime` struct to `BKE_library.hh`. Similar to e.g.
Mesh.runtime, that pointer is expected to always be valid, and is
allocated at readtime or when creating a new Library ID.
Related smaller changes:
* Write code now uses standard ID writing codepath for Library IDs too.
* Runtime pointer is reset to nullptr before writing.
* Looking up a library by its absolute path is now handled through a
dedicated utils, `search_filepath_abs`, instead of using
`BLI_findstring`.
Pull Request: https://projects.blender.org/blender/blender/pulls/134188
The Grease Pencil `Clipboard` only stored a single `CurvesGeometry`. This meant
that the `Paste by Layer` operation (from 4.2 LTS) couldn't be implemented.
This PR adds an `Array` of `ClipboardLayer`s to the `Clipboard`. Each layer stores
the name of the Grease Pencil layer that it was copied from and the `CurvesGeometry`.
The `grease_pencil.paste` operator has a new property `type` (`ACTIVE` or `LAYER`)
that decides how to paste the strokes.
Using the `ACTIVE` type, the strokes of all the `ClipboardLayer`s get merged and then
pasted to the active layer.
Using the `LAYER` type, we first try to find layers to paste the `ClipboardLayer`s into.
We just look for matching layer names. If no matching layer is found, the strokes are
pasted into the active layer instead.
This should be consistent with how Grease Pencil used to behave in 4.2. LTS.
Pull Request: https://projects.blender.org/blender/blender/pulls/134168
Previously bezier curve handle selections were not processed. This would lead to the handles
of the previously selected handles also being dragged around if they were selected before
the extrusion operation.
This pull request will use the control point selection attribute to override the handle
selections. This will lead to both handles always being selected on extrusion.
Pull Request: https://projects.blender.org/blender/blender/pulls/134192
The reason why this was not enabled is unclear, but has likely to do
with the idea that if this is defined by the rigging department, the
animation department should not tamper with it.
However, preventing animators to lock some transform themselves is
likely a worse limitation here.
Pull Request: https://projects.blender.org/blender/blender/pulls/134169
Would only happen in some specific cases. Essentially, do not consider
an excluded collection as 'editable'.
Also refactored `BKE_collection_parent_editable_find_recursive` on the
way, as it was applying the same checks twice to all but the initial
processed collections.
This was implemented in the kernel but it shouldn't have been.
Since the function operates at the editor level and doesn't
only work at the low-level, it should be in the `object_vgroup.cc` file
in the `editor` context.
This also means that we can use `ensure_selection_attribute` which
fixes a crash when the selection attribute is on the wrong domain.
Pull Request: https://projects.blender.org/blender/blender/pulls/134060