Material Binding#
Code |
UO.011 |
|---|---|
Validator |
|
Applies to |
renderable meshes; checked on component ( |
Requirement level |
SHOULD (advisory check) |
Tags |
|
Summary#
Renderable meshes SHOULD carry a bound material so the board renders with its nominal appearance. Board copper and mask geometry with production-accurate materials is required by BG.002; the bound material’s class must agree with the mesh role (UO.017).
This page follows PCBA to USD Input Contract 1.0.2, sections 3, 5 and 9.
Description#
The desirable layout carries a Looks/ scope with one material per role class (copper, mask,
paste, substrate, body, lead, …), bound through the standard material:binding relationship.
Materials are approximate at input time — the pipeline randomizes appearance downstream — so
the contract does not make the binding itself a hard requirement on every mesh; it requires
that where a material is bound it agrees with the role by class (UO.017), and that copper and
mask geometry exist with materials that give production-accurate board colour (BG.002).
The semantic material class is a separate attribute, pcba:mesh:matClass
(CG.012): required
explicitly on pkg_* and fixture_* meshes, whose material is genuinely ambiguous, and derived
from the role on board_* meshes. Where an exporter cannot substantiate a class, it declares
the gap with pcba:prov:matClass rather than authoring a rendering default as data.
Fields#
Attribute |
Type |
Req |
Notes |
|---|---|---|---|
|
|
SHOULD |
Standard USD binding to a |
|
|
MUST on |
|
Why is it required?#
A bound material is what makes the mesh render; component bodies and leads without one render with a fallback that misrepresents the part.
Pairing the binding with a semantic
matClasslets the pipeline reason about surfaces without parsing shader networks.
Example#
def Mesh "Body" (
prepend apiSchemas = ["MaterialBindingAPI"]
)
{
token pcba:mesh:role = "pkg_body"
token pcba:mesh:matClass = "plastic"
rel material:binding = </Board/Looks/EpoxyBlack>
}
How to comply#
Bind a
UsdShade.Materialof the matching class to component and board meshes.Author
pcba:mesh:matClassonpkg_*andfixture_*meshes; let it derive for board roles.Keep binding and class consistent so UO.017 passes.
What the checker proves#
MaterialBindingChecker is advisory: it warns for each pkg_* mesh with no direct
material:binding target. It does not check board meshes, the material’s contents, or
matClass (CG.012 and UO.017 do).