Thank you Richard. If I find some more ways to improvise for optimization, then I'll tell you definitely
would love to see the substance graph.
The visual shader system will be great for modular asset pack makers. You see some incredibly high quality modular asset packs on the Unreal store, whilst the ones for Unity are so-so, which I think is down to the ease of creating shaders on Unreal vs Unity. Alternatively you have to make your shaders in something like Uber Shader system which immediately splits your customer base.
3d artist Simon BAU talked about the production of the amazing LEGO-inspired short film.
Hi! My name is Simon BAU, I’m a French compositing artist. I graduated in 2012 from ESMA Montpellier (France) in 3D animation. Then I worked on the 2 seasons of the Jungle Bunch to the Rescue series at TAT studio 3 years as a comper and now I’m currently working in many studios in France as a lighter/comper.
Actually, to make something believable, I try to work like it was real LEGOs. Based on the animal logic’s workflow from the LEGO Movie, I mainly create my environment in LEGO Digital Designer and import it to Maya. But I don’t delete any bricks. The lego worlds I build in 3D will work for real.
As a child, LEGO was a big part of me. I always loved to play with it, create some universes, at a time, being a master builder was a very good plan for me to grow up. So being able to understand how LEGO works wasn’t a problem at all. LEGO in 3D isn’t that far. I’ve made a LEGO project 2 years ago, this experience was a great experiment for me.
The Batman Short
Well, it started with the LEGO Rebrick contest on LEGO Batman. Even with the short time they allowed to do a short film (less than 2 months) some friends convinced me to do it. The riddler was one of the first choices because I knew it will be easier to create him and play with funny situations. Plus the fact that this villain doesn’t have a real lair in LEGO sets. It allowed me to create what I wanted for it.
On my first day of work I had a lot of ideas. Too many ideas actually, I had to cut a lot of things the first week, it was a nearly 2-minutes short film at this stage with too many characters and sets. The maximum allowed was 30 sec by the way. But I prefer to give myself full freedom of creation, try it on friends to cut what is not working and try new versions. I believe in teamwork for brainstorming ideas.
When the script was only with 2 characters and 1 set I started to storyboard it and edit it to see if it fit in 30 sec. It didn’t. More things to cut, even on of the best gag but as it didn’t fit the story, I deleted it. It was heartbreaking but for the best.
In the same time, I started to block some pieces in Lego Digital Designer (LDD ) to better understand the space in my storyboard.
I didn’t do any design on paper, testing things directly in LDD was faster and I was sure it’ll be built.
As it is always very important to use references, I had a lot of pictures of the Batman video games and LEGO sets and from the trailers of the Lego Batman Movie (especially for the lighting and mood )
As I try to follow the closer I can to the animal logic’s workflow, everything was made in LDD then exported to Maya. And as bricks from LDD are not production friendly, I had to model the bricks (nearly 100 because I already had 150 of them from my previous lego project).
The entire set of the lair is around 7000 bricks.
It starts with good references. Fortunately, I’ve got plenty of mini figures so it wasn’t so hard to have a face and profile pic. Good observation is important too, it can be very easy to have bad measurements or shapes! The hardest part is the arms, it’s a sphere and cylinder base on one side but flat on the other side, it’s hard to keep it very close to the real one.
For the props of each characters, I used the same technique.
As it’s hard surface I prefer to only use Maya. The good thing is that with a base model I can do whatever figure I want now. Zbrush wasn’t useful for my workflow so I didn’t use it at all.
With LEGO sets I don’t like using pen and paper. It’s LEGO so I prefer using LEGO for building things and try if it works or not. So LDD is my main software for concepts.
I put some marks to adjust the size of my scene and I start playing with bricks. I’ve already got some ideas in my head but I need to try it to see if it works. It’s sort of a blockout/design process which allows me to adjust the scale of my scene. Then I add some details, some life on it. There is usually a second pass of detailing. Some assets are made inside the set some others don’t. It depends if it will be reused or not. If it will, I prefer to make it in other scene then combine it in Maya as a proxy/instance to optimize my scene.
So everything is made with bricks in LDD and then exported thanks to a script made by my friend Guillaume Ferrachat to Maya. The only thing with this script is that I need to model the brick first because it only took ID number, translation, rotation and color from LDD. I needed almost 100 more bricks for this one. I work in real world units. Only the minifigures are high poly by the way.
Inside Maya I readjust some placement, add details by duplicating assets and add some random rotation, translation to some pieces to have the feeling it was made by hand. The ground, for example, is not flat at all. It’s a stylization I wanted since the beginning.
I created some testing scene with an HDR to create my shaders. I used some elements already built to do it. I created one first shader and only made some variations of color with the official LEGO colors. Same for the metallic and transparency ones. I put some SSS on all shaders except the metallic ones.
The second part of shading was made with all the set built, because instead of having a texture for each piece I thought having one for all the set will give me a better look and less time-consuming rendering. So with the help of Quixel and just a plane mesh I created an universal dirty map with finger prints of course!
Then I projected this map on my entire scene thanks to a triplanar projector and I connected it to the spec attribute of all my shaders. I had a very nice result quickly with very few comebacks to Quixel. I’ve made the same with a bump map only with scratches. It gave my set a good feeling of old dirty LEGOs (which I wanted for the lair)
As for the characters, I’ve made them in Quixel too to break the “clean and brand new” effect. I based my shaders on the ones for the set. This gave me control and an artistic side for the project and it was very fast.
I will let Melanie and Scott, the main animators speak about it.
Melanie: One of the big success factors of the LEGO movies is this feeling of toys which are able to move by themselves, but with this little “je ne sais quoi” which makes the spectator be totally immersed in the story, as if he was actually playing and doing himself all the actions with their LEGOs like a child. And to be able to transcribe this feeling, the better way was just to do the same…but with CG models!
So, the animation was done frame by frame, pose after pose, as it would have been done in real stop motion, because this is the style they use in the movies. To make an animation in stop motion, you have to think about the movement and then you decompose it in steps and put keys on different moments of it to have the feeling, in the result, that someone else makes the different parts of the body move between two photo shots and always reminds you “Ok, with a real toy, can I put it in this position?” If the response was positive, you could key it.
Then the important part was to work with holding each poses 2 frames (except sometimes for doing very fast movements of course), as in traditional animation. Working with curves in step mode was easier to help time your timing.
The animation is a sort of an advanced blocking, where you move just a little each elements between two poses you did.
Scott: The LEGO animation style is one of a kind and really fun to play with.
You are very limited by the minifigures actual mobility but the range of motion you can use in a shot is actually really wild. It pushes you to be creative, and find other solutions to make an action possible and readable, as the toy can be “Dismantled” or “Disarticulated” (which is always fun to do in an action packed shot!) but should never look “broken”. It makes you think about posing in a very refreshing way!
The animation process was a hybrid between the 3D and traditional world. I did some rough blocking at very early stages to get the main poses and positions approved by Simon, but after that I followed a more traditional, stop-motion methodology and mostly animated Straight Forward on Twos.
Animating in Step was also key, (pun intended) to bring up a naive and imperfect touch, allowing you to be in the right mindset and achieve a stop-motion feel. The Inbetweens are then tweaked, to give extra fluidity to the step animation.
A few elements, like flying batarangs have been animated on Ones, just like the cape in some sections – even though it should have a rigid/imperfect touch to it.
We didn’t use any motion blur, squash or stretch, so we could stay true to an original stop-motion film. For instance, in some shots we duplicated LEGO pieces and used them in creative ways, giving the illusion of speed and direction while using the persistence of vision on the Sceptre spin, or plant pots and a star piece as a spark on a couple of frames. You can also spot the characters getting “rebuilt” in a few different moments.
Regarding timing, my main reference was: making my own real LEGO Batman figure jump and dive, shouting some random “Bam!” & “Wham!” in Kevin Conroy’s voice (no offence Will), all while putting the Riddler’s plan out of action! (played by a coffee cup).
Lets just say, the easiest way to make it look as if a Child was playing it all, is by simply letting the Child play.
Flying LEGO Bricks
I’ll let Valentin Dornel speak about it:
I have exported the bricks from Maya to Houdini using Alembic. Once in Houdini, I packed it for memory efficiency and then used it with a Bullet solver. Then I have exported it back again using Alembic. The main challenge was to define the collision model: with so many pieces you have to find some tricks. Pre-combine objects in Maya worked great in our case, it was faster and more artist friendly. I thought that things could have been better with FX simulation. Anyway, everything cannot be as perfect as you wish. While on a tight schedule you have to be efficient and make choices.
Well, first I didn’t took any job for this period of time, to be able to be 100% on this project because I knew it will be very time-consuming. The second important part was the experience I had 2 years ago with another LEGO project. I did a little one last summer too.
Back to it I’ve made some mistakes I didn’t reproduce on Batman. I’ve made others of course but I didn’t have a lot of problems (the biggest one cost me only one day of work)
The biggest challenge I think was to do in this amount of time. I knew it was possible to make a 30 sec short film, but in 6 weeks? I gave myself 24 hours before starting it to think about the consequences. But it’s not every day you can work on a LEGO Batman project.
I had the chance to have great friends who helped me a lot with rig, animation, FX and sound FX because I wouldn’t be able to do all by myself. So one more time thank you!
And the last challenge was being the lead of it. A first time for me and I liked it! It’s not easy, but very grateful and I learned a lot.
My workflow is now based on Redshift. It’s a GPU renderer so it’s way faster than a CPU renderer with only one computer. My spec are not that high: i7 + 32 go RAM and a single Gtx 980ti but I managed to have less than 8 minutes of rendering by frame in 1080p (some shots were under 7min!). And as I said earlier there is SSS everywhere and around 7000 bricks! I love this renderer for being so artist friendly and powerful. And I didn’t use post process Denoiser.
It took me 8 days to light render and comp this short film. Sometimes I even rendered 3D on the GPU and comp on the CPU at the same time! That’s so good to be able to do that at home.
For personal projects, I highly recommend this renderer.