Scene Organization Tools #5076
Replies: 9 comments 12 replies
-
Beta Was this translation helpful? Give feedback.
-
ProposalUIMost OBS users don't need powerful scene organization tools, so for those who do, I think we can match most demanding users' needs with only two additions. First, I saw the addition for a filter field proposed by @Programatic. This is a common and recognizable way to search for one or a couple of specific items in a list. I agree that it's a good method for scene organization that would be a good fit for OBS. Secondly, I'm thinking about a visual addition to scene organization. Many tools (including file browsers, music players, and... Pokémon PC storage!) let you tag or color items to make them stand out. I propose to add a right click option for scenes to label them with a color of choice. These are my mockups for the filter as well as the labels. Apologies for the mockup, I'm not an artist, I'm an engineer :). Of course all this would be implemented with standard built-in Qt components, not with paint Quick find sceneColored labelingThe add color CodeThe filterIn my opinion, the role the filter field should have is to quickly find a single specific scene you're looking for and nothing else. Having looked at the code, I would prefer not to mess with the For all this, we shouldn't need any custom data structures or changes to configuration whatsoever as it can be implemented entirely in the frontend. I'll add a The filter field should behave as you would expect from other well-coded programs, IE, pressing Because I'm intending to implement this as a search popup, it will function equally for both the list view as well as the graph view. The labelsThe colors of the labels will be saved in your selected configuration file. In its current state, the configuration file has no single organized construct for all scene related configuration, everything is added to the global scope. I would prefer to reorganize everything under a single scope like so, but that would require a lot of unrelated refactoring. scene: {
"current_program_scene": "",
"current_scene": "",
"scene_order": ["..."],
"scene_labels": [
{"name": "", "color": "#aabbcc"},
"..."]
} So instead, I'll add it to the global scope of the configuration file instead, with the same inner structure as shown above. As the complexity of scene configuration increases I would personally suggest refactoring the configuration though, maybe I'll take some time to do that after implementing this feature itself. The refactoring is out of scope for this feature if you ask me. As for the implementation itself, I'll add a QMenu with QActions to Coloring the items themselves will be implemented separately for both the graph and the list item views, as those are separated in the code right now too. Where will the code go?As for organization, I've looked through the OBS ui codebase and found that it's coded mostly in two files As for the implementation of the labels and the filter, I'll add two new c++ files that implement the methods necessary to implement my proposal. Cross-platform considerationsAs far as I can think of, since this should be implementable with exclusively OBS primitives as well as Qt, I don't foresee any need for custom code per platform. As testing is concerned, I have access to a windows machine, a Linux machine, as well as an M1 mac. Once I've arrived at the cross-platform testing phase at the end, I can hopefully find someone to compile it for MacOS (M1 can't compile OBS yet :<) so I can perform the necessary testing. |
Beta Was this translation helpful? Give feedback.
-
Just to add a comment here from my perspective as someone who receives a lot of the user feedback, one thing that is asked for a lot is the ability to sort scenes into collapsible folders. One could argue that the ability to search might supersede this, but from an organizational standpoint, having a folder that items can be placed in is one of the most common requests we receive. This would have no functional aspects outside sorting inside the Scenes list (i.e. it would not be the same as Source Grouping), and would allow the folder to be opened/closed accordion-style. |
Beta Was this translation helpful? Give feedback.
-
I have added extra requirements to this RFC:
Due to my additional requirements, and given the fact that they might be a significant extra annoyance, I've also increased the bounty to $2500. |
Beta Was this translation helpful? Give feedback.
-
It would be helpful to have an option to set snapshot of a scene to the Scenes list. Grid mode, as it is now is not very helpful, as it shows only scene names, and those names are usually longer than space available in grid buttons. With scene snapshots shown along the names, grid mode would became extremely useful. |
Beta Was this translation helpful? Give feedback.
-
@jp9000 (Sorry if pinging is out-of-etiquette, I'm not aware) Hi, just double-checking whether this bounty is still seeking proposals. I'm interested in having the feature myself, and am beginning to do the discovery work on my end in preparation for a proposal. This is my first time with the codebase so I'm taking my time to read my way through, and just wanted to make sure there's continued interest in this before I get in too deep. Thanks! |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
https://github.com/DigitOtter/obs_scene_tree_view now has a basic plugin to accomplish this feature. I'd rather see it built into OBS. Between nested scenes and 3 NDI cameras using each other as PIP sources, we have a lot of "occasional" and template scenes that aren't needed in Multiview but would be great in folders. There are so many videos of people making fake scenes to serve as section headers! |
Beta Was this translation helpful? Give feedback.
-
Pull Request Title:Feature: Scene Organization Tools Pull Request Description:Description: Changes Made:
Testing: Notes: |
Beta Was this translation helpful? Give feedback.
-
Scene Organization Tools
Feature Summary
Allow users to organize scenes in such a way that they can easily find the scenes that they need to switch to or edit during both preproduction and live production.
Background and Motivation
Most OBS users never need more than a small handful of scenes with simple, static layouts. However, it's not uncommon for a user's scene count to grow rather quickly as more demands are placed on their production capabilities and requirements.
In many cases, this functionality can be solved through the use of scene collections such that separate shows can use separate scene collections, but sometimes a single production can still be unmanagably complicated, necessitating organizational tools within a single scene collection. Furthermore, it's often impractical to change scene collections in the middle of a broadcast due to flickering and unprofessional visuals generated by the live loading of soruces, as well as the lack of an ability to select the scene that is activated upon switching to a new scene collection.
Oftentimes, the largest culprit adding complexity to a production is the OBS feature that allows users to add scenes as a source inside of other scenes. This leads to a usage pattern whereby many scenes are simply "component" subscenes and used to construct other scenes, but are never actually needed for the purposes of switching during a live production.
Users would like a way to organize their scene list to make it easier to find the right scene at the right time whether they are editing their scene collection before a broadcast, or trying to switch to the correct scene during a live broadcast.
Request For Proposal
Submit a proposal explaining how you will implement this feature such that it meets the following requirements:
obs_frontend_get_scenes_v2()
if anything. Something super simple if possible. (-Jim)* Multiple contributors may assist with implementation on different platforms and may split the bounty according to the level of contribution they made to the project.
Please read Tips for Writing a Good Proposal for guidance on how to author your proposal.
The OBS development team will consider all submitted proposals and select one submission to be implemented by the developer who submitted it. That developer will be eligible to collect the bounty upon completion of the project according to the criteria listed below.
Bounty
The bounty for implementing this feature is $2500.
You can learn more about the OBS Project Bounty Program here.
If you wish to contribute funds toward increasing the amount on this bounty, contribute to the OBS Project Bounty Fund and select the "Scene Organization Tools" option (or just click here).
Completion Criteria
You may collect the bounty when the following are true:
master
branch of the appropriateobsproject
repositories.Additional Information
Related ideas from the OBS Ideas Page:
Related posts on the OBS Forums:
Beta Was this translation helpful? Give feedback.
All reactions