mcpField
S
scenario-blender-texturing-shading

scenario-blender-texturing-shading

github.com/scenario-labs创意与媒体1.2k476 次安装1 天前更新
代码仓库

关于 scenario-blender-texturing-shading

面向创作写实或风格化材质的艺术家的 Blender 5.2 贴图与着色技能。其节点工具包可构建分层遮罩效果,并在烘焙前通过 EEVEE 和 Cycles 检查材质表现。

主要功能

  1. 01从纹理集构建 PBR 材质
  2. 02用分层遮罩制作磨损与污渍
  3. 03程序化与手绘材质
  4. 04角色皮肤、眼睛和头发着色
  5. 05材质审计与渲染预览

适用场景

  1. 01为道具添加边缘磨损和污垢
  2. 02制作风格化皮肤与眼睛材质
  3. 03在不同光照下检查粗糙度与浮雕
  4. 04烘焙程序化材质以便导出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-blender-texturing-shading

安装后在 Claude Code 中输入/scenario-blender-texturing-shading确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
bx_materials.py

详细介绍

纹理与着色(Blender 5.2)

专业着色会将分层遮罩接入符合物理规律的数值:先用干净的底层(扫描素材集或纯色),再用对比鲜明的黑白遮罩来放置颜色、粗糙度、高度和次表面散射,且全部都能在节点中编辑。应在两种引擎的真实光照下评估数值,最后再烘焙,以便移植。如果这里提到的同级技能不在你可用的技能中,请让用户安装它(npx skills add scenario-labs/skills --skill <name>);如果无人值守,则根据工具架构继续操作,并指出这一缺失。

必备背景: scenario-blender-expert(执行渠道、审查流程、5.2 API 更改)。 烘焙贴图:scenario-blender-uv-baking。灯光与最终渲染: scenario-blender-lighting-rendering。

工具包:scripts/bx_materials.py(构建器、无头绘制、检查; 由 tests/code/blender-texturing-shading/ 测试)。 sys.path.append("<this skill>/scripts"); import bx_materials as M。

核心原则(专家经验要点)

  • 数据贴图应设为 Non-Color,遵循“不是看起来更好,而是数值正确”(Price)。只有基础色和 发射使用 sRGB。
  • 法线贴图和置换二选一,绝不同时使用(Price,Cycles 负责人 Brecht 已确认):它们编码 相同的起伏。需要组合高度或真正置换时使用置换;导出和确保 8 位精度时使用法线贴图。
  • 使用遮罩,而不是绘制颜色。 Kaspar 和 Price 会将每种效果都制作为灰度遮罩,接入 Mix 或 HSV 因子;颜色放在 A/B 输入中。遮罩需要足够对比度(收紧 Color Ramp 色标),否则几乎看不出来。同一遮罩可驱动粗糙度、高度和 SSS。
  • 写实风格:扫描素材集加遮罩;风格化:程序化(Price 与 Kaspar、Ryan King 的做法)。Kaspar 会将照片提炼为其图案(模糊加颗粒提取),再自行添加污渍,并在最后烘焙以便移植(导出、缩短 EEVEE 加载时间),而不是为了提升 Cycles 速度。
  • 皮肤和头发的微细节应体现在粗糙度中,而不是凹凸中(Kaspar);通过 HSV Value 调整粗糙度,切勿拔掉贴图(Price)。Specular 保持为 0.5。Bump Distance 应设为贴图 0..1 范围所代表的实际高度:调低 Distance,而不是 Strength(Kaspar)。
  • **真实评估:**使用 Standard 视图、均匀的中灰背景、设为黑色的 Base Color 以观察 粗糙度、强烈的背光和下方的灯光(Kaspar);用掠射光观察起伏(Price);用无光照模式检查手绘反照率(Abbitt)。用 EEVEE 迭代,用 Cycles 检验真实效果,两者必须一致(Kaspar)。
  • SSS 应符合解剖结构(Kaspar):耳朵、鼻子、眼睑、嘴唇和指尖处较高;骨骼覆盖处较低。 使用黑白遮罩,Map Range 用于设置数值。
  • Bevel、AO、Pointiness 和 Random Per Island 仅适用于 Cycles,且 Bevel/AO 具有随机性 [新增,实测]:EEVEE 不显示 Bevel 边缘;无论采样数是多少,经过阈值处理的实时遮罩都会产生 17% 到 18% 的小数金属度。请先烘焙再进行阈值处理,或使用顶点曲率。

优先确定的事项

输入影响未明确说明时的默认值
目标:Cycles 静帧、EEVEE、游戏引擎使用仅支持 Cycles 的节点还是烘焙;AO 放入反照率(渲染)还是 ORM(游戏)最终效果使用 Cycles,EEVEE 并排对比
风格:写实或风格化扫描素材集 + 污垢,还是程序化或手绘光照克制的风格化(Kaspar)
UV 和变形UV 图像、盒投影还是基于 Object 的程序化纹理刚性物体、无 UV:盒投影;会变形:仅使用 UV
比例瓷砖尺寸、凹凸/置换的米数使用实际米数,应用比例(所有专家均如此)
纹素预算、导出主体绘制使用 2K 到 4K,大型平铺表面使用 4K 到 8K主体道具使用 2K,glTF ORM,OpenGL 法线

工作流

  1. 每个部件的基础处理。 为材质添加前缀,移除占位符,设置 diffuse_color;在漫反射颜色通道中挑选颜色值(matcap 让 Kaspar 的皮肤过于苍白)。应用缩放。门槛:M.value_report(objs) 无问题。
  2. 基础材质。 设置:M.pbr_from_textures(mat, M.find_texture_set(dir), uv_map=...):按用途设置颜色空间,将 AO 以因子 1 混合(Price:恢复 AO 阴影,修复了阴影的闪光;游戏项目使用 ao_mode="gltf"),只有没有法线贴图时才添加凹凸;height_as="displacement" 会移除法线贴图,并设置 Cubic 插值、Displacement 和 Bump;Poliigon 的 Scale 设为 0.2(固定 20 cm 范围);添加 Simple 细分并平滑着色。UV 平铺尺寸 = 纹理集的实际尺寸。刚性物体、无 UV:projection="BOX"。程序化材质:使用 Object 坐标(变形网格使用 UV),Noise Detail 最多为 5(每级成本翻倍,Price)。门槛:M.audit_material(mat, obj) 无错误。
  3. 遮罩。 Kaspar 的规则是根据顶点密度选择遮罩频率:大范围柔和遮罩使用顶点颜色(Price 的环境也使用顶点颜色:平铺 UV 会重复图像笔触,布局也会变化),精细或导出的细节使用图像,衣摆使用 UV 条带。无头模式:M.mask_from_points、M.write_vertex_values、M.smooth_attribute、M.curvature_attribute、M.TexelMap + M.project。Price 的 Color Burn:用对比度渐变的高度图(B)对柔和遮罩(A)执行 Color Burn,使遮罩沿砖块断开或进入勾缝(程序 P18)。门槛:将每个遮罩渲染为自发光材质。
  4. 图层。 M.add_wear(mat, edge_color=..., edge_roughness=..., edge_metallic=1) 会添加变化、凹处/污垢和掉漆边缘。混合模式:Multiply 使颜色变暗(污垢、霉菌),Screen 使颜色变亮(泛碱、亮部;Add 会超过 1),Subtract 用于高度链以表现剥落(Price)。链条顺序决定年代感(污垢之前的贴花看起来更旧)。贴花:将 Alpha 接入 Factor,Extension 设为 Clip(M.add_decal)。门槛: M.preview(objs, out, rigs=("studio", "roughness")):效果应顺着形体和水流路径分布,不应均匀重复;打破重复感。
  5. 角色特定处理。 M.stylized_skin(mat, obj=body)(遮罩为 col_brighter/col_darker/col_lips/col_sss/col_rough);每个眼睛物体分别使用 M.stylized_eye(原点位于眼球中心),并添加 M.cornea_material,设置 cornea.visible_shadow = False;头发高光:在与发丝方向对齐的 UV 映射上使用带 Tangent 的 Anisotropic(仅限 Cycles)。门槛:rigs=("backlit",):耳朵、鼻孔、嘴唇和手指透出红光;正面不显蜡质;巩膜为灰白色。
  6. 风格化手绘光照(Abbitt):顶部较亮、底部较暗,凹处使用 Multiply,肢体末端使用 Screen。无头模式:根据曲率属性使用 M.painted_light(mat, obj),烘焙 Emit,并用 rigs=("unlit",) 检查效果。
  7. 在遮罩无法定位的地方进行绘制。 GUI:笔刷是资产(Paint Hard/Soft、Airbrush、Blur、Smear、Fill、Mask);出厂默认的 5.2 会话中,笔刷和统一颜色设置好之前,绘制结果为黑色;笔触从屏幕投射,因此要正对表面(Abbitt);擦除需要 alpha 通道;向外扩展 8 到 12 px(Kaspar、Abbitt)。使用 M.gui_texture_stroke():它会强制重绘(投射绘制会被上一次绘制的深度缓冲遮挡:一次运行中,在设置调用里发出的笔触只绘制了 162 个纹素,而非约 14,000 个;另一次运行中则覆盖完整),并对印章点进行重新采样。无头模式:M.TexelMap + M.paint_stroke 按世界距离绘制,包括接缝;然后使用 M.dilate,再使用 M.save_image(脚本不会将图像与 .blend 一同保存)。门槛:渲染视图应跨越接缝。
  8. 外观开发检查与烘焙。 使用 M.preview(EEVEE 和 Cycles,studio、backlit、roughness)、M.value_report、带标签的帧和节点组(Kaspar、Price)。通过 Emission 烘焙程序化通道,采样数至少为 30,并通过使用贴图重建材质来验证(scenario-blender-uv-baking)。

数值

数值数值来源
电介质反照率/金属反射率sRGB 约为 30 到 240/180 到 255;金属度为 0 或 1范围[新增];二元金属度:Ryan King、Price
皮肤粗糙度0.68 到 0.72,粗糙区域为 0.72 到 1,嘴唇和口腔约为 0.4Kaspar
毛孔Voronoi Smooth F1 缩放值为 100 和 200,噪声混合比例为 0.2 到 0.25Kaspar,使用其 UV
皮肤 SSS 尺度(5.2)0.005 到 0.04 m在 0.33 m 头部上测量;Kaspar 的 v1 中 0.02 到 0.15 在 5.2 中呈现蜡质效果
凹凸Distance 约为 0.001,织物的 Strength 为 0.1 到 0.2Kaspar
置换Scale 为 0.2(Poliigon),Midlevel 为 0.5,Cubic,16 位源图像Price
砖墙粗糙度约为 0.7Price
颜色微调色相在 0.5 的正负 0.04 范围内Price
噪声细节不超过 5Price
磨损倒角半径1 m 木箱上为 0.04测量值
涂料渗色/岛间距8 到 12 px/0.01 到 0.05Kaspar、Abbitt
绘制高度2K、32 位浮点、底值为 0.5、Non-ColorKaspar;0.5 灰色底值也来自 Ryan King
烘焙采样数至少 30Kaspar

质量门槛

可测量:

  • M.audit_material(mat, obj):按角色设置颜色空间,不能将图像直接接入 Normal,明确指定 UV 映射,Bump Distance 不超过 0.05,不能使用 Add Shader 或直接相加的法线,设置 Emission Strength,不能使用灰色常量金属度,标记法线贴图加置换、非 Cubic 置换图像、Noise Detail 高于 6、未保存的图像。
  • M.value_report(objs):电介质反照率在 30 到 243 sRGB 范围内(范围外低于 2%),金属度高于 180,分数金属度低于 5%(实时 Bevel/AO 磨损在烘焙前会超过此值),粗糙度标准差高于 0.01。
  • 应用缩放;颜色属性命名为 col_*,并与每个 Attribute 节点完全匹配(Kaspar、 Price)。

视觉效果:M.preview 中 EEVEE 与 Cycles 几乎一致;粗糙度行显示出变化;只有皮肤较薄处才有背光辉光;掠射光能显示起伏且没有阶梯状条纹;远处的重复纹理已被打散;逐层静音渲染时,每层都有所贡献(Price);以人体参考物校准比例。

常见错误

错误表现修正
数据贴图保留为 sRGB凸起变形,高光错误Non-Color
同时使用法线贴图和置换(Node Wrangler 默认设置)浮雕效果重叠或破损只保留一个
置换没有几何体或 Catmull-Clark没有变化,或边角变圆使用 Simple subdivision,平滑着色
4.5 之前版本的 Bump Distance 设为 1.0阶梯感,像塑料使用真实高度,约为 0.001 到 0.01
设置了 Emission Color,Strength 却为 0没有发光将 Strength 设为大于 0
在 5.2 中使用 Kaspar 的 v1 SSS 数值耳朵呈蜡白色设为 0.005 到 0.04,并检查背光效果
在 EEVEE 或游戏中使用 Bevel 磨损或 Pointiness磨损效果缺失烘焙,或使用 curvature_attribute
对实时 Bevel/AO 金属效果使用阈值边缘呈颗粒状灰色先烘焙,再设置阈值
EEVEE 中的角膜外壳使用默认厚度虹膜放大将 Thickness 设为 0(cornea_material)
直接使用 Noise 生成遮罩效果几乎不可见使用渐变或 Map Range 增强对比度
设置完成后立即绘制笔画只绘制出部分或没有绘制,且每次运行结果不同先重新绘制(gui_texture_stroke)
从未设置绘制颜色/新建颜色属性笔画呈黑色/遮罩呈白色设置颜色;先写入零值
在绑定模型上使用 Box projection 或 Generated 坐标纹理漂移使用 UV 坐标

Blender 5.2 注意事项

  • Principled v2:Subsurface Weight/Scale(没有 Subsurface Color)、Specular IOR Level、Transmission Weight、Coat、Emission Strength 默认值为 0。通过名称获取插槽;Mix 节点通过索引获取(RGBA:A=6,B=7, Result=2)。
  • 色彩空间 sRGB、Non-Color、Linear Rec.709。Displacement 节点的 Scale 默认值为 0.01; 使用 material.displacement_method(而不是 material.cycles);EEVEE 从 4.2 开始支持置换(Displacement and Bump)。
  • use_nodes 已弃用;surface_render_method 取代 blend_method;折射需要 use_raytrace_refraction 以及场景光线追踪。
  • EEVEE 不支持各向异性、Bevel、Pointiness、Random Per Island(已验证)。Random Walk SSS 在 5.2 中重新缩放。Musgrave 已整合到 Noise 中。
  • 笔刷是资产;自定义笔刷需要使用 "Save Changes to Asset"(Abbitt);image_brush_type;Blur 对应 SOFTEN;取样颜色使用 Shift+X。
  • 在 Object 模式下,无界面运行时也可使用 paint.vertex_color_dirt;字节图像存储编码值,保存为 PNG 时,浮点 Linear Rec.709 图像会转换为 sRGB。

参考资料

  • references/procedures.md:每个阶段经过测试的代码(纹理集、 置换规则、盒式投影、磨损、曲率、贴花、皮肤、眼睛、各向异性、GUI 和 无界面绘制、高通、检查、摄像机射线世界、陶土切换、绘制光照、Color Burn 遮罩、物理 UV 比例)。
  • references/expert-notes.md:各位专家的推理、时间戳,以及 分歧和用于裁定的条件。
  • references/critique.md:用于评判自己的渲染和节点树的标准。
  • references/sources.md:所有来源视频、凭据和最佳时间戳。

评论

支持 Markdown