Blending ULX4M - NLnet funded FPGA board
At the start of 2021. NLnet decided to sponsor development of modular FPGA board ULX4M (Successor of EMARD ULX3S).
As a part of this project NLnet is supporting us to discover the new world of 3D modeling and 3D animation as a possibility of presenting a product through visualization and animation in Blender.
Previous blender work
We already described some steps in our last article.
You can find more info here: http://lemilica.com/archives/3141
KiCad >> FreeCad >> Blender
Using FreeCAD to open the STEP file and export it as OBJ
import the file into Blender.
ULX4M will be comaptible with many IO boards, and for example in this sample we will use Raspberry Pi Compute Module 4 IO Board https://github.com/v3l0c1r4pt0r/CM4IO-KiCAD with already described process export STEP file from KiCad and import in Blender.
Separate components: Edit Mode – P, By Loose Parts
Next, clean up the model with the same method (MBXL) in Edit Mode as previous time. You can read about on the link http://lemilica.com/archives/3141
It seems there is no difference between STL or OBJ file for use in Blender.
We discovered some new cleaning options but the one we used last time gave us the best result, with the most reduced geometry.
All components are Parent to the base of the board (Ctrl P)
Save:) file
Next step - create materials
This part mostly happens in Edit mode where you can reach each vertex, edge and face of the component. I did some basic colouring in Material Properties - created new material slot with similar surface properties as original ULX4M board.
It’s possible to use each material that is created on any other component or an object, which is helpful if you need to make some changes on specific material that was assigned to a lot of objects.
UV-editing
Select faces on the front side of the board - right click - UV Unwrap Faces – Project form View (Bounds). That works fine if board is placed frontal in the View. On the left side is the UV editor where it’s possible to adjust texture precisely.
The texture has to be imported as .png and created as material slot. Under the Base Colour there is an option to pick Image texture or add it as node in the Shader editor.
All textures were applied this way, the texture for base of the board that contains flatten solder and copper layers from KiCad and labels for chips.
Creating animation
The way ULX4M board snaps into the Raspberry Pi was animated simply from the Timeline with keying position and rotation on certain frames.
I added a Curve Circle to be a motion path for Camera. Then, camera is parented to the Empty-Cube which is used as object/bone for following a path. Access this option trough Object Constrain properties and target Curve Circle within a Drop Down menu.
When the Follow Curve and Fixt position are enabled, there is the Offset Factor slider which controls position of the camera on the Curve Circle and it’s optional for keying.
Pressing I key will open Insert Keyframe Menu, selecting Location & Rotation & Scale will keyframe only these properties on the Timeline.
The last part - Blinking LED’s
Only Strength in the material slot was animated in the Emission Shader.
To get higher brightness and glowing effect Bloom needs to be checked in Render Properties.
We used Cycles engine for rendering.
Output Properties contain Format preferences for defining output Directory for animation.
Animation
In first render we did not have silkscreen - in next post we will write more about adding more layers to blender PCB - here's a board with added logos from v002
There are some visible glithes in render so lets add some background on next render.
We will use this free nebula world
https://www.artstation.com/marketplace/p/3low/nebula-hdri-free
World setup is really easy - you can check here: https://www.youtube.com/watch?v=6VBkj_I-ONk
Full render is here
By: Paula Bučar
Special thanks to: https://twitter.com/PcbArts
This project is funded by NLnet https://nlnet.nl/project/ULX3M/