 Hello, hey Everyone looks full of energy for the very last talk of the day, right? Yes So let's start then my name is Inez Almeida. I'm a tools programmer in the games industry. I work at guerrilla and I started my career at Blender actually so to just give myself a little introduction I Discovered Blender about ten years ago started tinkering with the cube gave up tried again Later on I got An opportunity with the Google summer of code to start Programming for Blender. So that was What really kickstarted me and I got more seriously involved later on at the time of the gooseberry campaign for the cosmos Andromaut open movie when the Blender cloud was getting made a bunch of time ago And that's how I got to know a lot of the people at Blender Which is how this add-on came to be so the edit breakdown idea came actually from Francesco And it's a passion project that we've made in the weekends that we thought would be helpful for the sprite-fried production And so I'll show you this add-on But I'm gonna start with the end of my presentation I had another plan, but then I talked to people and I realized that a lot of people are under the impression that this is about the watchtower and The watchtower is not the edit breakdown. They're very Friends Since they both have agreed, but they are not the same the watchtower which you can find more information about online is a viewer for like task tracking While the edit breakdown is much more of a tool for casting and creating the data Which can actually be then exported to the watchtower. That's a pretty useful combination So not the same this totally separate thing. This is about the Blender add-on version of the grid And I'll start by a tour of the features with an example from the sprite-fried edit And so the way this would typically go is to drag the latest edit like simply an export the last movie file Then we need to add a color strip and we need to mark it for using the edit breakdown and Then once that is done, we need to Mark the short transitions. So we simply play back the editors normal and we cut As normal playback speed obviously so it will take as long as the as the movie would take To signal every short transition We can then prepare an area to show the thumbnail grid. So this is in the sequencer as a preview And we click the sync button and then we have the thumbnails the thumbnails can be used to Navigate between the edit as a both ways as a kind of a shortcut to a place in the edit or also by setting it scrubbing the timeline And furthermore, we also have support for scenes or sequences or sets like a higher level concept of a Group of shots or maybe a story bit. So we can set them up In the in the in that panel and then we can assign Shorts to be as part of a sequence With the advantage of showing in the in the timeline area much more visual indication of what part of the edit This belongs to but also to show a grouped view of the thumbnails in the grid By clicking this option right here and then we have them per scene And the last special trick that the add-on does are custom properties So this is any data that might prove useful for the specific edit or movie This is an example with characters. This is these are strongly typed with predefined values It can also support numbers or text or Boolean options And Then we can tag each shot as having or not having a value of these properties The way that's typically done to assign data to the shots is with the tag tool So I make the thumbnails as big as possible. We're now tagging where the character le is So it really helps to basically just see the thumbnails. It would barely have to Scrub around to to tag something we've swapped now to rec So that's a different character and these are all like either the shot has it or doesn't have it So you can just hover over the shot and click or press one Zero or one to disable it. So that's super fast and While after all this data is finally gathered we can Get statistics, which is the really fun part So you can just copy it split into columns and then you can go crazy on it and get any kind of charts or data So to recap that was Other color strip to the edit slice it up to match the shots or whatever is interesting then we can create a grid There's visual gripping with scenes and they're starting off shots with data and then you export and I am Very happy to have here Some spreadsheets that Francesco shared from the actual production of sprite fright. So that's super cool This is One of the spreadsheets that he's used it has like the a special formula to retrieve the thumbnail Data that I don't also created you can create histograms for animation quota with it and And you also can see it at the bottom. There's multiple versions as the production product progress And then there's also different focuses. So there's increasingly more data or the date You can see that the focus of the data shifts depending on what was interesting to count at the time and You can see character breakdowns. You can see Focus on crowd shot size, which was a concern at some point. There is a shot durations. You can also see Just ahead as the other and also evolved with with the spreadsheets that got created at some point We got the the scenes and then you can also see them. I think it's this one. Yeah, I'm more and more data And which is also it was always regenerated it's easier to just start from a blank edit and tag everything again then try to save or match previous versions and here the scenes start to get into consideration for the chart And that's what I have for the features but I've also selected some bits of technical interest for the behind-the-scenes development and The first one on technical notes would be about making an entirely new view mode. So we have a Grid view sure and now where do we put it in blender where? Where and I thought well this makes it's a part of the sequencer So ideally for me, I would I would like to put it there as a new mode But that's sadly not possible via Python add-ons. We can neither extend existing lists Nor make entirely new editors, which is commonly seen when someone wants to do like a new re-control editor or something like this So that's that was it what we do instead Well, let's put a toggle somewhere else. I Try to put a toggle somewhere also still in the sequence editor Since that can be Per instance of the of the editor and toggle independently that makes sense. It fits the UX good enough So there I go full of hope others other property to the sequence editor space that I can toggle but Editor space data cannot be extended either. So that's also not working I could make it visually work, but the property has to come from somewhere else so I Just reused existing properties. I tried to pick Properties that are used in the sequencer view not on the preview view so they wouldn't conflict But it's really really suboptimal because I am now setting other things in blender's data Just try to pick something, but it's Suboptimal But in either case we got our toggle it works it toggles So how do we make the grid and this as far as I know is the most typical solution and it's to just Draw over the editor with open GL directly. So you just draw The thumbnails everything on top, which is what I would like to call the nuclear option because it just draw a Big fat gray rectangle a very precise gray that matches blender's background Then you add the thumbnails also view open GL and then you add like the tags from the tool and and etc this Is called the nuclear option for a reason it's not Definitely not ideal for performance is the Preview is still there. It's still running and it's also still active in terms of tools. I'm just hiding it but still there But as far as I know this is this is how How it's done most of the time and it's an interesting approach So I I wanted to share it here if you would like to see more or implement your own nuclear options, please go to view.py and Check check those functions Also as a bonus there is if you want to like fit fit thumbnails in a space to take as much space as possible And look nice. You can also check check that file Proceeding for the actual drawing of the thumbnails so We have a grid we can draw it, but where do we get the actual thumbnail image from? And this this is done so per shot per each of the color strips and the way I do it is to render From the sequencer nearly as normal. So it's basically a lower resolution But it's the sequencer that renders it and here's the code how it can be done has a neat trick. I I used that override render settings that Applies the settings and then restores them once everything is rendered as back as it was before without damaging the setup So then we go over each shot. We render it Pretty low resolution for the spread thread edit. It takes a second sometimes to depending on the resolution If you start increasing the resolution, then it takes it takes longer Or if you have a longer movie, of course And this is also safe to disk the reason I need to save to disk is That the blender open GL add on needs a bind code of blender Images to actually draw these things as far as I figured out So we need to have it as as an actual blender image and On disk so to also restore it which is also goes nicely with the spreadsheets that then all for this information This is not so great. However for image UI pollution because it generates a large number of Images with zero users, but it's it's not great I also did not manage to To make it sync automatically So I have this manual sync button and then we go over all the shots and we it's it I couldn't find I Tried a couple of times to register to the dependency graph or the the message bus But there's always some missing event and something gets out of sync and I just couldn't get it to To cut the strips and just pop the thumbnails magically if anyone has tips on how to do that or How to do the generation unsynchronously that I'll be super happy to discuss that And To the next technical topic would be using workspace tools and I mentioned this I think this was one of the biggest struggles I had and I believe is not very commonly used in other atoms I've made two tools one for selection So this tool needs to from the mouse coordinates know which thumbnail are we on either from the grid view or from the grouped view and And so it reacts to clicks and then the tactile reacts to either clicks or the numerical input to set the values and I found Quite quite difficult to get this to work because I didn't find many examples Which is why I wanted to mention here because trying to add to the pool of examples It's not so easy to figure out how these are ideally supposed to be set Conceptually the way I've done it is to have always an operator and a tool The operator has the most of it of the all the action maybe the actual tag and then the tool has the Input configuration Which is basically a key map. This is the one for the tag tool So it starts with the with some selection. I'll get to that and then to the values just clicking or Zero one two puts a value of zero one two then in the operator So the tool is is a very for my add-on are very simple wrapper And I also made it so that the tag tool uses the select tool for clicking so I wouldn't have to repeat that which means with the tag tool on and By I also chose to use right-click select so I can right-click a thumbnail and left-click to set the value Without having to switch tools, which was pretty fast But I didn't find an easy way to have this more dynamic like according to user properties or a More dynamic configuration of how these usability is supposed to go In either case sticking to this very blender like usability principles the workflow is super fast I'm quite happy with it. I Would really like to have more Examples and viewport widgets documentation because I think they're very cool to create this kind of Isolated Usability modes, which would order with the blender apps that will be super nice, too And then I have my last technical bit which is on creating the custom properties And these are Very complicated. So my personal pro tip advice is just I did it because I found it really fun and and The they're very very similar to the blender custom properties that are at the bottom of every right-side panel the difference is On the configuration of the UI They both have some strong strong ish mine are a bit stronger than than than blenders on the type checking but they both allow setting a type setting Minimum and maximum, but I really wanted to have the multiple choice With the enum values of the characters or a single choice for I can assign E which is also multiple options then And for that I had to make quite a custom property system which took a Significant part of the add-on development So the my learning from here is don't try to do your own programming language for no reason unless you have fun doing that it also It was tricky to do because they're their ID properties and they're dynamically registered and they can be changed while they're used as well But I will not I'll keep my secret secret in my free software which you can get from GitHub so please if you if you'd like to Make your own version of it or to use it just get it from there It's free. There is no plan development, but I always keep an eye on on people's input And that's it. Enjoy and share how you use it