Markers = Named frame numbers, and more!
Have you ever been in this situation? You're working on a VFX explosion that needs to render on top of some footage, starting on frame
571
. So you:
- import your scene footage (camera background + compositor setup)
-
set your rendering range from frame
571to800 -
have a particle system that emits at frame
571and stops at591 -
have a fluid simulation domain with a cache range from frame
571to800) -
you add a marker on the timeline called
BOOMat frame571to remind yourself where the explosion starts
Then the director asks you to start the explosion a second later, so now you need to move everything 24 frames later. Sigh.
Here's what I'd like:
-
anywhere you can type a frame number, you can type a marker name, optionally with a math expression. This makes markers
named frames
.
-
Now you can make your fluid sim cache range start at frame
BOOMand end at frameBOOM+179
-
Now you can make your fluid sim cache range start at frame
-
anywhere you can type a frame number, you can refer to the start and end of VSE strips (
foobar.mpg[start]andfoobar.mpg[end]) optionally with expressions. This makes VSE strips named frame ranges .-
So if I have a sound effect like
explosion.mp3I can have my particles start emitting atexplosion.mp3[start]and if I drag my sound effect earlier or later on the timeline, my particle system updates too
-
So if I have a sound effect like
-
anywhere you can type a frame number, you can refer to the start and end of NLE actions. This makes NLE actions
named frame ranges
.
-
So if I have an action called
pull-triggeron the NLE, I can define my smoke sim as starting atpull-trigger[start]
-
So if I have an action called
-
as a happy side effect of all this, an action on the NLE "Frame Start" can be set to match a VSE clip.
-
So if I have a dialog audio clip called
one-liner.mp3and I'm making a lip-synch action for a character, I can have the action on the NLE start atone-liner.mp3[start]and then if I drag my dialog a little bit later in the VSE, the corresponding lip-synch action moves too
-
So if I have a dialog audio clip called
Hope you like this idea, please vote for it if you do!
3 Comments
Interestingly, it is possible to use a VSE strip's start frame as a driver to another value:
Though, the missing thing here is that the scene's start/end frames can't be driven. So are the markers' frame properties. In fact, those data paths can't even be copied from the menu:
But you can access them from python:
That's a lot of inconsistencies there. I would understand the current frame not being driveable, but not the rest.
A Blender-like Approach?
I've been thinking about what this would look like if it was implemented as a native feature in the most Blender-like way possible. I'm not making a proposal, just engaging in a thought experiment, but who knows, it might capture someone's imagination. Here's my fantasy, let me know what you guys think:
Temporal Parenting
Design a feature called "temporal parenting" (I'll abbreviate it as T-parenting ) which is analogous to Blender's existing parenting. T-parenting links an object relative to another object in the
tdimension the same way that parenting links an object's transform relative to another's in 3D space.Relevant objects are things like actions in the NLE, clips in the VSE, animation frame start/stop, simulation start/end. An exhaustive list would include some of the less obvious things like the start/offset of a camera's background image sequence, and the start/offset of a compositor image sequence node. Markers would be the equivalent of "empties", points in time with no functionality but still useful in T-parenting. As a special case, it should be possible to "hook" an object to an individual keyframe, analogous to hooking to a vertex.
As with regular parenting, if an object has a T-parent, you can still drag it around on the timeline (it's not "locked" in absolute time), but you'll be dragging it relative to its T-parent.
"Start" & "End" T-Parenting
One nuance is the relationship of "Start" and "End" T-parenting. In some cases (like Simulation Frame Start and Frame End) the start and ends should clearly have separate T-parents, so sim start is T-parented to a marker called
Boomindicating the start of an explosion, and the end is T-parented with a marker calledSmokeClears. But if you want the simulation length to always be 50 frames long even when it is moved relative to its T-parent, you could just T-parent the Simulation End to the Simulation Start (+50frames, for example).An Action in the NLE would be the opposite - by default the End should be T-parented to the Start based on clip length, so that generally the Action might be moved relative to its T-parent, but the timing should not be changed. But it should be possible to T-parent the Action's start and end separately, so the timing of the action is slower or faster.
A very thorny detail is Image Sequence nodes in the Compositor and Shader Editor. What is the "start" of an image sequence? It's the first frame (for a PNG sequence, that could be frame
500- the first file might not be1). But what if some frames are later prepended to the PNG sequence (say, you start your simulation earlier in Houdini). Now what happens to the parenting? This would need some Deep Thought.UI Elements
On the UI front I see two things needed, one small and one big:
Frame Start) would need an indicator, like a color, showing that the field is T-parented, and might contain the offset from the parent (soFrame Start: +25or something like that)pwould establish a T-parenting relationship from the selected objects to the active object. This would make it easy for an animator to visually organize the timing of various elements in a hierarchy of relative relationships.Feedback?
I think an approach like this would be immediately intuitive to Blender users. It would be very hard to implement, especially for things like image sequence nodes which have an unintuitive way to represent a position in time. But I enjoyed this thought experiment -- join me with your thoughts and let me know what you think.
This can be combined with other: blender.community/c/rightclickselect/m2Qr/ KSP - Keyframe Script Python (new type key on time line - with python)