My name is Sidi Abderrahmane Bouam, but I am mostly known online as Abdou Bouam. I’m a Freelance 3D artist from Tizi Ouzou, Algeria. I have experience in game props, product visualization, materials and lighting, and more. You can visit my portfolio to see some of my artworks on ArtStation and Twitter.
I have always been fond of electronics and it’s one of my hobbies. I have studied computer maintenance and got introduced to electronics—I’ve loved it ever since. I worked in the past with Raspberry Pi computer boards and Arduinos and I loved them, and when I saw posts about the new Raspberry Pi Pico microcontroller it immediately caught my eye. I loved the castellated pin headers and the small form factor, not to mention its technical characteristics. I ordered one for myself and just had to create a 3D model of it while I waited for the actual one to ship.
The Raspberry Pi Foundation shared STEP files and design files for the Raspberry Pi Pico and made them available for everyone. This makes it so much easier to work with since I did not have to worry about dimensions and measurements; instead, I focused more on model clean-up and detailing, as well as texturing and presentation.
I used FreeCAD to open the downloaded STEP file and exported it as OBJ, then imported the file into Blender.
The model of the board itself is decent, but it lacks details and there are some improvements left to make.
I gathered a few references from the internet about various standard electronic components such as resistors and transistors. You can use some specific and technical terms to help you search for these components, like SMD (surface mount device). The components used in the board are mainly resistors, capacitors, transistors, a crystal oscillator, a push button, a diode, various integrated circuits, and a Micro USB B. I used PureRef to organize the reference images.
Next, I cleaned up the model. While this is not strictly necessary, I don’t like long triangles and NGons, so I removed them by rebuilding the model on top of the original.
And finally, I added the missing small components, mainly resistors and capacitors, and detailed the push button and the Micro USB port according to the references.
For the resistors and capacitors, I used a very simple model and duplicate-linked it (Alt+D in Blender, by default). That way if I need to change something I will only do it once and it will carry on to all the other objects. This would save time in the next step (UV unwrapping).
The modeling part was now done, so we can move on to the UV unwrapping part.
I wanted to use a single material for the whole model to simplify the workflow and slightly improve performance.
Let’s start with the board itself. A trick I learned is to select all the faces I want to turn into UV islands, then select boundary edges and mark them as seams. You can do that for both the top and bottom sides.
I added a few seams where necessary, like 90+ degree angles and at least one edge for each of the circular holes.
When done, I unwrapped and inspected it to see if there were any weird shapes or distortions that needed fixing.
Perfect. I repeated the same process for the different objects, adding seams where it looked correct. Next, I hid all the duplicate resistors and capacitors, leaving only one of each visible. I selected everything and entered edit mode, which allowed me to edit all the UVs together. With everything selected in the UV Editor, I used “Average Islands Scale” (UV > Average Islands Scale), and then packed everything together. This can be done manually by moving and rotating the islands, or by using Blender’s default “Pack Islands” operator (UV > Pack Islands). I personally use an addon called UVPackmaster 2 Pro—it’s faster and more advanced. You can see the difference below.
With that done, I unhid all the duplicated capacitors and resistors, and made them single user. This step allowed me to edit their UVs separately.
I shifted the UVs of the duplicate resistors and capacitors exactly 1 UV space to the right by pressing Numpad 1, while leaving the original capacitor and resistor UVs in their original positions. This would be useful later when I baked the texture: it would be baked from only one resistor and capacitor that are in the main UV space, and all of the others would look the same because the textures would tile. The model was now ready for texturing.
The Raspberry Pi Foundation made the design files available to the public, and among these files is the board schematics (.brd extension). The file can be opened with special software like Cadence or Eagle. With that, I could extract the various circuit boards, like the copper traces, solder mask (the green part), and the silkscreen print (white text and logos), as shown below. The method of extraction depends on the software used to read the schematics.
I needed to adjust the schematics to make them align with the object’s UV unwrapping. To do so, I exported the UV layout from Blender (UV > Export UV Layout) and opened it in an image editor, and then used the UV layout as a guide to properly position the front and bottom textures for the copper, solder screen, and silkscreen. I used the size and shape to help identify each part, and if I was unsure about orientation I could just write anything in that place and import the texture into Blender to check if it’s correct.
The resulting textures look something like this, copper on the left, solder screen in the middle, and silkscreen print on the right.
Next I used my custom PCB shader and applied it to the board, then imported the 3 textures I created and connected them as follows. I created simple materials for the other parts as well.
For the writing on the integrated circuits and resistors, I created a separate texture and used the UV layout image as a guide again to add the text and numbers, and used the texture as a factor to a Mix RGB node with the colors I wanted to assign.
That’s it, the model is textured correctly. All I had to do before exporting it to Sketchfab or other software was to bake the standard PBR textures. There are many ways to do it, but I prefer using an add-on called Principled Baker (tutorial).
For optimal results, I baked the Base Color/Albedo, Metallic, Specular, Roughness, and Normal textures. The Specular map is optional but it helps add a little bit of realism.
The Sketchfab setup is straightforward: I put the files in a ZIP file, uploaded it to Sketchfab, and wrote a description. I used the 3D Settings to make sure the textures were in their correct slots. I used Baked AO for ground shadows, to give it some more realism, as well as the following lighting and post-processing settings:
The final result can be seen below.
Bonus: Realistic rendering
I wanted to present my model in a realistic setup using Blender and Cycles. It is important to be aware of the scale of a model and set up a scene accordingly. A small object is often viewed from the top side, with a very shallow depth of field, and often with small imperfections and distortions to the lens (chromatic aberration to the sides, vignetting, film grain, barrel distortion). It’s also generally a good idea to decrease the field of view to make it look like the camera zooms in, instead of only being moved closer to the object. Here are the camera settings I used:
Next, it’s important to make a good lighting setup in order to present it well. I used Photo Studio 1 as an environment light, and added a simple point light and positioned it on the opposite side of the camera to add some reflections on the board.
And then applied the following material to the ground plane to make it look like it has dust specks.
Then I rendered the image. Any tool can be used for post-processing. You can use the Blender compositor, Photoshop, GIMP, Affinity Photo…etc. I use a Blender add-on I created myself, called Uber Compositor. I personally prefer darker and “moody” colors, so I made it that way.
Thank you for reading, I hope you found this interesting and helpful.
This is such a thoughtful walkthrough. The level of craft is evident in the end result, but even more inspiring when revealed step-by-step. Thanks so much for sharing!
Very cool writeup! I’ve been using Blender for more than 5 years, and yet I still learned something new (namely the fact that if you move UVs outside of the main space, they won’t be used for baking. Super handy!) Thanks for taking the time to walk through your process in such thorough detail 😀