Ortholinear Keyboard Showcase Animation - Project Write Up
by TJSBear in Circuits > Software
493 Views, 0 Favorites, 0 Comments
Ortholinear Keyboard Showcase Animation - Project Write Up
Check out the animation and read how I put it together.
Intro
I recently made a custom ortholinear keyboard from scratch (write up on Instructables here: ). I wanted to make a showcase video of the keyboard being assembled as well as some typing shots for that Instructables page. I was really inspired by a video made by Nvidia a few years back which showed their A100 server/ compute unit being assembled and decided to make my own version to showcase the keyboard. This write-up explains the process of making the animation with sound effects and music.
Storyboarding
Nvidia did an excellent job of keeping the watcher immersed in the video which I hoped to replicate. The first thing I did was to create a storyboard of Nvidia’s animation, I screenshot key elements of the video and wrote down why they included this in the video. Then I mapped out my own storyboard following their structure.
Modelling
I used Blender 2.9 to create the animation and to render the sequence out because I am familiar with the program and it is ideal for this use case.
I wanted really accurate models for my keyboard, Nvidia’s video has one focus but everywhere you look you can see perfect models with amazing detail. Since I had created most of my design in CAD I could just import the case and plate straight into Blender. This meant that all the details were there and I spent very little time getting the models to be dimensionally accurate.
For the keycaps, Arduino Pro micro and switches I downloaded models from Thingiverse, I did this as it decreased the time spent modelling and the models were more detailed than ones I made previously. However, I did add some features to the models inside Blender (such as the copper spring contacts inside the switches).
I created the PCB design in KiCad, this program allows you to export a 3D model of your design which is helpful for visualising your part. It also exports 3D models of all the components and connectors which means you don’t have to spend time getting those models to be accurate.
For the scene I created a building inspired by the Deer Shelter at the Yorkshire Sculpture Park in the UK. It’s a very abstract room with lots of concrete and has a large skylight in the roof – similar to the one in Nvidia’s animation.
1st image - this shows the scene without textures.
2nd image - this shows the deer shelter in the Yorkshire Sculpture Park. image from: https://www.artfund.org/supporting-museums/art-weve-helped-buy/artwork/9841/the-deer-shelter
Texturing and Lighting
There are two methods of texturing models in Blender. Image or “bitmap” textures and procedural textures. For more information about the differences between them here’s a guide: https://hub.packtpub.com/textures-Blender/ but in a nutshell:
· Image textures are quick ways to get realistic materials but cannot be altered to fit your needs, other than changing colours. They are kept at a fixed resolution meaning if you zoom in the pixels of the image will show up. They render quickly and can be applied with ease.
· Procedural textures are effectively infinite in terms of both resolution and customisability. They are created mathematically using a series of operations and therefore can be adjusted to fit the needs of the project. Unfortunately they take a lot of time to create and the materials they produce can look less realistic. They also take more time to render since more calculations have to be made.
For my animation I mainly used procedural textures since I did not have access to many suitable image textures. I found my experience of Nodevember (see my video about this here: https://www.youtube.com/watch?v=Bu1SpBanWLs) really helped with creating procedural textures as I have become more comfortable with using nodes to create materials.
For the 3D printed textures, I wanted that ridged layer look on my parts. I used a wave texture mixed with some noise to create a bump map for the material. Unfortunately, due to the denoising of the image this effect didn’t show up on the final render (denoisers reduce the graininess of images quickly but reduce the detail). The image shows the bump on case of the keyboard.
For the PCBs texture I wanted accurate textures of the silkscreen and traces etc. To do this I exported important layers as vector graphics from my design in KiCad (such as the silkscreen, solder paste and traces). Then I converted the files to bitmaps since Blender cannot use vector graphics as image textures. I used the various maps as masks plugged into mixRGB nodes to create the different materials on the board. The result is that the PCB is the most realistically textured model in the animation.
Lighting the scene proved problematic. I wanted the entire scene to be lit from above with a sun lamp since this would be the most accurate way of portraying sunlight. However, the shape of the room did not allow for this, and so parts were either in complete shadow or overexposed to the point of it not showing up. I solved this by adding some small uplights around the edges of the room, and then reduced the power of the sun to make the lighting more even.
Animation and Rendering.
To keep the entire animation interesting, I found that there should always be something going on, on screen. For example, a slow pan or subtle camera movement makes even the static information card scenes more enjoyable.
The animation comprised of 3 sections, these sections all run at different speeds and have separate atmospheres surrounding them. These sections are intended to keep the watcher interested in the video:
· The introduction or build up- where the scene is set and the keyboard drops from sky.
· The main build – where the parts are assembled into the keyboard
· The typing shots – where the camera revolves whilst keyboard is typing in a wave pattern.
Rendering is where the computer simulates all the lighting and materials of the scene to create the final image. The resolution and number of samples dictate the final quality of the image but also contribute to the render time. I found a good balance of quality and time-per-frame of 100 samples @1080p or FHD, on my desktop this resulted in 4 minutes per frame on average.
I had two relatively high-powered computers at my disposal, a laptop with a GTX 1650 inside and my desktop with a GTX 1070 inside. I ended up rendering the image sequence out over about 10 days.
Nvidia’s animation is significantly higher quality than mine (in terms of samples theirs is outstanding), however they do make graphics cards and do have more access to higher power pieces of equipment than I do!
Sound Design and Video Editing
I initially had lots of trouble with the sound for this project. I had never done anything to this scale and didn’t really know where to begin. I started by finding some music to suit the completed animation, but quickly found that I really should have picked the music before animating the sequence. If you look at Nvidia’s video, their soundtrack links perfectly with the visuals and that was not by accident.
I didn’t want to re-animate and render the animation since that took weeks. So, I tried to find some sound effects. I spent hours scrolling through websites trying to find the perfect sounds and occasionally I would find one that might fit. But when it came to combining the animation and the sound effect something didn’t feel right. The sounds didn’t fit the scene.
I was completely out of my depth on this and felt pretty burnt out.
I asked a sound engineer friend for help, and he showed me several projects he’d been working on, He also gave me several tips on picking and generating sounds. But the 2 takeaways were:
· Music is most important, bad video and sound effects aren’t as noticeable if music is good. Ideally pick it before you make the animation, tailor the speed and style to the music.
· Keep trying out sounds, there are hundreds online and some are bound to fit.
So, I took a few days break and came back to the project with vengeance. I found several songs that fit specific parts of the animation and blended them together, it’s still a bit rough but I was happy.
For the sound design I used several web sources for the sound effects, including Zapsplat.com and Mixkit.co. I started from the end of the animation since that was where the simplest visuals were - simple keypresses and wind noise from a camera. Then I worked towards the harder sections of the animation.
And that was it, after two weeks of procrastination and agitation I managed to complete the most difficult part of the project in about 8 hours!
Then I rendered it out for the last time.
Keyboard Animation Project Summary
I am extremely proud of the resulting animation; I spent several months on this side of the project and to see it finished is pleasing to say the least. I learnt to ask for help when stuck and that there is an order these things should be done in.
I also learnt how much goes into videos like these There is so much detail you miss on the first glance - I have so much respect for the creators of Nvidia’s video, it is amazing.
I have also learnt to manage expectations - going into the project I estimated it would take a few weeks. It did not. I expected it to look and sound like Nvidia’s, but it does not. Nvidia will have had several experienced teams dedicated to this video and they have access to some of the most powerful hardware on the planet.
Thanks to Andy Moore whose help with the sound was invaluable.
Thanks to my family who provided an excellent sounding board throughout the project.
YouTube Audio library provided the music
Zapsplat.com provided some sound effects
Mixkit.co provided some sound effects