There are AwesomeBump that is written in QT and do not require .NET Framework and has code open.
Интересно, не понятно зачем, но круто. Я бы хотел поучаствовать в проекте
Already have ndo, b2m, knald, and others.. Why another one?
Suzanne de Bruine and Flora van der Linde did a breakdown of their student project Sea Drive, a short animated film made in UE4.
Hi everyone, we are Suzanne de Bruine and Flora van der Linde and we just graduated from NHTV’s International Game Architecture and Design in Breda, the Netherlands. We are both from different cities in the Netherlands and became friends when studying. During the study, we have worked a lot together on different game projects like Bolt Storm, Dutch Game Award winner 2017. We always valued each others input and company and decided we wanted to do our graduation project together as well.
Sea Drive Project
Our graduation project is a short animated film called Sea Drive. Since we mainly worked on game projects, we wanted to try our hand at graphic storytelling/film. The idea of the film came to Flora’s mind a few years before production, but never left her. During the concept phase, the story changed slightly and developed itself further, with the input of both of us.
We were very inspired by Emilie Stabéll, for her art is 3D but her textures make them seem 2D. This encouraged us to create an art style that is not your average 3D animation. This project pushed us out of our comfort zone and forced us to do all the aspects of the cinematic pipeline by ourselves.
Since this was our graduation project, we had one year to go through the concepting, production and polishing phase. We were only a small team of two, so we asked for the assistance of Oscar Loch (a graduate like us and currently FX artist at Axis Animation). He provided the lovely sea shader to us, which he will talk about(read more about his process below). Not to forget, Ralph Palmer (former Character Animator at Walt Disney) was our supervisor who guided us through the whole project and mentored us at animation.
We started by collecting reference and deciding on artstyle and looking at real life cliffside environment and underwater life. Afterwards, we went straight into storyboarding. We made two storyboards, the 2nd being more simplified and cut down on the scope.
After storyboarding we made short animatic in Premiere, to time the storyboard panels with placeholder sounds and music. This made it easier for us to decide on planning and to create an asset list. At the end of our project, we counted around 30 meshes.
Our modeling workflow varied from either making a zbrush model for the bigger assets and then retopologizing in maya or going straight into maya when working with simpler shapes. Painting the textures in Photoshop gave us better results than in Substance Painter, regarding the painted style that we were going for. However we did use Substance painter a lot as well, for complex assets were easier to paint seamlessly.
One of the most valuable achievements is that we both have a better understanding of Unreal Engine and it’s tools. The four areas we improved most in are the Material Editor for creating shaders, the Particle System, Sequencer and world building in levels. We mostly explored these areas by following tutorials online and asking for help around us.
Changing Materials to Unlit
Most of the tricks we came up with, had their origin in us reflecting on our project. Taking a step back to see if we were getting the results we were looking for.
For example half a year into our project, we realised that our film was starting to look nothing like what we had in mind. We were so busy producing, that we did not see what was wrong or missing. After some reflecting, we decided everything looked too 3D for our liking. To fix this, we found a solution which is making all the materials unlit, getting rid of lighting information and therefore making all the colours more true to their intention. This decision gave us a bunch of new challenges production wise, but also gave us a boost in our motivation because it immediately started to look more like our original idea. From this moment on, we started to get more excited to work in Unreal Engine and come up with less obvious solutions than we normally would have come up with.
Another example is that we found that some scenes did not look convincing enough, lacking VFX like splashes or the car not looking wet in the rain. This forced us to really get our hands onto the particle system and material editor.
Sea Shader (by Oscar Loch)
These are several masks packed into one texture, to save disk space and performance. They are lined up with each other for consistency in the waves.
The red mask is placed at the highest point of the waves, to define the waves a bit more.
The green mask is multiplied with a noise, to simulate foam from the wave breaking when it’s close to the cliffs. The blue mask is used for the displacement, and a slight color variation of the water.
The noise is used as the mask for foam.
The normal map is mainly used for UV distortion.
The dots are used for the sparkles on the water. It’s multiplied with a panning noise texture to make them flicker.
World Position Offset works by offsetting the vertices of a mesh, that’s why the resolution of the offset is limited by the amount of vertices the mesh has.
Displacement uses the Tessellation Multiplier input to add more vertices to the mesh, and so more resolution to the vertex offset. You can even set a different Multiplier based on the distance to the camera to save performance. Multiply a greyscale mask with VertexNormalWS to move vertices along the vertex normal, or multiply it with a vector3 to move the vertices in a specific direction.
I used this to make the waves.
UV Distortion is a great way to make textures more dynamic. Add a greyscale value or a vector2 to the TextureCoordinate node, and plug that into the UVs input of a texture. This is a simple example, but once you understand the concept, it can be very powerful and there are many ways to use it.
You can create fake depth cueing by calculating the distance of each pixel from the camera, and use that value to interpolate between colors. This gives a sense of atmospherics in the air.
2D Sprite Animation
The sea surface that Oscar Loch provided already gave us a good head start to create our environment. However, we were missing some interaction between the sea and the cliffside and an effect when the mermaid comes out, so we decided to add some splash effects. Flora made a 2D sprite animation and using a plugin in Photoshop she made a spritesheet.
Material in Unreal Engine
We added these Particle Systems in the level editor and Sequencer. This allowed us to play with the spawn location and timing.
Keying Material Parameters in UE4 Sequencer
Because we were using Unlit materials, we were missing some light information in moving objects. This video explains how we keyed Material parameters in Sequencer:
Overall, Unreal Engine was very new to us. To develop this project by ourselves has been challenging for this reason. At first, we were very hesitant to start working in Unreal Engine, but now we regret not starting earlier. We are convinced that we could have created even more cool content if we had been more brave. Our advice therefore is to just experiment as much and as soon as possible.