3D render: allow different color for plated and unplated copper

I am trying to model the appearance of clear soldermask on black substrate. The fiberglass (FR-4) is dyed black. The solder mask is clear. Copper under mask appears natural color of copper (light orange or salmon) while the expose copper is plated gold.

Here is a photo of a such a board:

Here are the steps I followed in 3D viewer options:

  1. Turn off Soldermask
  2. set the “Copper/Surface finish color” to copper color
  3. set the Paste to gold color (to fake the appearance of gold plating)

Problem
The plated through hole vias appear copper color, but they should be rendered as gold.

I created a feature request because it seems like this is will need to be implemented in code:

But if anyone has ideas how to achieve through configuration options, then please let me know.

Thanks!

No they shouldn’t, because they don’t have paste. They are rendered like SMD pads or other bare copper without paste.

What does your subject line “allow different color for plated and unplated copper” mean? All bare, uncovered copper on the board is usually plated in the same way, so it wouldn’t affect SMD vs. THT pads.

No they shouldn’t, because they don’t have paste. They are rendered like SMD pads or other bare copper without paste.

I should clarify that I am misusing paste layer to represent what plated copper pad looks like (gold) as compared to unplated copper (orange).

The trouble with this approach is that plated via do not, of course, have paste defined. So I can not figure out a way to paint them gold and have unplated copper appear “copper color”/orange.

The goal I have for the 3d-viewer would be to have:

  • clear soldermask (by turning off soldermask in the render option)
  • copper under soldermask to appear “light orange” (the color of copper)
  • exposed copper (SMD pads and plated vias) to appear gold

Because this goes through feature wishes anyways, I think it should be cleared up a bit.

This is now in the wishlist in the form of non-opaque color, linked to (“mentioned” by the other report) in your bug report.

That one is already the default.

This is what is still needed: exposed copper (non-masked copper) has different kind of surface than the copper under the mask.

In your bug report it wasn’t originally clear what you actually needed or what would be the exact way to resolve it. You changed the title to “allow different color for plated and unplated copper”. Do we now understand this in the same way?

The stackup editor in 5.99 has the plating option:

The 3D view can import the colors from there; it would be reasonable to take the copper finish in consideration, even though it’s not “color” per se.

Maybe you could add this to your bug report?

1 Like

Thanks for helping to better describe what I would like to achieve. This is the first KiCad issue I’ve created so I appreciate feedback on how to make it better.

And thank you for showing me the plating option in 5.99.

I’ll update the issue.

Interesting results with:

and modified code to change mask transparency to 80%:

--- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp
+++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp
@@ -254,7 +254,8 @@ void C3D_RENDER_OGL_LEGACY::setupMaterials()
                         m_settings.m_SolderMaskColorTop.b * m_settings.m_SolderMaskColorTop.b );
 
         m_materials.m_SolderMaskTop.m_Shininess    = 0.8f * 128.0f;
-        m_materials.m_SolderMaskTop.m_Transparency = 0.17f;
+        m_materials.m_SolderMaskTop.m_Transparency = 0.80f;
+        printf("debug: Realistic Mode: set m_materials.m_SolderMaskTop.m_Transparency=%0.2f\n", m_materials.m_SolderMaskTop.m_Transparency);
         m_materials.m_SolderMaskTop.m_Emissive     = SFVEC3F( 0.0f, 0.0f, 0.0f );
 
         // Solder mask material mixed with solder mask color
@@ -268,7 +269,8 @@ void C3D_RENDER_OGL_LEGACY::setupMaterials()
                         m_settings.m_SolderMaskColorBot.b * m_settings.m_SolderMaskColorBot.b );
 
         m_materials.m_SolderMaskBot.m_Shininess    = 0.8f * 128.0f;
-        m_materials.m_SolderMaskBot.m_Transparency = 0.17f;
+        m_materials.m_SolderMaskBot.m_Transparency = 0.80f;
+        printf("debug: Realistic Mode: set m_materials.m_SolderMaskBot.m_Transparency=%0.2f\n", m_materials.m_SolderMaskBot.m_Transparency);
         m_materials.m_SolderMaskBot.m_Emissive     = SFVEC3F( 0.0f, 0.0f, 0.0f );
 

  • The “square” pin 1 on CON1 appears a lighter shade of copper
  • The SMD footprint pads appears lighter color

Question:

  • How do I make the normal through vias in the CON1 appear lighter color too?
1 Like

Another observation, when I select Technical Mode, there is a difference in color (light vs. dark red) from the plated and non-plated copper. This is exactly what I want, but it doesn’t seem like I can select the colors in the same way as Realistic Mode.

Technical appears to use the color of the layers in Pcbnew.

I changed F.Cu to an orange color (to approximate copper under clear mask).

The plated copper in the footprints appears red. I’m not sure how to change to Yellow (Gold).

However, this render does have the distinction between plated and non-plated copper and that is what I am looking for.

Thanks,
Drew

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.