 Hello everyone. So welcome to this talk. This talk is going to be about the Blender Studio pipeline. So we're basically going to be covering from scratch how things are set up at the Blender Studio. I'm going to give you a demo of the workflow. So my name is Nick Albarelli. I am a technical director at the Blender Studio. Like I said, I'll be demoing a simplified version of our production process. And so this talk is really for anyone who wants to deploy their own studio infrastructure modeled after the infrastructure that we use at the Blender Studio. So let's get started. This is a very simple diagram that explains what we're going to be covering today. Pipeline means a lot of things to a lot of different people. But in this talk, we're going to be focusing on the editorial to animation and back workflow. So I'm just going to cover some key concepts here. So if we start this diagram on the left and we have our Blender, that would contain a video editing sequence. So you can imagine you have some sort of storyboard or some sort of pre-vis video that you would assemble inside a video sequence editor. And directly from there, we're able to, and these are all things I will show in the talk, directly from there, we're able to upload our shot data to Kitsu. Kitsu is a project management software we use to assign tasks to different artists. It is also open source. You can self-host it and all that really, really fun jazz. It's made by the guys at CG Wire. And when I say shot data, I mean the name of the shot, when it happens in the film and for how long that that shot happens. Once we have all that data stored into our Kitsu server, we can then use that data or reference it to actually build the production files that you'll use in your production pipeline. So that will include your animation, lighting, compositing, all those files that you need. And we have an add-on that will build all those for you. And once all of the beautiful artistic work has been completed, you will be able to send those files to a render manager. We use the awesome render manager Flamenco. And once those renders have been completed, you're able to review them and then re-import them back into your editorial file. So it's like you go from an editorial file that has just a storyboard. You send it all the way to animation. Maybe you get some playblasts to review those playblasts during production and then you load all that stuff back into your editorial file and you have a completed movie. So that's basically what we're going to be covering today. I have a few more slides to do and then we're going to go into an actual demo. So if you want to follow along at home, this is really more for the YouTube viewers, but we have two really important pages of interest. We have one called a setup guide and we also have a usage guide. So the setup is something that you wouldn't be able to follow along with that during this talk because there's a lot of setup to do. But I will show this page quickly. But the setup is essentially how to get to the point that I'm at now before we actually do any pipeline work. And the usage guide is essentially a step-by-step document that will give you the exact same steps that I'm going to do in this talk. So if you really hate the sound of my voice, you can just read your way through it instead. So let's just hop over and take a look at what that looks like. So we have here the Blender Studio website. And let me actually go even farther back. So you would land here on the wonderful, wonderful Blender Studio website and you would select Pipeline. And under Pipeline, you can click User Guide and that will bring you directly to an overview page. Over here, we have this page called TD Guide. And under the TD Guide, this is a page that covers essentially how to deploy all the tools that we use at the studio. And I will be covering some of the topics in this page in more detail in a second. And you would basically follow this guide to generate the folder structure that we use at the studio, which I'll cover in a moment. And then you would set up your Blender, distribute that Blender to all your users, set some add-on preferences that are very important, and then you're ready to get started. The usage guide covers essentially what we're going to do in this talk, which is essentially what I showed in that diagram, which is taking an edit, sending that data to your Kitsuit server, creating some assets, and then creating some shots with those assets, creating playblasts for those shots, all the way down to rendering those things, approving those renders, and then loading those back into your edit, and then creating a final movie. So it's going to be very information-dense. I will be going a little bit quickly. There is a ton of data to get through. So we're going to start with... You saw that this word in the last slide. We have this thing called Project Tools. And Project Tools are a collection of scripts that we use to manage and deploy productions. So when you start a production, you would go into the Project Tools and you will generate a folder structure. That's the first key feature that it has. It will generate the folder structure you need for a production. And the Project Tools are really important because they allow us to synchronize which version of Blender, all the users that are working inside this production are going to use. We can synchronize the Blender version across multiple operating systems. This will work on Windows, Mac, and Linux as long as you have Python installed. And your Blender preferences will even be stored on a per-project basis. So I'm going to just show something on the side here. Essentially, I have one right now, but if you were to search in your toolbar here, Blender, I have Blender with the little name MyProject. So if you imagine at the Blender Studio, we would have Blender Pets. Blender... I don't know why I blanked right there. You have Blender Pets, Blender Charge, Blender Spring, et cetera, et cetera. So that way you can have custom preferences that are specific to each production. And that might be because each production requires different add-ons or different configurations or keymaps that you want to save and quickly swap between them while you're doing multiple projects at once. So that's sort of a quick overview. I'm now going to show the folder structure. So like I was saying, we have these project tools. One of the project tools is this initialized project folder structure Python script. And you would just point it at a directory where you want to create your project. And it'll create the top level of this folder structure I'm showing here, which are the folders. You have a project folder at the top with the name of your project. And then you'd have the directories local, shared, and SVN. And this is how we break up data at the Blender Studio. So the SVN directory, the way you would set this up is essentially a TD, would set it up so that the SVN directory is connected to some sort of version-controlled repository. Obviously we use SVN at the Blender Studio, and that's why it's called that. You could also use Git LFS, or you could use Snapshotting or any sort of software that allows you to have version control. And that's important because your blend files will go there. We have another folder called Shared. And this is usually for larger files. And so we would use something like Dropbox SyncThing or a network file share would populate that directory. And then we have another folder called Local, which is basically it has Blender and your add-ons in it, but I'll explain that in the next slide. So next slide. So with Project Tools, you don't actually just go to your Blender Blinery and run it. Instead, we run Blender through scripts, and we also update them through scripts. So you're not going to just launch Blender from the folder that it's in. And the reason we do this is because, like I mentioned, that shared directory is shared over either a network or it's shared with Google Drive or Dropbox or SyncThing or some sort of sharing service. So when somebody updates Blender, it will download updates for every operating system into that shared directory. And TDs can customize what Blender branch that you're going to be updating from. And that way, that shared directory is synchronized to all the users. And then when you use the script Run Blender, it will actually copy that Blender binary into your local directory, as well as any add-ons that are global to your production. And that way, you know all your users are going to use the same version of Blender, and they'll have whatever add-ons that you expect them to have. So let's just talk about what's actually in the folders because I've been talking a lot about how you set them up. But essentially, what we do is we put all of our .blend files inside the SVN directory. That would include like animation, lighting, compositing, fx, et cetera, as well as the master editing file that I was talking about in the first diagram. The shared directory is, again, for things that don't need version control, so larger things like playblasts, your Blender binaries that I mentioned earlier, and also the actual rendered frames that you're going to create. And I'm going to show that now, actually, so I have... So here is my project. The important directories here are the shared SVN and local directories. I also have this directory called render here, which is an optional directory that I'll explain why that exists later. But essentially, inside your SVN directory, you have your edit, and this contains my edit. And then I have a production directory, and inside here I have my shots and all that kind of jazz. And when you use project tools to generate this folder structure, you also get this tools directory. And this tools directory has those scripts that I was mentioning, the run Blender and the update Blender, as well as a bunch of other scripts that are really useful. So, again, I can't go into too much detail on each individual point, but the idea is that you get a collection of scripts that will manage what Blender version everyone is using. And you put your blend files in the SVN directory, and you're shared documents in the shared directory. So I'm just going to cover some important preferences that if you're following along at home that you would be setting or what users would be setting. So we have an important add-on called Blender Kitsu, which is what we use to interface with our Kitsu project management software or server. So you would obviously just log in in the add-on preferences, and then we set some important directories. So that SVN directory I keep mentioning about containing our blend files is the root of our production as far as Kitsu is concerned. And then you would tell Kitsu that we have a playblast directory or a previous directory where all your playblasts are rendered and another directory where all of your frames are rendered. And we have one other add-on that's very important, which is the render review add-on. It gets very similar settings set into it. So the shots or the playblasts and the frames directories are the same. And we have a farm output. So this is optional. We're going to start the demo at myproject.render for the simplicity of this demo, but you can put your output directory from your farm wherever you want. This is where the renders from Flamenco will show up, and we're going to see that all in the demo in a moment. And that moment is now. So we're going to start the demo. I don't know how readable this is for everyone in the back, but I will just use my mouse and my words to explain. So we're going to be filling in this diagram as we go through the demo. But when we start, what you have is you've generated and followed the TD guide to get everything set up. And the first step is to create a blend file with your previs or your storyboard or whatever data is going to inform the artists of what they're creating. And you're going to decide how long each shot is, right? From there, we're going to send that data to the Kitsu server. And that is the first thing I'm going to demo right now. So we can use the runblender script or in the project tools. It also allows you to create desktop shortcuts, which is the shortcut that I was showing earlier. I'm going to launch Blender that way. So as you noticed here, Blender didn't just launch on its own. It launched through this console. And this console went ahead and did some updates. It made sure that all of the add-ons that we use at the Blender Studio were loaded in and are all up to date. It lets me know that Blender is updated. And this way, if someone else had updated Blender and you downloaded that update from Dropbox or Sync Thing, you would know that you're always on the latest version. Speaking of latest versions, yes, I'm a few behind. But this will work on latest just as well. So the first thing we're going to do is go ahead and find that edit that I made. So inside my project, I have this SVN directory, and then I have the directory edit. And inside here, I have this test production blend file that I made. And what this is, like I mentioned, is just a VSC sequence with some previs in it. So if I play this, yeah. It's just some poses, right? I just created this for the demo. But the idea is that these are the poses that I want the animator to hit during this production. And this production is super complicated because it just has one shot. I'm kidding. It's very simple. But we have this simple production here. And once again, if you're following along at home, this is where you would start following along with the usage guide to actually get things set up. So we're just living in this Blender. We have our add-on preferences set. And we want to tell the Kitsu server what this shot is. So I'll select the shot. And we will create something called a Metastrip. A Metastrip is a representation of the shot's length and position between this Blender and the Kitsu server. And this is how we're going to synchronize data to the server. And I will actually go ahead and show that server right now as well. So like I was mentioning, Kitsu is a project management server. I have one big project here called MyProject. In this project, I've already created some assets. To create assets, there's just a simple little button here. And you're just typing in the names of the assets. And if you're unfamiliar with Kitsu, project management software, look at all these awesome features that it has. And basically, it's just for managing your production. In our case, we're going to have all of our shots. Oh, okay. We're already making a mistake. So just give me one second. I need to do something very, very simple. I'm going to... Yeah, no. Okay, you guys are all going to see this. It's fine. Okay, so let's all pause our brains and close our eyes for a moment here. I just need to shut down my VM and reset it. That's fun that I already made a mistake. Okay. So just give me one second. Oh, no, I shouldn't have clicked that button. I didn't want to save the state. It's fine. Restore. Don't take a snapshot. Restore. And I'll start. Okay. Let's head back here. And I'll just refresh this. Yeah, so things happen. You know, there's always something that goes wrong in a demo. And if this is the only thing that goes wrong, then I'll be very happy. So we're just going to give it one second because it's just rebooting. But essentially I'm just self-hosting this kits you project here on my computer, but you would set it up on some sort of server that you have in your house, or you can pay for posting if you're that kind of person. I know very creative email that I have here. All right. And let's cross our fingers and this break. So that's open your eyes, turn your brains back on. So we're in kits you and we have no shots as we just have this adorable little fox here and it tells us that we have no shots. So I'm going to go back to blender now. And the idea is that I want to populate that page with some shots. So I am going to click the initiate or initialize a button. And it lets me select a sequence. And I just have to restart blender because I restarted my kits you server. So we're just turning our brains off one more time. Great. Okay. So when we initialize, we were allowed to select a sequence. I created one simple sequence for this production and we're going to give our shot a name. You can name it whatever you want, but I'm going to name it essentially shot one. And now we select our strip and we can select this submit new shot button. And this button will essentially upload the timing of this shot and the name of the shot to that kits you server. So we can select, yes, we're going to submit the shot to the server. And then we're going to create the default tasks for this shot. And the tasks are the tasks that you would assign to different artists. So I'll just hit okay. And this will create that metastrip. And now if I hop over to kits you and refresh. Yes. So we have a shot with the name shot one. It has the timing that I had set up in that edit. And we have these tasks here for animation lighting and effects. So that is this first step, which is setting up or sending our shot data up to the kits you server. We're going to be building shots automatically with blender. So we told blender or we told our shot builder what shot we want to build and when it happens, but we don't know what characters or what assets are going to exist in that shot. So that's the next step, which we're going to do on the kits you server. So in kits you we are going to head down to break down. And this is where you can assign assets to different shots. So we're going to select one of our many shots here. And we have two characters that we're going to assign to this shot, which are the characters rain and snow, which are demo characters found on the studio website. And we're going to also assign some props to it. So I have a bar counter and a shot class that I'm going to use during this during this shot. And that's essentially the step where we assign our assets to the shot. So now we're ready to build the shot. And just in case anyone can see, I should have been doing this already. But over here in the bottom left is essentially our editing file. This diamond shape here is our server. And this blob on the top here is representing whatever assets that we have. And those are all coming together to make our animation shot. And inside of our animation file, we're going to be linking in and overriding all of our characters. And that's where our animators actually going to do all the animation and actions. So to build a shot, we're going to go to I'm going to save this. We're going to go to new and general. And now, as long as you have the blender kits you add on setup, you're going to have some extra options here in the new section. We have this new shot file button. So when we select this, it allows us to build a new shot. And here we're going to select one of our many sequences and one of our many shots to decide what shot we're going to build. And then we're going to build, we're going to decide what task type we're going to build. So in this case, we're going to build an animation task. Later, we're going to build a lighting task. So if I click OK, it does some little thinking. And we end up with this blend file. What it has is our characters in wonderful, wonderful t-pose. And in the top left of our blend file, we have that pre-vis video that I was discussing earlier. So that will also be loaded in. And we have this important, we also loaded in a camera rig that we use at the Blender Studio. And we have this animation output collection, which doesn't need to be enabled. It just has all the same assets that are in the scene collection linked into it. And that collection is going to be referenced by our lighting file that we're going to build later on. That's how the lighting file knows what is important to actually pass down the pipeline. So if there's something that you were just using as reference or something that wasn't important to actually render, you would leave it out of that animation output collection. All right. So I'm sure everyone's really excited to see me animate this, but I'm not going to. We're going to pretend that there's some really, really friendly animator in the back somewhere, and he's going to be doing some work for us. So I just have a little script that I'm running that this is just for the presentation. But essentially we can imagine, oh, hey, our SVN or our whatever service that we're using to sync files has been updated. And now we are ready to reload this file and see our animation. So I'm just going to revert this file and windows a little bit messy, but now we have our animation. You can see all these keyframes here and we can see our character moving and talking and all the wonderful things that animation productions occur in. And now we are done with the step of building our animation file. So this purple area on the left is the SVN directory, which is where all the blend files live. And this dark green area on the right is going to represent that shared directory that we were talking about earlier where all the larger files live. So what's going to happen is we want to create a play blast, a preview of our animation, and we're going to render that to the shared directory. And then because obviously this is all about the editorial workflow, we're going to load that all the way back into our edit file so that we can preview it in the context of our movies edit. So let's go ahead and do that now. So I just need to refresh this. So this is the kits you add on. There's lots of amazing options here. But the one that we're going to focus on is this create play blast button. And when you create it, when you ask for create play blast, you get this little dialogue here. So it's going to make a lot more sense if I go and show you the kits you see over first. So the idea is we have this shot here and we have this task for animation that is set to do currently. And a lot of people when they use kits you what they do is they write some comment here like animation is done. You would assign a new status to the task. So you can say, oh, the task is done. I'm waiting for something. I need an approval. There's I'm going to retake this, whatever the status you want to set is the statuses are to come with kits you and maybe you would attach a file. And that file might be your preview video that you want to share with the rest of the team because this is super accessible and essentially where all your producers live and tell you what to do. This dialogue here is essentially the exact same thing but built directly into blender. So we're going to select done because the animation is now done. I'll leave a comment with that exact information inside of it. And we can also set a thumbnail for our shot. So this is where the thumbnail would live. Right now it's empty right now it's empty. So you can select a frame that you want to assign as the thumbnail by default. When you open this dialogue, it'll just take whatever your current frame is. This frame is a little bit silly. So I'm going to use the first frame instead. And when we select okay, we are going to now create a viewport render of this shot. So we're just going to give this a second because it's going to process. But I hope everyone's following so far. But like I said, it's a lot of information. And you can always rewatch the talk and follow along on the documents that go into a little bit more detail. And you can also email me questions at nick at blender.org if you have any. So this is just going to process. So we're going to give this a minute. So the playblast is done playblasting or it's done the viewport render. And now I can tell by the little symbol at my cursor that we're just uploading this to the kitsu server. Things go a little bit slower in this context because I'm doing the I've got a whole production just sitting on my laptop here. All right, we got the message. The playblast is created. We can head back to the kitsu page. And now if we refresh, we can see that we have our shot. We have that thumbnail that I set. And we have a comment here. The comment says that the shot is done. We can see the video that we set. And we also have the text of that comment that we said here. And I'm going to give myself a like, okay, it's a great job. Okay, so now we're going to go back to our editing file. And we're going to load this playblast into our edit so that we can review it and make sure that the animator did the right job. So in this context, we don't have an operator that does this. You do have to do this manually the first time. But once you've played blasted one shot, or yeah, once you've played blasted the shot once for each task for animation, lighting, composing, etc. Once it's done once you can automatically update it with an arrow button that will only appear once I've actually loaded it. So I should have said that later. Okay, so back to that folder structure. We have that shared directory inside shared. We have our editorial directory inside editorial. We have a directory named footage. And inside footage we have shots sequences and frames frames is where the actual final renders will live. But shots is where we're interested in. Then we have the name of our sequence. So if you had multiple sequences, you would see them all here. Then we have the name of our shot and the name of our shots task, which is animation. So it's the shot name plus animation. And finally, here is our shot. I'm going to import it without sound because we already have the sound inside this editing file. And now inside of our edit, we have our animation. Things are playing. Everything is beautiful. Everything is great in the world. And if we had additional play blasts available to us, when the animator creates additional ones, you can use this up arrow right here to update to those. So now we have completed this task, which is loading our play blast all the way into the edit. Next, we're going to build a lighting file. Our lighting file is going to be referencing our animation file. So let's go ahead and do that now. I might have to speed the pace up a little bit here because we've already covered 20 minutes. So I'll save this and we're going to go to a new general file and a new shot file. All right. So we're going to select lighting as our task this time and select OK. Go through the same process. And now what we have is that one collection I was mentioning earlier, animation output is now linked into our file. And if I play and I hide all this craziness, you can see, right? It's the same animation that we were just looking at earlier. So we're going to go through the same process and imagine that we handed this off to some amazing, amazing artist that works with us that is going to actually do all the work. And I'm going to just update the file. And now when I reload this file, because the artist has posted their new update, we get a copy or rather we get the same file, but now it has a bunch of wonderful, wonderful lighting in it. So if I just turn the lights on and off, we can see that there's some lighting and amazing. So let's go back to our slideshow. I know it's a lot of whiplash going back and forth. Now we're going to go through the same process for our lighting file. We're going to create a play blast and load it all the way back into our edit. And this time I'm going to cover this pretty fast because we don't want to dwell too much, but we're just going to do the exact same process, which is going to play blast saying I'm going to create a play blast. I will say that the lighting is done. Lighting is done. And I'll use this current frame as our thumbnail and say OK. And this play blast will take slightly longer, but it'll be great. It'll be worth it in the end. Yeah. So essentially this is just doing a viewport render, like the same as if you were to click the view and then render animation. So it just renders whatever you're looking at in your viewport. And then it will obviously upload it to the kitsu server as well. And so last time when we created our play blast, we had this animation task set as done. And this time we expect that our lighting task will be set as done this time. And I just need to add lib for another 20 more frames and then we're done. So the render is just about done and now we're just waiting for it to upload. But this will be the slowest part of the talk. And then we're going to pick up the speed in just a moment, waiting for a load. You would think that the loading would be much faster because I have everything hosted locally on my computer, but it's not. It is what it is. And once this play blast is done, we're going to go check it out on kitsu. And then once it's loaded into kitsu and we know everything's working amazing, we can go back to our edit and load it in the same way. And then we're going to move on to the next step. I don't have to talk anymore. Great. Okay, so there's our lighting task. It's marked as done. There's our wonderful, wonderful lit play blast. Everything is wonderful in the world. And if I go to our edit file now, because like I mentioned earlier, we are going to now do this step, which is taking our shot play blast from the shared directory all the way around and into our edit. This is our edit. I'm going to make a little bit of space here. And because lighting is a different task, I have to go through the same process of manually loading it in. But then I will be able to automatically update it in the future, which is something I will demo. I'm not just going to keep talking about it. It does exist as a feature. So select lighting and same thing. No sound boop. There. Shots updated. Timing is correct. There's our wonderful, wonderful lighting. Everything is amazing in the world. So that is, that is this step all completed. And now let's pretend like you've done all of those steps for like a Jillian, all the shots that you have in your production. And now you're saying, okay, everything's great. I need to now do our final renders. So the next step is going to be sending this data to flamenco. So flamenco is our render manager. And we have an add on that we have in blender. And that's what this shape is here that we use to send jobs to flamenco, which is this diamond on the top right here. And flamenco will render those frames. It'll create an image sequence and it will create a preview video of the image sequence and dump them wherever we have our flamenco storage set to, which in my case is that my project slash render directory I mentioned earlier. So we're going to go back to our lighting file. So I'll select my lighting file. I will say I will should save probably good computer decides to revolt and be slow. That's fine. So when you have the flamenco add on enabled flamenco, you just need to install the add on and it'll give you this menu here. We have this little box in the bottom. And there's an amazing talk by Dr. Subrin that covers in more detail how flamenco works. Essentially, we click this fetch jobs types button and it asks the flamenco renderer or flamenco render manager what job types are available. By default, it'll ship with this simple blender render option. And this is the one that we're going to use. And we have some important settings that we have to review down here. So chunk size will be the amount of frames that are rendered by each task by flamenco. In this case, we can leave this as a default. The frames are surprisingly the frames of our production and the range is correct already. And this output directory, I keep mentioning it. We're going to set it to data slash my project slash render, which is currently empty, but we're about to populate it. And adding path components will basically recreate the folder hierarchy of our current blend file. This way our render directory is actually nicely organized. So I'm going to set this to three, which will recreate the three folders above this file, which is the name of our shot, the name of our sequence, and then this directory called shots. So we hit submit to flamenco and this sends everything to flamenco, surprisingly. And just wraps it all up and we got a blue thing and everything is wonderful in the world. And now when we go over here to flamenco manager, we can see our task has already started. Flamenco works by rendering with multiple workers they're called. So you could have multiple work stations contributing to the render at once. Sadly, I just have one. So things will take a little bit longer. And now we're all going to sit here for 10 minutes and silence while this finishes. I'm kidding. No, I'm kidding. So we're going to cancel this job. We're all going to just pretend in our minds that this render happened super, super fast. And I don't actually have, we're going to pretend like I don't have a script that's just going to do this for us, because yes, I did do this at home earlier already. So I'm just going to copy in what the final render would look like into that directory. And please behave. Thank you, sir. And now when I head over to our directories here, if we look inside render, we now get that hierarchy I mentioned. And then the name of our shots and then the name of our sequence and then the name of our shot and then the name of the task. And Flamenco will create timestamped renders. So if you keep re rendering the same file, you will have multiple folders with these timestamps in them, which is really convenient so you can go through and organize. And now I have a big directory filled with a huge image sequence, one in JPEG and one in EXR, and that preview video that I mentioned. So right now this is just living inside the Flamenco storage area. And the next step, one of our final steps is going to be second final. There's our little counter telling you how far we are on the demo. Our next step is going to be to take whatever Flamenco just dumped out and we're going to populate it back into that shared directory. You can imagine that you would do tons of Flamenco renders, but you don't want to distribute those to all the users. But once you've decided using our render review add on what you want to approve, then you can copy the add on will automatically copy those things into the shared directory for you. So that preview video will essentially act as a play blast and the image sequences will be copied into the directory frames. So let's hop back over to Blender. So because we have render review enabled, we have this extra option in the new section. So we're going to select new render review and render review works on a sequence level. And so I'll select one of our many sequences that we have here. And if you're working over a network, you might want to use videos to preview things. But thankfully I'm working locally off this laptop so I can just open it like this. So if you had rendered multiple Flamenco renders, you would have multiple of these yellow image sequence strips. And if we look here, we can now see that we have our final render. And I won't say that everything's right in the world again, but I've said that too many times. We have this button here that says inspect EXR, and this just lets us open an image viewer. And we can just go into detail and look at how pixelated and low res that I rendered this to make things fast. But you know, it is what it is. And we have this important button here, which is called push to edit and approve render. And this is the button that will copy those things and do the step that I just described. I don't have to repeat myself a million times. So we're going to select this and it will copy that. Okay, I am repeating myself. We're just going to copy that preview video into the Play Blast directory. It's going to copy our frames into a frames directory that we expect that we can load into our edit later. So I'll just select okay. And this does all of the copying. I select it. Yeah. And now if I close our render directory and I go inside shared editorial and sorry shared. Yeah, editorial footage. There we go. Our shots directory now has two videos inside of our lighting folder, our lighting task. And inside the frames directory, we now have a similar folder structure and that contains our lighting task with our render from Flamenco. See, so that's all great. We've done that render, but it's just living in that shared directory. So now the final step that I'm going to the final step I'm going to go into detail on is to take all that data loaded all the way back into our edit. So let's go to Blender. We're going to return to our test production. I don't need to save this review. And I'm going to move the Metastrip up one more time to make a little bit of space. And now I can finally demo this button. So if you select the lighting file and you click this up arrow, it will move up to the next Play Blast that's available in that directory. In our case, it's the preview of our final render. And if I play it, everything is looking great. So if you're actually creating your final render, you obviously don't want to make it off of this preview video. So we want to load that image sequence that we approved with the render review out on. So I have this button that says shot as image sequence. So I select this and we can choose which channel and which file type we want to use for our image sequence. This will work if you select multiple strips. In most cases, I would imagine you would have multiple shots. You select them all at once. And when I select OK, yeah, it worked. Had a bug there earlier. Now we have that image sequence loaded into our edit file. So now we've gone from that preview, that Previz video that we had in the beginning. If I hide these, yeah. So we had our Previz video. Then we had our animation Play Blast. Then we had a preview or let's actually go down. Then we had our lighting file and our lighting Play Blasts. And finally, we have our final render that we did with the Flamenco manager that hopefully went very fast. And this is now our final assembled edit where we have all the nonsense loaded into our VSC. So you got two options here now. Most people might want to just render normally with Blender. You can just use normal export and you can customize your settings here and make sure it's high quality and get it out. Or there's another step that I'm not going to demo, but I am going to explain, which is please behave computer. Thank you. On our project usage page, we have this really, really long guide here called Final Render. But what this essentially, what we're doing at the Blender Studio is we render the film out of the VSC as a PNG sequence. And then we render the audio as a separate file. And those both go into a directory named Deliver. The reason we do that is because if you want to update little bits of the film as you're getting near the end, as often happens, you just need to update those frames instead of the entire file. And then we have a script that's delivered inside the Blender Studio pipeline repository that will mux those two together and give you your actual final file. So if you're really, really into Blender Studio and you want to do everything exactly the same, you could follow these steps as well. So that is the entire editorial workflow that we use at the Blender Studio. And now we have some time to do little questions if you guys would like. But that's it. Yes. For the size of the products that we use at the Blender Studio, we haven't had a problem yet, but we're always innovating and updating things. So if we ever changed things, you would get those updates because I'll be updating the documentation that I directed you guys to. But essentially, things have gone pretty smoothly. The biggest challenge is syncing all of the playblasts. But we self-host sync thing at the Blender Studio and it's pretty efficient. The biggest complication you might have would be if you want to set folder permissions for different people. That's not something that we do, but it is possible to do. But that might make things a little bit more complicated. Yes. Let me just hop back. Yeah, I understand the question completely. So the question is, I loaded a JPEG sequence as the image sequence that we did here. And you might want to use something more detailed if you're going to do color grading. If I select this guy again, I actually had both available to me, so I can select an EXR sequence. And in the file that you send to Flamenco, you can set your EXR settings for what compression level that you want. And I can do the exact same thing with this and I will load the EXR version of the image sequence. Does that answer your question? We can't really play the EXRs in real-time, which is why we have the option to do JPEGs as well. But most of our color grading happens at the compositing stage, which we do on a shot basis, right, Andy? You also do it in the edit. So how would we... But we wouldn't get it in real-time. Yeah. Yeah, so as far as real-time color grading goes, we don't. Yeah, because when you... Here, the simplest way to do that, and I think this is what Andy has done in the past, because I have this operator, you can just import both versions into the edit and stack them on top of each other, and then hide and swap, because at this point, your edit isn't changing, so there's no stress there. But yeah, that's how that works. Thank you for the question. If we don't have any other... Oh, yeah. Yes. So it's just a bit of... It's actually... So the question is... Yeah, yeah, so the question is, my Previz video already had some characters posed, and could you reuse those poses? The answer to that question is that I faked that Previz, and it was actually just this image sequence that I put into Matcap, and I rendered it. So in most cases, we would just have a storyboard or something like that, and that's why starting from a T-pose is totally fine. But if you did do Previz, you would just be able to, and you use the same or similar rigs, you could load the actions for those rigs from the Previz files and into your production file. That would be the way that we'd probably handle that if there was an option. What did you say? Yeah, but you'd have to do that manually. It's not part of the pipeline. But it's an interesting feature if we integrate more Previz in the future. Yes. Okay, so the question is, do you see different versions of the... How do we handle versioning, essentially? So every time we update the file, we save an SVN checkout. So if you wanted to go back in time, we would revert with the SVN. As far as alternative versions, we don't normally do alternative versions, do we? But in Kitsu, what you will have is a history of all the comments and playblasts that were uploaded. So you would... Did I repeat the question, actually? No, yeah, I did. So in Kitsu, you'll see all the different versions of the playblasts in time. And yeah, I'm trying to think here. Normally, have we ever created an alternative shot, like an alternate first, the same shot? In layout, yeah. Make it a new shot. Yeah, so if it was going to be a totally alternative version that needed to exist while the original also existed, we would make it a separate file. And otherwise, we just version up with SVN. And if someone has gone too far, we revert the SVN back in time to get the older versions. And we would decide which version to use by reviewing the comments in Kitsu and looking at the playblasts. Does that answer? Yeah. Sorry. That's how we work, yeah. But you could, in theory, check out only parts of it if the artist needed that. But at the scale of the production that we do, we just check out the entire thing. Any other questions? Yes. Yeah. Okay. Actually, I think I can demo this quickly. So the question is how do we handle new shots or inserting shots? And I assume you also are wondering, basically, if the shot timing changes, what happens? Yeah. What does it do? So we have a naming scheme where we basically every, like, if you see how I named the shot, it's not shot one, it's shot 10 in a way. So as far as adding the new shot, we would use that extra zero at the end to insert that name. But it also brings up the question of what happens when the timing slightly changes during production. So if I just go sort of back in time here and remove some things. So let's say I had just this animation and I had this metastrip and I wanted to either shift it in time or for my sake, I'm just going to move it backwards a little bit. So this is where the metastrip comes in handy. So let's say I've moved my animation file and I've decided that this is how long it should be instead of the length it was previously. I can select the metastrip and we have a button to push new metadata for this strip back up to the server. So I will select that button. And when we go to Kitsu, so our shot right now is out at 157 and the length is 156 frames. Now when I refresh it, because I pushed an update, the length is now 136 frames and it goes out at 137. And now if I were to go to my animation file, it's funny, this is something I cut out of the talk. So now if we go back to our animation file, where's the button? We have a button here that says pull frame range. Let me just revert this reload it one more time. It should get mad at me. There we go. So I get this big red button here that says, ah, no, stop. It's the wrong timing. And you have to select this pull frame range button before you can continue working. That will update the frame range. So now it's 136 frames long. If I check the, oh, behave please. Okay, you're just going to become a timeline then. It's your punishment. So now it's 136 frames long because we start on 101. And that, and starting on 101 gives us some headroom. If I were to time it the other way, I also can do the same thing. But that's essentially how that handles. And now when I create a playblast and I load it on top of my Metastrip, it will match the timing there. So that's how the updates are handled. And I go here. And yeah, yes. Oh, Andy, we use cashers, don't we? Yeah, that's fair. So yeah, so it's possible to cash the animation. We just aren't using it at the moment. Yes, sir. Yes. Yeah. So the question is how do we, if we're on the FX step and we needed to expose like a character or something to inform whatever FX we're doing. I correct me from wrong, Andy, but I believe we would still just, we would just override that animation output collection to expose all the objects within it so that you can read the information there. Yeah, I'm very smart. Yes, sir. We're getting a lot of quick. Yeah. So the question is how do we deal with noise sampling? And these are, these are more questions that I'm really happy you're here, Andy, because they kind of live in your world as well. I think we just push the samples as far as we can. Don't we? Yeah. Yeah. Yeah, it's complicated, but the short answer is we push them as far as we can go. That's just about noise sampling. Yeah. Yeah. So we have time for any more questions, but otherwise I'm really happy that you guys all came and thank you for coming on. I hope it mostly made sense.