Title: Sequencer Improvements
Author: Shubham Balasaheb Daule (aka SBDaule)
Synopsis
This project focuses on enhancing Blender’s Sequencer. The goal is to improve
workflow efficiency and user experience through practical enhancements. I plan
to implement “Strip Linking” capabilities, adding snapping to the preview region
of the sequencer, and making channel positioning of strip when adding and
pasting more intuitive and predictable for the user.
Benefits
The project will benefit users who use Blender for video editing. This will
improve the experience by addressing major pain points i.e. having to manually
select both the audio and video strips separately and having to manually enter
position when working with multiple video streams in same frame.
Deliverables
- Introduce the ability to link strips in the sequencer to a parent strip.
- Snapping in preview region of the sequencer.
Project Details
Strip Linking
- Introduce the ability to link strips in the sequencer to a parent strip.
- Designate one strip as the parent, with other strips as children.
- Child strip positioning determined by offsets from the parent strip, both in
channel and time. - Importing video will automatically link all the imported strips, with the
first video stream often serving as the parent. - Visual indication: When one linked strip is selected, the others can be
highlighted in a distinct color (e.g., blue). - User can select multiple strips and then link them together from right click
context menu. The one select last will act as parent. - User can select already linked strips and select to unlink current strip or
unlink all linked strips from right click context menu.
Tool behaviour:
- I have two alternatives for the tool behaviour, further discussion is needed
to finalize the behaviour:
- Tools will behave same irrespective of weather parent or child is selected.
- Cutting a strip affects all linked strips, maintaining consistent
parent-child relationships on both sides of the cut. - Retiming and transformations information among linked strips will be
shared. When linking strips, we can discard information from strips other
than the parent strip and warn user about possibly destructive action, or
prompt users to select which strip’s information to persist.
- Cutting a strip affects all linked strips, maintaining consistent
- Tools will behave differently depending on weather parent or child is
selected.-
Cut Tool:
- Parent Strip: When applying a cut to the parent strip, all
child strips are also cut at the same timestamp. - Child Strip Behaviour: Applying “Cut” on child strip will only cut
that child strip. Both resulting parts from the cut remain linked to
the original parent strip, with adjusted offsets.
- Parent Strip: When applying a cut to the parent strip, all
-
Transformations:
- Parent Strip: Applying transformations to the parent strip
propagates to its child strips. - Child Strip: Applying transformations solely to a child
strip affects only that strip, with adjustments being additive
to those of the parent. - Note: When the strips are unlinked, then the visual appearance of
the child strip will change. We can add option like “Copy transforms
and unlink” that will make new transformations by applying
transformations of child on top of the parent transformations and use
these new transformations for the child after unlinking, although it
might be very complex to implement (particularly when the properties are
keyframed.) Or alternatively, we can add transform effect strip for
this. Further discussion on this is needed.
- Parent Strip: Applying transformations to the parent strip
-
Snapping support for preview region of the Sequencer.
- Currently when moving things in preview region, there is no support for
snapping.
Proposed snap options
-
The following options can be added to the snap options, the options will be
presented in box similar to one shown in (Figure 1). -
Snap:
- Frame Edges
- Frame Center
-
Snap to:
- Frame edges
- Frame Center
- Viewport edges
- Viewport Center
-
Include frames:
- Include frames not currently in view
Channel of newly added strips
- The current method of channel selection might not be very intuitive for some
users. So the goal is to find and implement a method that most of the user
will find predictable.
Project Schedule
- 02/04 to 21/04: Fixing any issue in blender and submitting a patch.
- 01/05 to 26/05: Community Bonding Period
- Discussing and finalizing the UI related details and rough idea of
implementation. - Understanding the existing blender code.
- Discussing and finalizing the UI related details and rough idea of
- First 3 Weeks: Completing basic strip linking with support for basic
features like moving strips together - 3 Weeks: Implementing special behaviour of the tools for the linked
strips. - 4 Weeks: Implementing snapping in the preview region of sequencer.
- 1 Weeks: Making the selection of channel when adding new strip clear and
predictable - 1 Weeks:
- Buffer time.
- Bug fixing
- Code cleanup
Bio
I am Shubham Daule (SBDaule), a third year undergraduate student pursuing my
Batchelor of Technology in Computer Science and Engineering from IIT Bhilai,
India. I have been passionate about FOSS ever since I found about it. I
participated in GSoC 2023 and implemented “Auto-growing Layers” in GNU’s Image
Manipulation Program (aka GIMP) and have been part of GIMP community
since.