关于 blender-shader-nodes
面向 Blender 5.x 材质创作与着色器节点工作的技能,适用于需要搭建节点树或编写 Python 脚本的用户。它提供节点参考、材质配方、渲染引擎差异说明及调试建议。
主要功能
- 01设计材质与着色器节点树
- 02通过 Python 脚本构建节点
- 03查询节点目录与 API
- 04比较 Cycles 和 EEVEE
- 05诊断材质显示问题
适用场景
- 01创建基于纹理的 PBR 材质
- 02制作程序化材质与玻璃效果
- 03排查法线贴图或透明度异常
- 04在 Cycles 与 EEVEE 间调整材质
MCP 相关
优先配合官方 Blender MCP Server,在运行中的 Blender 会话中创建材质、连接节点树并采样视口渲染。未连接时,可改用 Python 脚本;技能还建议先检查场景,再修改并通过截图或摘要验证。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ra100/ blender-claude-plugin --skill blender-shader-nodes安装后在 Claude Code 中输入/blender-shader-nodes确认已加载。
附带文件references/node_reference.mdreferences/python_api.md
详细介绍
Blender 着色器节点专家
概述
此技能为 Blender 5.x 着色器节点提供专家指导:设计材质设置、编写 Python 脚本以编程方式构建着色器节点树、了解渲染引擎差异(Cycles 与 EEVEE),以及访问完整的着色器节点目录。包含 5.0 和 5.1 的变更(Raycast 节点、Normal Map 的 OpenGL/DirectX 切换、OpenColorIO 2.5)。
MCP 优先方案
创建材质、连接着色器节点树,以及直接在运行中的 Blender 会话里采样视口渲染时,优先使用官方 Blender MCP Server(Blender Lab,Blender 5.1+)。仅当 MCP 服务未连接时,才回退为输出 Python 脚本。
**检测:**在会话开始时,查找名称与 execute_blender_code、get_objects_summary 或 search_api_docs 匹配的工具——这些工具属于官方 blender-mcp 服务。如果其中任意工具存在,即表示 MCP 可用。
此技能使用的工具:
execute_blender_code— 在实时会话中运行bpyPython(主要操作)get_objects_summary、get_object_detail_summary— 在修改前检查场景状态get_blendfile_summary_datablocks/_missing_files/_of_linked_libraries/_path_info/_usage_guess— 清点文件内容search_api_docs、get_python_api_docs、search_manual_docs— 在调用前确认正确的 API/操作符名称get_screenshot_of_window_as_image/_as_json、get_screenshot_of_area_as_image— 验证视觉结果jump_to_tab_by_name、jump_to_tab_by_space_type、jump_to_view3d_object_by_name、jump_to_view3d_object_data_by_name— 操作 UI,让更改可见render_thumbnail_to_path、render_viewport_to_path— 获取快速视觉反馈
**工作流:**使用 get_* / search_* 工具检查 → 通过 execute_blender_code 修改 → 使用截图或摘要工具验证。代码块应保持简短且幂等,以便轻松定位故障。
设置说明:参见 docs/blender-mcp-setup.md。
任务决策树
- “为 X 创建材质” -> 确定材质类型,设计节点树,生成 Python 代码(参见“材质方案”)
- “我的材质看起来不对” -> 按照调试工作流处理
- “X 对应什么节点?” -> 查阅
references/node_reference.md - “设置世界光照 / HDRI” -> 参见 Python API 参考中的“世界/环境”模式
- “编写着色器节点树脚本” -> 查阅
references/python_api.md了解 API 模式 - “Cycles 和 EEVEE 哪个更好?” -> 查看
node_reference.md中的渲染引擎兼容性部分
生成着色器节点树
通过 Python 创建材质时:
- 阅读
references/python_api.md,了解正确的 API 模式和节点类型字符串 - 按照以下模式组织脚本:
- 使用
use_nodes = True创建材质 - 清除默认节点
- 添加所有节点,并使用正确的类型字符串
- 从左到右排列节点(x 间距约为 300,y 间距约为 200)
- 设置输入的默认值
- 创建节点之间的所有连接
- 将材质指定给目标对象
- 使用
- 使用 Frame 节点将复杂设置整理为逻辑分区
节点类型字符串约定
- 大多数着色器节点:
ShaderNode<PascalCaseName>(例如,ShaderNodeBsdfPrincipled、ShaderNodeTexNoise) - 几何输入:
ShaderNodeNewGeometry(不是ShaderNodeGeometry) - 颜色属性:
ShaderNodeVertexColor - Mix 节点:
ShaderNodeMix,并将data_type设为'RGBA'、'FLOAT'或'VECTOR' - Color Ramp:
ShaderNodeValToRGB - 不确定确切的类型字符串时,请查阅
references/python_api.md
材质方案
PBR 材质(基于纹理)
- Texture Coordinate -> Mapping -> Image Texture(s) -> Principled BSDF -> Material Output
- 连接贴图:Base Color(sRGB)、Roughness(Non-Color)、Metallic(Non-Color)、Normal Map(Non-Color)-> Normal Map 节点 -> Normal 输入
- 将非颜色图像设为
image_tex.image.colorspace_settings.name = 'Non-Color'
程序化材质
- Texture Coordinate -> Noise/Voronoi/Wave Texture -> Color Ramp -> Principled BSDF
- 使用 Mix 节点叠加多种纹理,增加复杂度
- 对 Texture Coordinate 使用 Separate XYZ,创建依赖轴向的图案
玻璃 / 透明材质
- Principled BSDF 的 Transmission Weight = 1.0、Roughness = 0.0(清澈)或 >0(磨砂),IOR = 1.45-1.52
- 另一种方法:使用 Glass BSDF 节点,设置更简单
- EEVEE:在材质和渲染设置中启用 Screen Space Refraction
金属
- Principled BSDF 的 Metallic = 1.0、Base Color = 金属色调(金色:1.0, 0.766, 0.336)、Roughness = 0.1-0.4
- 另一种方法(5.0):使用 Metallic BSDF 节点,实现物理上准确的复杂 IOR
- 添加指纹/划痕:将 Roughness 与程序化纹理混合
皮肤 / 次表面散射
- Principled BSDF 的 Subsurface Weight = 0.3-1.0、Subsurface Radius = (1.0, 0.2, 0.1),用于 RGB 散射
- 将皮肤纹理连接到 Base Color,将细节法线贴图连接到 Normal
- Cycles:使用 Random Walk 方法获得最佳质量
自发光 / 霓虹
- 将 Principled BSDF 的 Emission Color 设为所需颜色,Emission Strength 设为 1-50+
- 或者:Standalone Emission 节点 -> Material Output(Surface)
- 在渲染设置(EEVEE)中启用 Bloom,获得辉光效果
卡通 / 色调着色(EEVEE)
- Principled BSDF(或任意 BSDF)-> Shader to RGB -> Color Ramp(Constant 插值)-> Material Output(通过 Emission 或自定义输出)
- Color Ramp 色标可创建离散的着色带
- Shader to RGB 仅适用于 EEVEE
世界 / HDRI 环境
- Environment Texture(加载 .exr/.hdr)-> Background -> World Output
- 在 Texture Coordinate(Generated)与 Environment Texture 之间添加 Mapping 节点,以旋转环境
- 设置 Background Strength 来调整强度
置换
- Texture -> Displacement 节点 -> Material Output(Displacement 插槽)
- 设置材质置换方法:
mat.cycles.displacement_method = 'BOTH'96#HB|3. 网格需要细分(Subdivision Surface 修改器或 Cycles 中的 Adaptive Subdivision)
Raycast 节点(Blender 5.1)
- ShaderNodeRaycast 从着色点发射射线并返回命中信息
- 输出:Position、Normal、Distance、Object、Is Hit
- 适用于材质驱动的接近效果、遮挡和交叉检测
- 支持指定射线方向和长度限制
- 在 Cycles 和 EEVEE 中均可使用
法线贴图改进(Blender 5.1)
- 新增 OpenGL/DirectX 开关,用于设置法线贴图的切线空间约定
- OpenGL(默认)与 DirectX 翻转 — 修复来自游戏引擎的反向法线贴图
- 新增在置换网格上计算法线贴图的选项(仅限 Cycles)
- 使用
normal_map_node.invert_y或normal_map_node.tangent_space_convention进行切换
体积(雾/烟)
- Principled Volume -> Material Output(Volume 插槽)
- 或者:Volume Absorption + Volume Scatter -> Add Shader -> Material Output(Volume)
- 设置 Density、Color、Anisotropy
调试与优化
常见视觉问题
- 材质显示为黑色:检查 Material Output 是否有有效的 Surface 连接。如果纹理需要 UV 坐标,请确认对象具有 UV 坐标
- 材质显示为白色/平面:纹理连接缺失,或所有纹理都设置了错误的色彩空间
- 玻璃/透明效果在 EEVEE 中无效:在渲染设置和材质设置中都启用 Screen Space Refraction。将混合模式设为 Alpha Hashed 或 Alpha Blend
- 法线贴图看起来凹凸不平/不正确:确保法线贴图图像的色彩空间设为 Non-Color。检查 Normal Map 节点是否设为正确的空间(大多数情况下为 Tangent)
- 纹理拉伸:对象需要正确展开 UV。或者,使用 Object 或 Generated 纹理坐标,并配合 Mapping 节点
- Cycles 渲染出现亮点噪声:减少光线反弹次数,在渲染设置中使用 Clamp Direct/Indirect,或进行降噪
性能提示
- 优先使用 Principled BSDF,而非单独着色器:Principled BSDF 在内部经过优化;手动组合 Diffuse、Glossy 和 Glass 的速度较慢
- 尽量降低纹理分辨率:大多数情况下使用 2K 纹理,仅在需要近距离细节时使用 4K
- 避免堆叠过多 Noise Texture:每次噪波计算都很耗费资源。对于动画,请烘焙复杂的程序化纹理
- EEVEE 屏幕空间效果:屏幕空间反射、折射和 SSS 会增加每种材质的开销。仅在材质需要时启用
- 简化视口效果:在视口预览模式下使用较低分辨率的纹理或较简单的着色器
EEVEE 与 Cycles 快速指南
| 特性 | Cycles | EEVEE |
|---|---|---|
| 渲染 | 路径追踪(精确) | 光栅化(快速、近似) |
| SSS | 随机漫步(精确) | 屏幕空间(近似) |
| 反射 | 光线追踪 | 屏幕空间 + 探针 |
| 透明度 | 光线追踪 | Alpha 混合 / 哈希 |
| 体积 | 完整体积渲染 | 有限的体积支持 |
| 置换 | 真置换 + 自适应细分 | 不支持(请使用 Normal Map) |
| OSL | 支持(仅 CPU) | 不支持 |
| Shader to RGB | 不支持 | 支持(卡通着色) |
节点参考
如需查阅按类别(输入、输出、着色器、纹理、颜色、向量、转换器、脚本)整理的完整着色器节点目录,请参阅 references/node_reference.md。
可搜索的重点章节:
- BSDF/着色器类型:在 node_reference.md 中搜索“BSDF”或“Shader”
- 纹理节点:搜索“Texture”
- Principled BSDF 输入:搜索“Principled BSDF - Detailed”
- 渲染引擎兼容性:搜索“Cycles Only”或“EEVEE”
- Blender 5.0 更改:搜索“5.0”
- Blender 5.1 更改:搜索“5.1”、“Raycast”或“Normal Map”
- OpenColorIO 2.5:更新了色彩管理,并改进了显示变换
Python API 参考
如需查阅完整的 Python API 用法模式,包括节点类型字符串、插槽类型、连接、材质分配、世界设置和 Color Ramp 配置,请参阅 references/python_api.md。