[00:00.000 --> 00:17.260] Our next speaker is a specialist in the animation industry, please welcome Frank Rousseau. [00:17.260 --> 00:21.980] So hello first of all, my name is Frank Rousseau and I'm going to introduce you to animation [00:21.980 --> 00:23.540] movie pipelines. [00:23.540 --> 00:28.580] So before going further into the presentations, I'm going to introduce myself a little bit. [00:28.580 --> 00:36.920] I do web applications since 25 years and I do free software as a professional activity [00:36.920 --> 00:43.780] since 10 years and I'm the founder too of a company named CGWire. [00:43.780 --> 00:49.360] We are a bootstrap company, we are a team of five and we do a product that is aimed [00:49.360 --> 00:57.360] at providing project management services for animation studios and this product is licensed [00:57.360 --> 00:59.760] under HGPL. [00:59.760 --> 01:03.480] So now let's talk about pipelines. [01:03.480 --> 01:07.680] So what you have to understand first is that when you do an animation movie, you have to [01:07.680 --> 01:13.840] follow a very industrial process but all the people working on it are creative people. [01:13.840 --> 01:19.520] So their main focus is to make beautiful pictures and they don't really care about the rest. [01:19.520 --> 01:26.840] So you have to deal with that two contradictory aspects and the first thing is to describe [01:26.840 --> 01:34.000] roughly, to describe the main steps of the needed to build a movie. [01:34.000 --> 01:40.440] So here I'm going to take a simple example that covers the main aspects of a movie but [01:40.440 --> 01:45.640] of course there are subtleties for every movie but the main idea is that in every animation [01:45.640 --> 01:52.760] production you have some elements named assets that will be displayed in the movie all along [01:52.760 --> 01:54.520] the movie. [01:54.520 --> 02:01.480] You have the shots which every time the camera frame is changed there is a new shot so the [02:01.480 --> 02:06.640] movie is divided in many shots and the asset will be used in the shots. [02:06.640 --> 02:12.280] So when you do, you build an asset for example a character, you have several steps. [02:12.280 --> 02:20.720] The first one is the concept phase, it's a 2D step where you will draw your, you will [02:20.720 --> 02:28.440] draw the idea of how the character looks, then the next step is to consist in sculpting [02:28.440 --> 02:31.960] the character, making it in 3D. [02:31.960 --> 02:36.960] Then you have to paint it, so you have to apply textures and physical materials. [02:36.960 --> 02:44.120] So we name that step shading and the other important step is the rigging, basically you [02:44.120 --> 02:52.680] add bones to your mesh, to your 3D model and you make a puppet of it. [02:52.680 --> 02:59.720] Then once you have all your elements that are animable you are going to build your shots. [02:59.720 --> 03:06.360] So first you need to have the animatic, the animatic is basically an animated storyboard [03:06.360 --> 03:10.520] so it's a super rough version of the shot. [03:10.520 --> 03:18.280] Then you go to a 3D version of the shot but it's still very rough which is named the layout. [03:18.280 --> 03:24.800] It's more direct or thin so to check that everything is well positioned. [03:24.800 --> 03:32.080] And the third step is to animate, the goal of the third step is to animate the shot. [03:32.080 --> 03:38.480] So here you have the very precise animations, here your shot is almost done but you have [03:38.480 --> 03:45.880] to render it so you add some lights and you bring all the elements you need to do the [03:45.880 --> 03:50.600] render in the same scene and then you run the rendering. [03:50.600 --> 03:55.680] And once you have the rendering you add some 2D effects on top of it and it's a compositing [03:55.680 --> 04:01.280] step and after this step you have the final picture. [04:01.280 --> 04:08.360] So now I talked about 3D animations but animations can be done in 2D, it's a very popular style [04:08.360 --> 04:09.600] too. [04:09.600 --> 04:16.440] So here the steps are a little bit different, we still have the concept but then we have [04:16.440 --> 04:25.160] the design part, basically we draw exactly the elements we need in that step. [04:25.160 --> 04:31.720] We have two main elements that are used in 2Ds are the characters and the backgrounds [04:31.720 --> 04:36.960] because every shot has a different background almost. [04:36.960 --> 04:43.320] And after that we have another step where every character will describe all the poses [04:43.320 --> 04:49.160] that a character will have so it will be easier for the animations that will happen afterwards. [04:49.160 --> 04:55.880] And when we do the shots we still have this animatic step because if you remember what [04:55.880 --> 05:01.960] I said in the previous slide it's already a 2D operation. [05:01.960 --> 05:07.360] Then we do a kind of rough layout and then we do the animation, the animation happens [05:07.360 --> 05:11.480] only on the traits of the elements that are moving. [05:11.480 --> 05:17.840] Because you know when you see a 2D movie you always have a beautiful background and [05:17.840 --> 05:23.080] simpler elements that are moving so we animate the traits then we color them and then there [05:23.080 --> 05:28.600] is a compositing step which assembles everything, backgrounds, traits and colors and to make [05:28.600 --> 05:34.960] sure and then it gives you the final image. [05:34.960 --> 05:44.000] So now that gives you the main steps needed to build a movie but now the question is how [05:44.000 --> 05:45.400] we build the movie. [05:45.400 --> 05:51.360] So of course we use software and in the animation industry there is a strong culture of IP, [05:51.360 --> 05:54.760] secret and proprietary software. [05:54.760 --> 06:04.360] So we come from very far on this aspect and because they are really using these things [06:04.360 --> 06:12.400] that the image should not be stolen, that there is no, it's better if no one sees the [06:12.400 --> 06:18.000] image before the images, before the movies is displayed. [06:18.000 --> 06:26.680] And so basically they are not really friendly with everything which is open source but things [06:26.680 --> 06:30.600] tend to change because of several phenomena. [06:30.600 --> 06:37.120] The first one is that Python is replacing every proprietary script language. [06:37.120 --> 06:44.440] I didn't mention it on the slide but FFMpeg is widely used to do some video operations [06:44.440 --> 06:52.960] and the academic software foundation is maintaining many projects around pivot file formats. [06:52.960 --> 06:58.320] So it makes it easier for studios to collaborate together. [06:58.320 --> 07:04.600] And of course we have Blender which is getting more and more adoptions, which is getting [07:04.600 --> 07:11.800] more and more popular and which perform always better. [07:11.800 --> 07:26.480] So all these elements combined push the industry to change its mindset about collaborations [07:26.480 --> 07:30.480] and open software. [07:30.480 --> 07:34.560] Now there is another interesting actor which is Krita. [07:34.560 --> 07:41.960] Krita currently is not widely used in the industry but we still can feel the same phenomena [07:41.960 --> 07:42.960] as with Blender. [07:42.960 --> 07:44.800] There are tons of tutorials. [07:44.800 --> 07:51.000] The software works pretty well and it keeps on improving because there is a good community. [07:51.000 --> 07:55.720] So we can guess that at some point we will have some interesting stuff that will come [07:55.720 --> 07:56.720] from it. [07:56.720 --> 08:02.080] Krita is mainly used for digital painting so it's more interesting to end everything [08:02.080 --> 08:07.560] related to backgrounds or to do texture for 3D. [08:07.560 --> 08:17.800] So if we go back to our building steps we can match our software with every step. [08:17.800 --> 08:23.240] So for the concept we can use Krita for the modeling Blender. [08:23.240 --> 08:29.600] As you will see Blender is widely used to manage most of the steps. [08:29.600 --> 08:35.240] The shading is a combination of both because Blender will manage the materials, can handle [08:35.240 --> 08:40.240] the texture drawing too but Krita is a little bit better for that. [08:40.240 --> 08:43.040] For the rigging Blender can be used. [08:43.040 --> 08:50.520] It's not an awesome software for that but they want to change everything for their upcoming [08:50.520 --> 08:57.560] releases and if they are able to achieve what they want it's going to be really awesome. [08:57.560 --> 09:05.760] For the shots we will see just right after that it could be used for the animatic. [09:05.760 --> 09:13.840] For the layout of course animations it performs very well but there are still some steps where [09:13.840 --> 09:17.760] it's not yet the right software. [09:17.760 --> 09:22.680] For everything related to FX there is still a software named Udini that is widely used [09:22.680 --> 09:28.600] by the industry and people won't change it for Blender right now. [09:28.600 --> 09:35.640] For the rendering steps they have a very nice rendering engine but when I talk with people [09:35.640 --> 09:42.400] from the industry who do really complex images they told me that it's not powerful enough [09:42.400 --> 09:47.280] for the moment especially because they don't have what we name send assembly features. [09:47.280 --> 09:54.000] The idea of a send assembly tool is to bring everything that is needed to build a scene [09:54.000 --> 10:04.640] and add some lights and have the capability to handle a lot of vertices and animation [10:04.640 --> 10:13.880] keys and for that there is no right software, there is no competing software to do that [10:13.880 --> 10:19.240] with the proprietary software are much better and we have the same issue with compositing [10:19.240 --> 10:25.960] where there is Netrun which is a very interesting software but they have governance issues [10:25.960 --> 10:31.800] so I don't know if it's still maintained and the software currently is not as powerful [10:31.800 --> 10:35.280] as the proprietary ones. [10:35.280 --> 10:43.080] About 2D there is something new, it is that Blender recently introduced Green Spence [10:43.080 --> 10:49.960] Hill so it allows to do 2D inside Blenders, it's really a huge change because prior to [10:49.960 --> 10:56.400] that there was no software to do 2D animations in the open source world that are efficient [10:56.400 --> 11:04.840] so now it allows to use Blender on the world pipeline of a 2D production the same way as [11:04.840 --> 11:09.480] we use it on a 3D production. [11:09.480 --> 11:15.720] So there are still some limitations about every vectorized picture, people still prefer [11:15.720 --> 11:21.640] Illustrator to Wingscape, I used Wingscape personally for some design stuff, it works [11:21.640 --> 11:27.720] pretty well but it seems that Illustrator is still better, Krita has many good things [11:27.720 --> 11:34.000] but it's still too limited but people told me to manage big images but I'm not sure [11:34.000 --> 11:40.080] but this is what some people from the industry told me, like I told you Netrun is nice but [11:40.080 --> 11:46.880] not as good as the competition and there is no good software for FX and no efficiency [11:46.880 --> 11:49.400] in assembly tools. [11:49.400 --> 11:53.440] So now let's talk about the pipeline because I talked a lot about the building steps but [11:53.440 --> 11:59.000] there is another important part, it is the glue between all these steps. [11:59.000 --> 12:05.280] So first let's see this very cute rabbit because this presentation is way too serious, [12:05.280 --> 12:13.800] I wanted to add this, it's not made with mid-journey or similar, it's with pictures [12:13.800 --> 12:17.760] and I apologize for the author, I totally forgot to mention it and I forgot the name [12:17.760 --> 12:22.600] so I'm really sorry for that but the rabbit is super cute. [12:22.600 --> 12:29.800] So now we can go back to the pipeline, so the first brick that is needed to build an [12:29.800 --> 12:34.960] efficient pipeline is the production tracker, the name is very misleading because it's [12:34.960 --> 12:41.480] not about tracking, it's about collaborating, people use it to dispatch tasks, to ship deliveries [12:41.480 --> 12:48.600] and then to talk around it, there are many single page applications and they have a [12:48.600 --> 12:56.280] strong API to allow every tool to connect to it, it's very important because there is [12:56.280 --> 13:02.680] tons of interesting data for every user in the studio and it's important to be able [13:02.680 --> 13:04.720] to access all of them. [13:04.720 --> 13:09.920] So basically what allows a production tracker, it's a very simplified version but production [13:09.920 --> 13:16.800] managers dispatch tasks, artists do the work, directors review deliveries and send feedback [13:16.800 --> 13:25.680] to artists and they iterate together and tools grab and post new data into it. [13:25.680 --> 13:33.920] The other main element is the asset manager, so the asset manager is basically what we, [13:33.920 --> 13:41.920] sorry I just do it the other way, you can see the animation production has a big graph, [13:41.920 --> 13:46.840] every elements are tied together especially because when for instance you do an animation, [13:46.840 --> 13:54.680] you will need several models to run the animations but we will need specific versions of every [13:54.680 --> 14:01.200] models and you have to represent that way or not and every node can be considered as [14:01.200 --> 14:10.800] the delivery and the links, it depends on how you want to represent scenes but the edges [14:10.800 --> 14:22.720] can be either the operations or the links between the elements and of course everything [14:22.720 --> 14:28.000] is stored, every elements are stored on the file system, object storage could be used [14:28.000 --> 14:35.920] but in reality I've never seen any studio using object storage so everything is saved [14:35.920 --> 14:43.880] on a shared file system but still it can be quickly messy so an abstraction is needed [14:43.880 --> 14:46.160] to manage all these files. [14:46.160 --> 14:51.960] So here is an example of graph, I go fast because I thought that I had 25 minutes to [14:51.960 --> 14:59.280] do the presentation, I only have 20 so I'm going to go a little bit faster, so here are [14:59.280 --> 15:08.360] some examples of Enforce file pass and file names and what you have to keep in mind is [15:08.360 --> 15:15.120] that it should be configurable because every studio has a different way to store stuff [15:15.120 --> 15:19.840] so for Asset Manager it's a real challenge to be able to manage everything and the third [15:19.840 --> 15:28.720] part of the pipeline is made of one of the main bricks of a pipeline is the render manager [15:28.720 --> 15:35.920] so in an animation production you have a ton of very long jobs to process and for that [15:35.920 --> 15:41.080] you need a render farm that will manage everything properly and you have a tool to be able to [15:41.080 --> 15:50.040] follow each task so and you have a suite of small tools that are used in the productions [15:50.040 --> 15:59.640] to have more efficient work so now let's because the goal of this talk is to build an open [15:59.640 --> 16:05.600] source stack for animation production so for the production tracker we use Kitsu so this [16:05.600 --> 16:11.680] is the software we develop at CGWire so it's a web application we choose very common very [16:11.680 --> 16:20.360] standard libraries and database to build it we rely a lot on FFMpeg to normalize all [16:20.360 --> 16:27.920] these videos that are passed through Kitsu currently we don't do crazy stuff with it [16:27.920 --> 16:34.800] to see only cool stuff we do is that we push every FFMpeg jobs into an AshiCorp nomad cluster [16:34.800 --> 16:42.840] but I hope that for the future FFM editions we will be able to talk more about how we [16:42.840 --> 16:48.520] manage everything and to show you that we do super cool stuff with it currently we use [16:48.520 --> 16:55.680] it in a very simple way and we choose a very standard stack to ensure that everyone can [16:55.680 --> 17:01.880] contribute and can deploy very easily the applications if they don't want to use our [17:01.880 --> 17:11.680] services and it's licensed under AGPM so this is how it looks we have here the list of elements [17:11.680 --> 17:18.560] to build and here we have the steps needed to build the elements so I won't go further on [17:18.560 --> 17:25.640] this because it will require a full presentation then for the asset manager there is a new tool [17:25.640 --> 17:33.480] that is emerging it's name is Hayon formerly it was open pipe basically it allows to do [17:33.480 --> 17:40.680] what I talked about before it's it allows to manage all the files but in an abstract way so [17:40.680 --> 17:48.200] artists can can just manage versions and don't think about how they how it is stored it comes [17:48.200 --> 17:53.920] with many tools to push things to other tools so it looks a little bit like that it's a little [17:53.920 --> 18:00.600] bit more it's a little bit less sexy but it's efficient too on the left you have the the [18:00.600 --> 18:07.760] file hierarchy when you select a step building step you have the all the versioning of all [18:07.760 --> 18:15.080] the files and then you have all the operation you can do on files which makes it very it's [18:15.080 --> 18:21.560] really several of times to everyone in the studio what you have to understand is that [18:21.560 --> 18:28.800] artists are really focused on making beautiful pictures but they don't most of if they are not [18:28.800 --> 18:36.320] seniors they don't think about if their their production is usable by the next step so this [18:36.320 --> 18:43.520] kind of tools we help them to do cleaner stuff that are reusable by their colleagues there is [18:43.520 --> 18:52.880] another interesting software which is a Libreflow or Cabaret I like it especially because it's [18:52.880 --> 19:01.080] it's really a community community thing it was done by a technical director in a studio named [19:01.080 --> 19:07.040] super monks and another studio named Le Fais Speciale used it and together they build that [19:07.040 --> 19:12.680] software it's fully open source and it's so it's a community led so two previous tools are [19:12.680 --> 19:19.960] company led and this one is community led so it's very cool to see that alternative emerging for [19:19.960 --> 19:26.520] the render farm render manager we have Flamenco by blend by the blender foundations which is [19:26.520 --> 19:32.000] dedicated to small small teams and we have open queue which is managed by the academy [19:32.000 --> 19:40.480] software foundation and which allows bigger studio to rely on on the first solutions here [19:40.480 --> 19:46.920] it's an example of a full pie open source pipeline almost full open source pipeline used by Le Fais [19:46.920 --> 19:57.840] Speciale on a feature film named Siren which will be soon in theaters and here it's almost the [19:57.840 --> 20:05.680] conclusion but here it is how animation free and open source stack now we have it it's very new [20:05.680 --> 20:13.160] for the industry so I'm super happy to be able to show it to you today and so to conclude now [20:13.160 --> 20:20.080] we have an almost working farm we have an open source stack that covers almost all the use [20:20.080 --> 20:25.520] case needed to build an animation movie of course it's mainly led by the blender foundations but [20:25.520 --> 20:31.240] there are no much alternative to blender but in the open source world but it's great that it [20:31.240 --> 20:38.200] exists and the work they do is really amazing the pipeline stack is covered by what I described [20:38.200 --> 20:44.600] we tend people don't see that aspect and we said we tend to forget it and there are still some [20:44.600 --> 20:52.720] changes in effects vectorials drawing and scene assembly but and compositing of course but yes [20:52.720 --> 20:58.120] soon it will be fixed I hope so thank you for your attention and if you have any questions I will [20:58.120 --> 21:27.280] be glad to answer at some point we'll be able to compete with so I don't know I know they [21:27.280 --> 21:33.880] they do effort on that aspect they say on a regular basis they had some that features about this [21:33.880 --> 21:40.360] the community is very active so at some point it could change but I think they their focus is not [21:40.360 --> 21:46.040] on it right now but I cannot talk for them because I am not not part of the blender [21:46.040 --> 22:01.760] foundation but we talk a lot with them yeah is there any other question yeah I mentioned [22:01.760 --> 22:09.360] Rita you mean and again I mentioned Rita but not GIMP so GIMP is not as not a good reputation in [22:09.360 --> 22:15.320] the animation industry I don't understand why because it's a very nice software but I think [22:15.320 --> 22:22.640] that people doing very complex stuff and it can find what they want but from my experience of GIMP [22:22.640 --> 22:27.200] is that they keep on improving it they really improved the UI so maybe at that at some point [22:27.200 --> 22:32.440] we will see more and more usage of GIMP but I hope because I really love this software too [22:32.440 --> 22:47.960] do we have similar stuff for sound I don't know we are only focused on images