#3862 (closed) (probably) introduced unrealistic 3D preview as can be seen in the attachment. In reality, all soldermask-free copper regions comes plated, I haven't seen bare copper exposed on any simple pcbs.
Aren't we going too far with the "realistic" vs "unrealistic" ?
This with is not easily implemented on the current 3D-Viewer or it would be so time consuming, both for development and as CPU calculations, that wont bring any joy.
Maybe it is easier to implement an option to disable non-plated/plated pad distinction.
How does kicad decides which copper is plated or not?
From my experience:
"plated copper" = "any copper with void of soldermask";
"unplated copper" = "any copper covered by soldermask".
PCB manufacturers use this logic, and I think one would need to contact PCB manufacturer to explicitly tell which additional areas should be voided from plating process, and this will cost more. So "unplated copper" is a truly non standard option, and should not be seen on 3D viewer as default.
@KammutierSpule I think kicad decision of which copper should be treated as "plated" is wrong in recent build and needs to be fixed.
@jon Evans - I agree, there should be an additional color setting "Bare copper color" next to existing "Surface finish color..." inside 3D viewer settings.
Having both colors will enable us to have renderings of:
"Exotic PCB" (#3862 (closed) case with transparent soldermask): Bare copper traces rendered under clear soldermask + bare copper pads;
"Usual PCB": Bare color traces rendered under soldermask + gold-finished copper areas under soldermask openings;
"Homemade PCB": Bare copper traces + bare copper pads, without any soldermask rendering;
How does kicad decides which copper is plated or not?
At this moment, only plated pads are rendered.
It was made that way because it was the easiest way (and faster to compute) to render plated/non-plated pads.
So this option should be called "render only plated pads as plated copper"
yeah!
Actually, what I mean with "plated pads" is: pads that has copper and are marked (checkbox on the layer option) to remove the soldermask (so they will get plated copper)
I agree with @WhiteChairFromIkea. I think it's too limiting to only have pads plated and not other exposed copper (traces, fills, etc.). Isn't the calculation needed for this very similar to the "Subtract soldermask from silkscreen" function (well, maybe union instead of subtraction)?
As it was implemented, it gets the information directly from the pads. Pads that has copper and are using SolderMask are considered to be plated (plated copper).
Hey, I'm not totally sure I follow some of the above discussion, but this behavior does seem to be pretty unpredictable in general. Look at this screenshot of a connector - some pads are rendered in the copper color and others in the surface finish...
Could you check the layer options on those pads if they are equal?
Does it render same thing on different zooms or if you place the same component on a new (eg smaller) board?
@alexisvl@KammutierSpule It also happened to me because you optimized the pads stack before filling the zones. Try to see if it returns to normal, on Pcbnew at the menu
No! .. sorry, !407 (merged) didn't fixed the issue..
it just added an option to control it and now by default it will render as before this plated feature was implemented.
So now, you will need to tick the checkbox to enable this issue :)
This will be difficult to implement/full fix this issue.
As in the original example image it would need to get all solder mask layer and calculate the intersection with the copper layer. This will also result on long board CPU calculations.
The pads are easy to display because there is plated/unplated information on pad design, so the pad can be created directly with the appropriate render material.
I believe there is already code to generate the full solder mask polygon set which should result in the exact solder mask coverage in all cases. The tricky part is going to be calculating the exposed copper and applying the plating material color to it. I agree that this is most likely going to be painfully slow so it probably should be a preference setting so that it can be disabled.
There are currently some issues with pads and vias depending on the solder mask settings that can result in incorrect copper plating rendering so this solution would resolve those as well.
We do have commercial users who design boards for their customers who would like to be able to provide accurate 3D images of the final product.
Note that for true accuracy you have to post-process to the soldermask layer as a whole to remove areas that are less than min-web-width. You can find code that does this in PlotSolderMaskLayer() and in DRC_TEST_PROVIDER_SOLDER_MASK::buildRTrees().