There were many cases across the VSE codebase where the active scene
was used rather than the current sequencer scene.
Thus when the two differed many bugs could arise.
When changing cache settings, there was even a crash. In other cases,
operators/properties would just fail to register.
Pull Request: https://projects.blender.org/blender/blender/pulls/164154
This adds the `UILayout::property_split_factor` property which contains
the split factor used in the layout system, and avoids to use the this
as raw value all over the place.
Pull Request: https://projects.blender.org/blender/blender/pulls/163393
This adds an option "Middle" to the existing thumbnail style setting.
The thumbnails overlay panel is updated. The `None` option is removed
and replaced with a checkbox `timeline_overlay.show_thumbnails`.
When using scene strips for storyboarding it's common to only want
a single thumbnail for each shot/strip. Additionally, when zoomed out,
having just a single thumbnail helps as well and avoids overlapping
start/end thumbnails.
The implementation can reuse all the code from the "Strip Ends"
thumbnail option so only one new function
`get_seq_strip_middle_thumbnail` is needed.
Note that because we get the (rounded) center frame of the content,
zooming the timeline does not query a different content frame for the
thumbnails but can get the (potentially) cached frame.
Pull Request: https://projects.blender.org/blender/blender/pulls/163382
Note that to support "multiple text files dragged in at once" we need to
use file handlers, which can't be passed any custom data (e.g. can't set
"text" property before calling SEQUENCER_OT_effect_strip_add). To get
around this I just added a new SEQUENCER_OT_text_strip_add rather than
try to change any file handler code.
This should be backwards compatible; scripts can continue to call
effect_strip_add. But we might want to move to the new operator for 6.0
(see #154702).
Ref: !163440
Previously, if more than ten of these IDs existed, it would hide the
list and fall back to the operator's enum search popup.
This is a just a remnant from when you couldn't use spacebar to search
menus and some submenus couldn't scroll (see 9e5577db47).
Instead of enum search, we can get native search of the submenu
on spacebar by just registering them as actual `MenuType`s.
This enum search also got in the way of any attempts to make an "import
then add" macro, which would help address #146635. Note that this is
also why we loop creating `operator`s here rather than applying a single
`operator_enum`.
Pull Request: https://projects.blender.org/blender/blender/pulls/163069
Following on from !161300, this patch updates the following operators to
support _all_ non-sound strips (including movieclip, effect, and text
strips):
- Set Render Size
- Scale/Stretch to Fit/Fill
In the text strip case, the operators work on the visible "boundbox" in
the preview, rather than the raw `ImBuf` it renders out to.
Text strips have some properties relative to the current scene
resolution, so those must be reset when "setting render size". When we
add more relative properties to other strip types they will be dealt
with here too.
This also fixes bugs where scene strips and image sequences with
differing image resolutions would not draw correct bounding boxes.
Pull Request: https://projects.blender.org/blender/blender/pulls/162164
Add a new `strip_source_size_get` which supports scene and color strips
aside from the existing image (sequences) and movie strips, setting the
current scene resolution to that source size.
This `strip_source_size_get` will be used elsewhere in future cleanup
and fix patches.
Pull Request: https://projects.blender.org/blender/blender/pulls/161300
---------
Co-authored-by: John Kiril Swenson <john@blender.org>
"Playback" popover was getting too large with new additions coming in
frequently, and most of the vertical space was taken up by the least
useful options.
This PR groups settings in the popover in different subpanels and
closes one by default to save on real estate.
In the Sequencer editor, an additional subpanel appears.
"Sync Scene Time" setting, which was sitting in the footer, exposed,
was moved here.
Images in the PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/161508
Part of https://projects.blender.org/blender/blender/issues/160377Fixes: #145521
For scenes (and especially with !140271) it is not unusual for the length
to change. This is not so much a problem for e.g. video and audio files
where we don't expect the length to change during the same Blender
session.
When storing the length of the scene in the strip, updating that length
becomes very tricky. Scenes can be linked, properties can be overriden,
etc. so it's not as simple as adding an RNA update function to the
scene start and end. The solution is to compute the strip length
dynamically for scene strips instead of storing its length in DNA.
So this PR tries another approach: the strip always gets the length from
the scene it references. This ensures that we get the updates "for free"
because everytime the strip needs its length, it gets the right and
up-to-date one.
Changes:
- Implement `content_length()` and related getters and setters that
computes scene strip frame number dynamically. Note: Existing usage of
`Strip::len` in versioning was not changed because `Strip::scene` might
not be valid before linking, see `blendfile_versioning_*` tests.
- Remove 'Update Scene Frame Range' from UI
- Deprecate the operator `SEQUENCER_OT_scene_frame_range_update`.
Using it will log the following in the console:
`WARNING SEQUENCER_OT_scene_frame_range_update is deprecated and will be
removed in 6.0. Operator`
Co-authored-by: Habib Gahbiche <habib@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/144146
This patch makes a couple small changes to meta strip selection to
make it more intuitive:
- Don't select meta strip contents whenever a meta strip is selected
- This was a holdover from back when there was no proper transform
code for meta strips and was necessary at the time.
- However nowadays this is not very useful; better to avoid tampering
with the selection state.
- Leave meta strip contents deselected after initial creation.
- When separating a meta strip, expand the current selection with the
former meta strip contents, auto-selecting them.
- This lets the user immediately apply an operator on the resulting
separated strips afterwards.
Finally, also poll away the unmeta operator if the active strip isn't
selected. This is to avoid confusion where there could be selected
strips that differ from the active one.
Pull Request: https://projects.blender.org/blender/blender/pulls/161102
Part of the Ripple Editing project: #153963
This PR adds a ripple version of the delete operator for removing strips
from the edit timeline while closing gaps left behind.
There is an `all_channels` property for controlling whether the ripple
happens on just the strips occupied by the deleted strips, as well as an
option `markers` which determines whether markers are rippled too.
It adds a keyboard shortcut (<kbd>Shift+X</kbd>), and the item is added
to the context menu.
After ripple deleting, there can be cases where strips overlap.
Currently this follows existing overlap mode logic, which can be
awkward, but a companion PR exists to resolve these issues: !160608
Pull Request: https://projects.blender.org/blender/blender/pulls/160607
The names for `Select Grouped` types were often misleading and
incorrect.
For two of them, it would just select certain strip types:
- `Global Type` would either select all visual or all audio strips.
- `Effect Type` would either select all effect or all non-effect strips.
We can replace these with a new `Select All by Type` menu just like
the 3D viewport, and add all the other strip types while we're at it.
For the rest, improve them by explaining exactly what kinds of strips
get selected with each type, and add fuller tooltips with more
information.
Also add support to the VSE preview too (it was broken before) and
the Shift+G keybind there, and modernize most of the code.
Pull Request: https://projects.blender.org/blender/blender/pulls/155826
The right-click context menu is quite messy and hard to parse.
Do the following:
- Only show options that are possible with the current state. Hide some
options if nothing is selected, and hide even more if nothing is
active.
- Add icons for some operators like delete/duplicate/meta.
- Fix showing keyboard shortcuts for slip and snap.
- Add "Set Render Range to Selected" to the context menu for easy access.
- Show Movie Strip options on first level rather than hiding them in a
submenu. Same for color tags.
- Visually group various ops based on their function (editing vs.
timeline-wide vs. transitions vs. grouping etc).
Pull Request: https://projects.blender.org/blender/blender/pulls/159498
This patch adds all composition guides in 3D viewport cameras to the VSE
preview. All drawing code has moved to `ed_draw.cc` for reuse.
To match camera guides, there is an overlays toggle (on by default), and
individual guides may be enabled in the Preview N-panel (all off by
default).
Co-authored-by: John Kiril Swenson <john@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/157117
When building video file proxies, Blender would also build "time code"
files (*.blen_tc) to aid seeking within the video files. General
seeking in video files has improved a lot (generally since 3.3, but
also a handful of fixes since then). Thus "timecode index" files are
no longer needed. Remove all mentions of "timecode indices" from proxy
user interface.
As a side effect, this PR also fixes several mismatches between
proxies & original source media, which were mostly visible in
high framerate or variable frame rate media.
Co-authored-by: Richard Antalik <iss@noreply.localhost>
Pull Request: https://projects.blender.org/blender/blender/pulls/158840
This adds initial support for compositor modifier assets.
Right now, every compositor node tree that is marked as an asset will
show up in the strip modifier `Add` menu.
* Node trees can be marked as an asset by right-clicking the data-block
selector and selecting `Mark as Asset`.
* In the asset browser, assets can be moved into catalogs (requires
saving the file with the asset).
* Node group assets that are in catalogs will show up in a menu/submenu
in the modifier "Add" menu.
The existing compositor node group essentials are automatically showing
up in the "Add" menu. The ones that can be used as modifiers include:
* `Camera & Lens Effects`:
* `Chromatic Aberration`
* `Sensor Noise`
* `Vignette`
* `Creative`
* `Sepia`
* `Split Toning`
* `Tune Image`
* `Unsharp Mask`
Note: Existing compositing node assets need to be re-saved in the
current version of Blender to correctly be showing up in the "Add" menu.
Pull Request: https://projects.blender.org/blender/blender/pulls/157461
This patch adds a new region type for scrubbing the entire playback
range. For now, it is only drawn on top of the VSE preview playback
controls footer (as part of the three point editing / Media Bin
project), but the `RGN_TYPE_SCRUBBING` region type is general
enough to be reused elsewhere.
To allow pulling up/down the VSE preview scrub region along with the
playback controls footer in one click-drag movement, a new
`RGN_STACK_ON_PREV` alignment option is added, which forwards drags
from/to the previous region when reaching maximum sizes.
Original design task ref: #155275
Pull Request: https://projects.blender.org/blender/blender/pulls/155377
This PR allow the override setting in the scene strip editor
to override the target strip world.
This allows a more easy way to control the background color
of the sequence using the sequencer scene world color.
This was requested by the story tool artist Pablo Fournier.
Pull Request: https://projects.blender.org/blender/blender/pulls/149656
This patch adds the ability to enable/disable "All Channel" snapping.
By default it is enabled and has identical behavior as before, but if
disabled, transformed strips will only snap to other strips on the same
channel.
Further rationale is described in the PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/154545
Implements compositor-based Effects in VSE (#150636). Compositor
effects can be of all currently existing effect kinds:
Two input effects (transitions):
- Similar built-in effects: Cross fade, Wipe.
- Created on two selected strips.
- When creating a node group for them, the group input has
"Input 1", "Input 2" and a float "Effect Fader" (0..1 over strip
range) inputs.
- Expected use case: transitions or fancy combination of two strips.
Single input effects:
- Similar built-in effects: Blur, Glow.
- Created on one selected strip.
- When creating a node group for them, the group input has "Input"
and a float "Effect Fader" (0..1 over strip range) inputs.
- Expected use case: post-processing of input in screen-space
(different from strip modifiers, which operate in local space
before strip transform is applied).
Zero-input effects:
- Similar built-in effects: Solid Color, Text.
- Created when no strips are selected.
- When creating a node group for them, the group input only has a
float "Effect Fader" (0..1 over strip range) input.
- Expected use case: gradients, procedural textures.
General notes:
Menu item to create a Compositor strip is in top level menu; next to
Adjustment strip. It is not under "effect" or "transition" since
compositor strip can be 1 or 0 inputs.
Properties inspector for compositor strips displays their inputs (as
for any other effect), and the compositor node tree selector.
Note that this PR does not change anything in how effect inputs are
selected within VSE - the new Compositor effect works just like any
other effect that already exists. You create a new strip with none,
one or two strips selected, and that are the inputs of the effect.
These can be swapped (for two input effects) or reassigned later with
the usual operators.
Implementation notes:
The actual compositor effect code is very small; most of the work
inside the PR was:
- Changes across VSE codebase to allow non-fixed amount of inputs.
Since Compositor strip type can have either 0, 1 or 2 inputs now.
- Various places related to depsgraph & co, where it was handling
strip Compositor Modifiers; very similar code has been added to
also handle Compositor Effects.
- Just like compositor modifier, the compositor effect right now
only works on the CPU. Getting both to use GPU is future task.
Pull Request: https://projects.blender.org/blender/blender/pulls/150694
Implements design #151070: by default show thumbnails only at strip
ends. Less clutter, and fewer thumbnails to load. There is an option
to show thumbnails across the whole strip (i.e. previous behavior).
Pull Request: https://projects.blender.org/blender/blender/pulls/151148
Any added retiming keys to a strip were drawn permanently, and toggling
off "Show Retiming Keys" would just make them slightly more transparent.
This is a bit obtrusive and just adds unnecessary visual noise.
With this patch, show an icon in the strip header to indicate that there
are retiming keys present, and hide the icon when in retiming mode to
take up less space.
Pull Request: https://projects.blender.org/blender/blender/pulls/153683
This patch standardizes ellipses on labels that require further input
from the user before running the operator as per our
HIG.
- PR does not include buttons (e.g. "Purge" in Outliner) and only
modifies menu items.
- PR does not include operators that wait for input from the user during
modal operation (e.g. `view3d.select_box`, `paint.sample_color`).
- Some usage of ellipses were removed since they were only present to
indicate the start of the sentence (to be finished by submenu items).
E.g. "Make Local...", "Sort Elements...", "Move..." do not require extra
input from the user.
Pull Request: https://projects.blender.org/blender/blender/pulls/150950
Adds Echo sound modifier to the video sequencer. The actual
echo effect calculation code was recently added to Audaspace
library; that is already in blender main.
The effect can be controlled using Delay, Feedback and Mix
parameters.
Pull Request: https://projects.blender.org/blender/blender/pulls/150449
This modifier allows altering the sound strip pitch by semitones
(plus "cents" which is 1/100 of a semitone), in +/- one octave range,
or by direct numeric ratio. The pitch correction quality can also be
adjusted.
Pull Request: https://projects.blender.org/blender/blender/pulls/148880
Rename modules in `./scripts/modules/` to use an underscore prefix to
make it clear they aren't intended to be part of public API's. This
also means there is no implication that these modules should be stable,
allowing us to change them based on Blender's internal usage.
The following modules have been marked as private:
- `animsys_refactor`
- `bl_console_utils`
- `bl_i18n_utils`
- `bl_previews_utils`
- `bl_rna_utils`
- `bl_text_utils`
- `bl_ui_utils`
- `bpy_restrict_state`
- `console_python`
- `console_shell`
- `graphviz_export`
- `keyingsets_utils`
- `rna_info`
- `rna_manual_reference`
- `rna_xml`
Note that we could further re-arrange these modules
(under `_bpy_internal` in some cases), this change is mainly to mark
them as private, further changes can be handed on a case-by-case basis.
Ref !147773
Goal of this PR is mainly to improve flexibility and of VSE layout and
screen space efficiency.
Previously, strip properties were displayed in timeline sidebar. This
was limiting, because if you want to display as much properties as
possible, the timeline area had to be taller, but this was at the
expense of space available for preview. However there is plenty of
space in properties editor, which is mostly unused in VSE. Therefore
strip properties were moved to the properties editor.
ID pinning and path displayed in top section aren't drawn, since strip
is not an ID and can not be pinned. Since there is more space for
properties, various panels are changed to be open by default.
Mainly transform and time panels, since they are used often.
There is one minor change: The waveform display property
of sound strip was previously hidden, if timeline area had per strip
waveform display overlay set. This is no longer possible to do and the
property is always visible.
Pull Request: https://projects.blender.org/blender/blender/pulls/140395
Add sound pitch correction functionality, so that retimed sound strips
can preserve their original pitch.
This has been implemented as a GSoC 2025 project. Actual pitch
correction is done with Rubberband library, which has been already
included into Blender 5.0 library builds; and then most of the other
code has been in Audaspace, which was already updated within Blender
tree earlier.
So this PR just flips on Rubberband build option, and adds the
checkbox to VSE sound strips for pitch correction (on by default for
newly created sound strips). Pitch correction works with both
simple whole-strip retiming, as well as more complex retiming setups
where different parts of the strip use different speeds.
Co-authored-by: Aras Pranckevicius <aras@nesnausk.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/143347
Functionality has been replaced by strip transform properties. Transform
strips in existing files will be replaced with gaussian blur with radius
of 0 to preserve modifiers and overall strip stack.
Pull Request: https://projects.blender.org/blender/blender/pulls/147003
Since 1122a05cb6 tool settings could return None, but we do not check this
consistently in scripts. Now always return some tool settings, since it's difficult
to verify and easy to forget proper null checks in e.g. operator poll functions.
The sequencer UI code was updated to continue showing tool settings only when
there is a sequencer scene.
Co-authored-by: Sergey Sharybin <sergey@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/146166
This patch adds a new Compositor modifier that applies a compositing
node group on a sequencer strip. This patch also introduces the concept
of a compositor node tree space subtype, where we now have a Scene and a
Sequencer subtypes. Practically, this just means that node like the
Render Layers node will not be available in the node editor in the
Sequencer subtype.
Future improvements includes:
- The compositor context is recreated on every modifier application,
while it should ideally be persistent somehow to make use of the
compositor static cache. This might require work from the compositor
side by moving the static cache outside of the context and make it
thread safe if needed. See `Render.compositor` for an example on
persistent context.
- GPU execution is not supported. This just needs a GPU context to be
bound before execution, but the tricky part is getting a GPU context.
See `render::Compositor::execute` for an example on bounding a GPU
context and why it is less straight forward.
- Node inputs are not exposed on the sequencer modifier interface. An
approach similar to Geometry Nodes modifier could be used, look at
`update_input_properties_from_node_tree` for reference, but notice
that Geometry Nodes naturally exempt the main Geometry socket because
Geometry inputs can't be exposed, but for the compositor, we will have
to exempt the main Color and Mask sockets manually. !145971
Co-authored-by: Aras Pranckevicius <aras@nesnausk.org>
Co-authored-by: Falk David <falk@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/139634
Rename the menu item "Footer" in Animation/VSE to "Playback Controls".
This only affects the menu item label under `View`, in the following editors:
* Dope Sheet
* Graph Editor
* NLA Editor
* Sequencer
The name "footer" has issues:
* It's not descriptive of what it does/contains.
* It can be moved to the top, so no longer a footer.
* When used in other editors, it may contain different things so it
is unexpected what to find in it.
See PR for screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/146727
- Show unassigned scene assets directly under Assets.
- Use Icons for Assets label.
- Only show "Scenes" when there are Assets.
- Don't show scene assets on the "Scenes" list.
The design about changing the operator default behaviour will be
addressed separately. This patch only changes the UI.
Design ref: #145522
Ref: !146574
Move 3D Viewport and Sequencer OpenGL render operators into a
"Render Preview" sub-menu.
The goal is to make the operation more clear, and being able to add
new entries to render the active scene or Sequencer scene (handy when
using the new "Sync Scene").
This also reduces the length of the `View` menu which in some cases
can get quite long.
See PR for details and screenshots.
Resolves#146302
Pull Request: https://projects.blender.org/blender/blender/pulls/146316