Loading...
Loading...
Use when texturing, shading or look-developing in Blender: building a PBR material from a texture set, displacement, procedural materials, edge wear, dirt, grime, color variation, decals, box or triplanar mapping on meshes without UVs, stylized character skin (subsurface, pores), eyes and cornea, hand-painted stylized textures, texture painting or painting masks headless. Also when a material looks plastic, CG, waxy or blown out, color spaces are wrong, or EEVEE and Cycles disagree.
npx skill4agent add scenario-labs/skills scenario-blender-texturing-shadingnpx skills add scenario-labs/skills --skill <name>scripts/bx_materials.pytests/code/blender-texturing-shading/sys.path.append("<this skill>/scripts"); import bx_materials as M| Input | Changes | Default when silent |
|---|---|---|
| Target: Cycles still, EEVEE, game engine | live Cycles-only nodes vs baked; AO in albedo (render) vs ORM (game) | Cycles finals, EEVEE side by side |
| Style: realistic or stylized | scanned set + grime vs procedural or hand-painted light | stylized restraint (Kaspar) |
| UVs and deformation | UV images vs box projection vs Object procedurals | rigid, no UVs: box; deforming: UV only |
| Scale | tile size, bump/displacement meters | real meters, scale applied (all experts) |
| Texel budget, export | 2K to 4K hero paint, 4K to 8K large tiling surfaces | 2K hero prop, glTF ORM, OpenGL normals |
diffuse_colorM.value_report(objs)M.pbr_from_textures(mat, M.find_texture_set(dir), uv_map=...)ao_mode="gltf"height_as="displacement"projection="BOX"M.audit_material(mat, obj)M.mask_from_pointsM.write_vertex_valuesM.smooth_attributeM.curvature_attributeM.TexelMapM.projectM.add_wear(mat, edge_color=..., edge_roughness=..., edge_metallic=1)M.add_decalM.preview(objs, out, rigs=("studio", "roughness"))M.stylized_skin(mat, obj=body)col_brighter/col_darker/col_lips/col_sss/col_roughM.stylized_eyeM.cornea_materialcornea.visible_shadow = Falserigs=("backlit",)M.painted_light(mat, obj)rigs=("unlit",)Paint Hard/SoftAirbrushBlurSmearFillMaskM.gui_texture_stroke()M.TexelMapM.paint_strokeM.dilateM.save_imageM.previewM.value_report| Value | Number | Source |
|---|---|---|
| Dielectric albedo / metal reflectance | sRGB about 30 to 240 / 180 to 255; metallic 0 or 1 | ranges [added]; binary metallic: Ryan King, Price |
| Skin roughness | 0.68 to 0.72, rough zones 0.72 to 1, lips and mouth about 0.4 | Kaspar |
| Pores | Voronoi Smooth F1 scales 100 and 200, noise mix 0.2 to 0.25 | Kaspar, on his UVs |
| Skin SSS scale (5.2) | 0.005 to 0.04 m | measured on a 0.33 m head; Kaspar's v1 0.02 to 0.15 is waxy in 5.2 |
| Bump | Distance about 0.001, Strength 0.1 to 0.2 for fabric | Kaspar |
| Displacement | Scale 0.2 (Poliigon), Midlevel 0.5, Cubic, 16-bit source | Price |
| Brick wall roughness | about 0.7 | Price |
| Color tweak | Hue within 0.5 plus or minus 0.04 | Price |
| Noise Detail | 5 or less | Price |
| Edge-wear Bevel radius | 0.04 on a 1 m crate | measured |
| Paint bleed / island margin | 8 to 12 px / 0.01 to 0.05 | Kaspar, Abbitt |
| Painted height | 2K, 32-bit float, base 0.5, Non-Color | Kaspar; 0.5 gray base also Ryan King |
| Bake samples | 30 minimum | Kaspar |
M.audit_material(mat, obj)M.value_report(objs)col_*M.preview| Mistake | Looks like | Fix |
|---|---|---|
| Data map left sRGB | bent bump, wrong gloss | Non-Color |
| Normal map and displacement together (Node Wrangler default) | doubled or broken relief | keep one |
| Displacement with no geometry or Catmull-Clark | nothing, or rounded corners | Simple subdivision, shade smooth |
| Pre-4.5 Bump Distance 1.0 | stepped, plastic | real height, about 0.001 to 0.01 |
| Emission Color set, Strength 0 | no glow | Strength above 0 |
| Kaspar's v1 SSS values in 5.2 | waxy white ears | 0.005 to 0.04, check backlit |
| Bevel wear or Pointiness in EEVEE or games | wear missing | bake, or |
| Threshold on live Bevel/AO for metallic | grainy gray borders | bake, then threshold |
| Cornea shell in EEVEE, default thickness | iris magnified | Thickness 0 ( |
| Mask straight from Noise | effect barely visible | ramp or Map Range for contrast |
| Stroke right after setup | partial or no paint, varies per run | redraw first ( |
| Paint color never set / new color attribute | black strokes / white mask | set colors; write zeros first |
| Box projection or Generated coords on a rig | texture swims | UV coordinates |
sRGBNon-ColorLinear Rec.709material.displacement_methodmaterial.cyclesuse_nodessurface_render_methodblend_methoduse_raytrace_refractionimage_brush_typeSOFTENShift+Xpaint.vertex_color_dirtLinear Rec.709references/procedures.mdreferences/expert-notes.mdreferences/critique.mdreferences/sources.md