When making videos in Blender’s VSE I use a lot of text sequences for captions and the like. Doing common operations — like changing colour, location, size etc — can be slow when using the GUI, so I am writing an addon called QTE (Quicker Text Editing, pronounced ‘cutie’) to make the process faster. This series of posts outlines the process and tries to explain parts of the Blender API that I interacted with along the way.
Show all parts (click to expand)Parts:
- Part 1: What We Want To Do & Proof of Concept
- Part 2: Operators, Dynamic Classes & a Basic Script
- Part 3: Keymaps
- Part 4: User Preferences (& Panels)
- Part 5: QTE Alpha Release
- Part 6: Preferences and the right keymap
- Part 7: QTE Beta Release (& ‘Remove Binding’ Operator)
- Part 8: Bugs & Features
- Part 9: Prototyping Appearing Text
- Interlude: Why is my Blender addon panel property read only? (Solved)
- Part 10: Beta 2 Release (+ Development Hurdles)
- Part 11: Reflection and Next Steps
- Part 12: Preferences + Properties = Bugs
- Part 13: CollectionProperty, KeyMapItem ID, Preferences Pitfalls
While I prefer to figure out things on my own, I am happy with how those questions turned out. Many years ago I read ‘How to Ask Questions the Smart Way‘ (good reading) so I try to do my research first. Judging how much research is ‘enough’ can be tricky. One side effect of Google’s success in search has been to change people’s expectation for how quickly they should be able to find information. These expectations are perhaps sometimes unrealistic!
I don’t know how I didn’t see
blf in my reading or searching, but I am grateful for testure pointing me in that direction. It got me to where I could piece together the workaround I used, which I posted to close the loop to avoid a denvercoder9 situation.
Asking a follow up question about storing options/properties in the window manager / scene resulted in some useful discussion. It also reminded me of a previous thread where I asked questions about storing keymaps, which I don’t think was asked as clearly as I could. Verbosity is something I find difficult to cut back on: I have a desire to be clear and understood, and adding more information is my way of trying to be as clear as possible. Of course, adding more info usually complicates the message!
SBAR is a good way of structuring communication, and while I don’t consciously use it to help phrase questions they do tend to follow that basic format:
- tl;dr (S)
- context (B)
- query/problem (A)
- question (R)
Work to keep what I want to convey to an appropriate amount and clearly presented is ongoing!
I’d like to release version 1.0, but to my mind there is one critical feature I would like to add before I can do that: saving/exporting and loading/importing of settings.
At present presets and keymaps are stored as part of the addon preferences. This persists the data across sessions, but it does mean that if a user were to deactivate the addon the settings would be lost.
And the console complains the properties cannot be found:
This is to be expected from the way things are currently set up. I have a couple of non-exclusive options for handling setting persistence:
- save preferences to a default settings file; either quietly or with an explicit ‘save settings’ button
- add ‘import/export settings’ buttons
It may be useful to have both.
I was introduced to the concept of the redo panel (aka ‘Adjust Last Operation’) by Magnusson’s answer to my question about where to store settings. Because I haven’t defined a
draw() function for the operators, mine has none:
Although that is more than any of the TextSequenceOperators (set colour/location/size/duration/) have- the redo panel doesn’t even display for them, for some reason.
It’s not needed for 1.0, but it would be nice to have for those who expect it.
Post Script: Featured Image
The featured image is from Frasier (S10E22 – Fathers and Sons) of Niles taking ‘baby steps’, to fit the theme of ‘next steps’. I spent a fair while trying to find a decent format for the image, as the one that is there is not terribly great from either a quality or filesize perspective. Unfortunately, webp seems to be the best supported option.