I spent some time working on this issue and here is an answer that is fully open source. Yes, you can create great renders of your models freely, with some effort.
This solution is focused on improving solid model to beautiful render workflow
TLDR; and jump to 3) Solution if you are not interested in the synthesis
1. Create/Import your model
You are likely reading this because you either created a model in a CAD software or you have found STEP files for a model you would like to shade and render.
In my case, I designed the model using Freecad 0.19.2 and I also merged some models that were already available.
2. Problems with .obj + .mtl export
If you try to export your multi-component model as an .obj file and then import it to blender, you will face one of the following issues:
a) Blender will see a single unshaded mesh object and texturing this is imposible, considering that the model has 350 parts 
The example above is a singular mesh with no shading and is rendered with using Cycles render and standard lighting
b) You export your model as obj + mtl and every component is shaded. However, when you import this to Blender, Blender will assign all of your materials to a single mesh, respecting the position of the materials on the individual parts (parts of the single mesh)

The black plate and the coloured components in the green highlight are all part of the same mesh. The element in the red rectangle shows this. You can also see that there are 26 materials applied on this mesh. Adding customization to this is close to impossible for more components because it's hard to which one you are editing.
c) You can also export all objects individually and then "assemble" them in Blender, which even sounds hard - however, with this you lose the hierarchy you have in the CAD software and management and workflow, again, broken
3. Export your models using glTF
Read more about glTF here
This file format is going to achieve the following:
- The solid/body to mesh conversion from the exporting software is automatic based on global settings that you can play with (for max number of vertices/triangles etc)
- Keep meshes separate
- Retain your object hierarchy from CAD
- Retain your material properties, for each object in the hierarchy
Unfortunately Freecad 0.19.2 doesn't offer this out of the box, BUT I found out that Freecad 0.20 is being prepared and there are weekly builds.
My solution was to use Freecad 0.20 (mid-November release) which supports exports to glTF 2.
To do this, select your model and go to File -> Export and select glTF.
Here's what my hierarchy looks like in Freecad

And here's the model after shading in Blender.

I altered the hierarchy in Blender a bit to improve my workflow
Although I don't understand the algorithm behind the glTF 2 export from Freecad, I can tell that for my model which is fairly complex, the process is almost instant (unlike exporting to obj or first creating meshes and then exporting)