In case you missed it
You might find these articles interesting
Hi, I’m Adriano, a 3D Generalist focused on modeling, rigging and animation.
Some years ago, I didn’t know exactly what I wanted to do in my life, so I decided to do Design and Communication at the university because the problem-solving aspect of the design inspired me. After my graduation, I won some design competitions, helped in developing a video game as a 3D modeler, collaborated as a product and graphic designer with Bhumi Ceramica and worked as a designer at a 3D printing laboratory 3DRap Srl. After a few years, I decided to take a master's in CG at BigRock Institute, then stayed in this institute for six more months in R&D. Now, I’m looking for a job opportunity while I’m working on my personal projects.
The first time I got introduced to 3D was when I was a child and helped my father with his job in Sketchup. During university, I got into 3ds Max and then Blender and Maya. I started modeling and rendering many things, but it wasn’t enough for me, so I began moving some of the works further and making first animations. But my biggest inspiration for doing computer graphics was the movies like Wall-E and Despicable Me. I love seeing how animation affects a character’s personality.
About Timewasher Project
I’ve always been a very technical person and every time I began working on a new project, I used to study new tools to understand and analyze all their potential. For this reason, I have many pending projects. When I started the Timewasher project, I wanted to do something nice, captivating and most of all, I gave myself a deadline! Timewasher was supposed to be impressive and funny, a short sketch with a washing machine that transported itself in time.
From the start, I planned to upload the project on Sketchfab. This brought me to some choices made during the development. Sketchfab is very helpful for 3D artists because it helps in studying 3D models to find interesting solutions. Nowadays, I still use it a lot, it helps me learn many new things.
The main reference was the Rabbids with their time washing machine. For the look, I preferred something more cartoonish with rounded edges, so I collected many references online. I imagined a scene with pastel colors so were looking for a better color palette. To create a contrast, I decided to combine the pastel shades with a particle effect with strong colors, so that it would make everything look more magic! From the beginning, I chose a soft but exaggerated animation, with an increasing frenzy that would suddenly stop and become quiet.
Since it was supposed to be a short-term project, my idea was to model with simple shapes. I needed to upload the project on Sketchfab, so I opted for low poly modeling to see it in real-time. For the style I imagined, I didn’t need high poly, so I subdivided the mesh to fix some artifacts of normal with the bake. To better optimize the density of polygons in the low poly, I limited the artifacts, applied subdivision and then manually removed unnecessary edge loops. Only for the soap, I used sculpting tools to make it more organic and then did a quick retopology. I don’t use external plugins for this kind of modeling but I activate some addons already present in Blender to unlock convenient functions such as bool tool, loop tools, edit mesh tool, F2.
While I was working on a video game, I learned to compact the UVs as much as possible by putting together as many objects as I can. When you want to optimize the texture for rendering, especially if it is in real-time, it’s preferable to have fewer materials with larger textures to have fewer draw calls. Most of the time, a classic PBR has 4 textures, but at equal texel density, it’s preferable to have 4 textures of 4k than 16 textures of 1k. Then, you can join objects with the same material and separate the mesh according to the materials if you have more than one material assigned to the same mesh. No UDIM because Sketchfab doesn’t support them, so you can choose what to join and use only the first quadrant. My groups were: the washing machine, the rest of the items, the flooring and the effects. To make the washing machine more detailed, I unwrapped it alone, put seams to open it like a box and then added other seams in the places where the stretch was too big.
Before proceeding with the packing, we should understand which parts need more resolution. A uniform texel density is the simplest solution but sometimes for optimization purposes, you can shrink some less important parts. For example, the texture of the porthole wasn’t important, so I shrunk it without taking away the important parts. In order to avoid grain on the small parts (like the button or clips), I enlarged them.
Sometimes, during the layout or packing, the resolution of a texture is lost. I often use the automatic packing, but I take care to set the right parameters: padding for the distance between different islands and the distance from the edge; number of iterations (the more iterations the better packing); autoscale of islands to equalize the texel density (if you don’t need a different resolution); autorotate. For a faster and more comfortable texturing, you should have a perfectly straight texture in UV, even if some parts could have a big stretch.
For the floor, however, I did the opposite: at first, I created a texture on a simple plane, then I divided the plane and fixed it to create the joints and other details. I did it all by using tools and functions for modifying the UVs such as bevel, inset face, poke face, knife, loop cut.
With Substance, I’m used to utilizing a fill layer with masks and effects to have a non-destructive workflow. To create the texture style I had in mind, I used a uniform color for the base and then a passthrough level with an HSL filter for varied saturation. For the porthole, I used the metallic at 1 and the normal to create drops of water. Also, the black strokes are hand-drawn across the edges and applied in a mask of the fill layer above everything.
The setup of animation was partly difficult because of the softness I wanted to gain. To get it, I needed to smooth the weights but after the smoothing, small parts stopped following the body of the washing machine and intersected with it during the movements. After many attempts, I got a good result with gradient, smooth and levels to offset and smooth the weights.
To deform the body I used 3 bones on a bezier curve with a spline IK. The drum of the washing machine was a challenge for me because it had to rotate but also to deform, so only a bone wasn’t enough. I used 4 bones along a bezier circle that deformed like the hole’s edge. Also for the rig of pipes, I used a spline IK on a bezier curve with very soft weights and some empty objects to control everything. To make sure separate elements stayed attached to the body, I used vertex parent with an empty. Soap and detergents have a simple constraint stretch for stretching and squashing.
Bringing the root bone to zero in order to make something disappear can be problematic became any game engines do not allow you to upload an animation with a scale of a bone set to zero. I solved the problem by shrinking the washing machine to make it less visible.
In general, to achieve a cartoonish and more organic effect, I tried to apply as many animation principles as possible: stretch and squash (like on the washing machine and the soap bag) exaggeration, anticipation (opposite movement to the coming action), secondary action (clothespins, detergents), overlapping (tubes), solid drawing and so on.
In addition, the graph editor is fundamental for a nice animation, it’s useful to have total control over the timing. I also used it for clothespins when they impacted the ground and broke the keyframe's tangent handle to have a quick change of direction for the bouncy objects. Since there’s a lot of chaos at the beginning, I made everything totally calm in the end for the contrast.
All in all, Blender has very helpful features for animators. For example, I used the noise modifier on some animation curves to add an easy vibration to the entire washing machine. Another example is the possibility to animate with quaternion rotation to avoid the gimbal lock.
Eevee is a real-time rendering engine so it allows seeing the final render with post-production effects. After choosing the shot I liked, I selected an HDRI to give the mood to the scene (it affects the colors). Then I put warm and cold lights to make reflections and some rimlight for animation. Finally, I used the bloom effect to maximize the effect of energy and a planar reflection on the floor to have clean reflections. For the final composition, I rendered the ambient occlusion and the vector pass with Cycles to add the motion blur in compositing.
I created a group of sparks with random positions and rotations, then weighted everything to one bone and used the scale to make it look like they were generated from a point. I created shape keys to make them disappear, zero-scaling each mesh according to its origins. The particles that rotate around the washing machine are two spheres on which there is a texture with alpha; blue rays are a rigged mesh with spline IK on bezier curves running around the washing machine.
The audio was a fundamental aspect of this project. I love motion graphics that match the timings of the music used and I think that animations with audio have a bigger impact. But the audio must be perfect in order not to ruin everything.
I’m no an expert in SFX, but I had some experience with audio software in the past. I found the sounds on YouTube and Freesound or recorded them with my smartphone and then deleted the noise with Audacity. If you can't find the specific audio, you can try alternative tracks that sound alike. For example, I didn’t find the Washing Machine Centrifuged noise, so I used the sound of an earthquake instead... and it was perfect for me! Finally, I edited the audio adjusting the volumes and cutting the tracks. I chose to do the audio editing in Blender with Sequencer to modify and update the tracks as quickly as possible.
I suggest you never leave an empty space in the audio, it is better to have some background noise or white noise to join everything together.