I spent some time playing around with 3D printed bezels again - this time, printing the diffuser as well as the bezel. You can see the results: no bezel/diffuser (top), white bezel/white diffuser (middle), black bezel/white diffuser (bottom). You lose some brightness with the black bezel, but the overall effect is much better because it really kills the light bleeding.
The diffuser is a single layer of 0.2mm white PLA+. The bezel (square cells) is printed directly on top of the diffuser layer. For white/white, it's just a single print, but to get the black bezel on a white diffuser, I had to make two separate-gcode files, and swap filament in between printing them. It's a little bit of a pain, but the result works pretty well.
Here, I'm purging any white filament from the hotend after printing the diffuser layer and loading the black filament:
Next, I run the bezel g-code to construct the cells right on top of the diffuser:
The result is a single piece which fits over the 0603 LEDs (on 0.1" centers):
Like the previous experiments with 3D printed bezels at this scale, normal slicers just don't cut it :-) I had to generate the g-code to print these using a python program. After you get started, though, it's pretty cool what you can do by putting down a few hundred microns of plastic exactly where you want it.
I think I'm going to expand the code to add brackets to mount the bezel to the PCB holes. More python -> more g-code -> more melted plastic.