Animation: Add duration display to frame range settings #104882
No reviewers
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#104882
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "ChrisLend/blender:scene_frame_count"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This patch adds an option to the Status Bar:
Scene Duration
This shows the duration of the current scene in frames and timecode
Duration: <timecode> (Frame <current frame>/<total frames>)
The timecode follows the formatting defined in the user preferences.
PR in response to https://blender.community/c/rightclickselect/0LDy/?sorting=hot
It would be best to re-create/re-submit this PR because it contains submodule changes (see the Files Changed section). Not only should that not have been the case but submodules were recently removed in the repo: https://lists.blender.org/pipermail/bf-committers/2023-February/051486.html
Hi Chris, I'm the one who did the request on RCS, thanks for tackling this!
I guess it's my turn to eat my hat: I always had the Amaranth add-on, but never enabled (and knew about) the addon's option for adding timeline extra info, and to my surprise the add-on was already doing exactly what I was looking for, in the status bar.
Now, I think it's great this can be natively implemented in Blender, and I have to say that even though I proposed to put the info in the Output properties, I actually like a lot how is done in Amaranth: no need to go into tabs/panel and open a sub-menu, the info it's just there in the status bar, with the option of disabling just like the other infos. Maybe you can take the add-on's way as inspiration?
8ebc196bee
to81ee0b6628
@Slowwkidd I've updated the patch to put the info in the status bar. I think it looks much cleaner there. Thanks for the suggestion.
Looks like this now
WIP: Add duration display to frame range settingsto Animation: Add duration display to frame range settingsI love this idea, but the ordering of the text makes it difficult to understand that Frame Count relates to the length of the shot.. Right now it shows up like:
Frame Count: 202 | Duration: 00:08:42 | 3.6.0 Alpha
If we change the order because we're reading left to right, it's a bit clearer to me:
Duration: 00:08:42 | Frame Count: 202 | 3.6.0 Alpha
-Jason
This is great @ChrisLend! The only thing I'm wondering, as far as I can see the duration is in minutes:seconds:milliseconds, right? I would rather put it as the compact SMPTE timecode:
hours (only if necessary):minutes:seconds:frames
Or, it could follow the TimeCode Style set in the Preferences.
@Slowwkidd So I'd like it to be mm:ss:ff but I am unsure how that works with the frame rates 29.97 and 59.94
That's why I chose the safe option of going with ms
I changed the order and also changed it to
Scene Duration
just to make it clearAbout SMPTE timecode I see there is a drop frame convention for 29.97 frame rates
https://en.wikipedia.org/wiki/SMPTE_timecode
👍 for the feature, just a few notes on the implementation.
@ -651,0 +654,4 @@
}
const int frame_count = (scene->r.efra - scene->r.sfra) + 1;
const float fps = (((float)scene->r.frs_sec) / (float)scene->r.frs_sec_base);
const float duration = frame_count / fps;
These two lines could be replaced with the
FRA2TIME(frame_count)
macro.@ -651,0 +657,4 @@
const float duration = frame_count / fps;
const int duration_mins = (int)(duration / 60);
const float duration_secs = duration - (duration_mins * 60);
ofs += BLI_snprintf_rlen(info + ofs,
Would it be worth it to use
BLI_timecode_string_from_time()
here to get the duration string?Nice to see this progress!
In
Frame Count
, it'd be useful to see the current frame relative to the frame range, so you know you're for example in the first or last frame of the range. It'd also make it so the label can be "Frame" instead of "Frame Count".e.g.
Frame: 1/250
.I think it should use this preference so it matches the animation/VSE editor's timeline, keeping them unified across editors and status bar.
Note that I have absolutely no authority or knowledge in this area; I don't do any video editing so I don't know what I'm talking about here.
But I'm just wondering if there is any way of reducing the amount of text, just because the status bar formatting can get a bit weird as the program width narrows. Some shorter alternatives, along with the current proposal at the end:
Personally I like the explicitness of "Scene Duration". There are so many things with 'durations' in Blender that I feel this adds clarity. After all, each FCurve, Action, NLA strip and NLA track have a duration, and so do the scene preview range and the VSE.
Sure, the status bar is in a rather global place, so it's unlikely to be the current FCurve or NLA strip. The distinction between the scene range, VSE, and scene preview range is still relevant there, I feel.
For sure. And the most important thing is that is shows exactly what you want in an explicit way. I was just hoping there was a shorter way to express it. But no matter. It is an option so the user can turn off other items if they run out of space.
I like some of your proposals!
Although less explicit, it could be something like this:
Scene Duration: 00:08:42 (1/202 Frames)
Another thing to at least consider is the order within the rest of the status bar text. This PR appends this new item near the end of the line, which seems reasonable. But as an optional specialized item you could argue that it should get higher visibility than more generic items. If this is important it could be first and therefore easier to spot.
Is it possible we have also playback "frame rate" , I sense that the overlay sometime causes overhead and its really hard to know whether that is affecting the playback rate since you cant see what at what fps is the playback working when the overlays are off
Probably for another patch. But yes, I brought this up some time ago when the status bar was introduced. Fps are not (at least currently) tied to a specific viewport (you could say the same about the current frame since it's a scene property, but it is useful to see it become yellow when there's a keyframe in that frame).
The VSE also has its own fps indicator, moving it to the status bar improves consistency.
I'd vote for leaving out "Scene". It doesn't help distinguish from "Scene Preview Range" because that's still about the scene. And the video sequencer uses the same frame range as the scene. So I don't understand how this helps.
Based on your feedback I changed the text
(4/25 Frames)
I swapped it around so it reads(Frame 4/25)
. The reason being that the playhead can be outside the scene frame range making the number negative or larger than the total amount of frames and it reads better in those cases."Scene Duration" and "Scene Statistics" should be next to each other.
moved the location in the popup menu
also moved in the status bar to reflect that
Yes, I am the guy who was going on about keeping the text as succinct as possible, but I think you should consider adding spaces in the Frame range. So changing from this:
to this:
On some fonts the forward slash can have a less steep angle and can be the same height as the letters, making it possible to quickly mistake for number 1.
No worries if you don't agree; I think it most important that you get what you think looks best for your use. Note though that if you only agree a little bit, it is now safe to use other Unicode spacing characters like thin space and hair space. Although I'd just use regular space because my eyes are old.
Added a space as @Harley suggested
Nice idea! I did a quick mockup, maybe will be considered for a future patch:
When not playing animation
When playing animation: option 1 / option 2
I agree, but at this point this should be done for all status bar info, otherwise frame range would be the only one:
@Slowwkidd @Harley
good catch about the spaces between current frame and total frames
I reverted that change to have no spaces to keep thing consistent