SuperAPI AI 工具集

blender-texturing

设计与创作

查看项目

更新于 10-31 20:04

技能介绍

该技能面向 Blender 5.2 的纹理创作执行层,专注于“表面故事”的编写:哪里掉漆、哪里积灰、表面印了什么。其执行模型、材质焊接与烘焙分别由 blender-core、blender-pbr-materials 和 blender-texture-baking 等其他技能负责,本技能只处理分层纹理的生成与贴花放置。

主要能力

smart_material.py 会在每个 Principled BSDF 前插入一个 TX_Layers 组节点,接管 Base Color、Roughness、Metallic,并记录原始连接与数值,因此使用 --remove 参数可精确还原。重复运行会就地更新参数,所有图层量都保留为组节点的输入,便于手动微调。

支持的图层包括:边缘磨损(基于凸曲率与碎屑噪声,露出底层材质)、锈迹(基于凹腔与磨损边缘加斑块噪声,橙棕色、金属度 0、粗糙度约 0.85)、污垢(基于凹曲率与 (1 − AO),颜色深、更粗糙、非金属)、灰尘(基于世界向上法线与斑块噪声,颜色浅、粗糙度约 0.9)以及粗糙度扰动(细噪声 ±25%)。

曲率计算使用 TX_Curvature 点属性,表示在 --edge-width(单位米,默认 0.02)范围内邻居的平均高度,密度无关,带宽约等于边缘宽度。该属性在 Cycles 与 EEVEE 中实时可用,无需烘焙。成本约为每 3 万顶点 1.5 秒。建议将宽度设为倒角宽度(道具 1–3 cm,建筑 5–10 cm)。需要中模密度(含倒角/支撑边);当中位边长大于边缘宽度 4 倍时结果会附带提示,磨损会涂抹到整个面。低模游戏网格需先通过 bake_maps.py 从高模烘焙 normal、ao、curvature 贴图,再用 --curvature-map/--ao-map 传入(以 Non-Color 加载,通过 --uv 读取)。

噪声位于对象空间(--scale 为特征尺寸,单位米),遮罩随资产移动而固定。镜像或关联复制的对象会共享图案,可通过改变 --scale 或对象来打破。

颜色为 sRGB 0–1。默认底材为漆下钢(0.56, 0.57, 0.58,金属度 1,粗糙度 0.35)。若为漆下木材,可传 --under-color 0.45 0.32 0.2 --under-metallic 0 --under-roughness 0.7。

使用方式

基本调用示例: scripts/smart_material.py -- --objects Crate --wear 0.5 --grime 0.4 --dust 0.3 scripts/smart_material.py -- --objects Crate --rust 0.6 --under-color 0.3 0.29 0.28 scripts/smart_material.py -- --objects SM_Crate --wear 0.5 --curvature-map //tex/T_Crate_CURV.png --ao-map //tex/T_Crate_AO.png scripts/decal.py -- --target Wall --at 0 -0.1 1.5 --image //decals/hazard.png --size 0.4 scripts/smart_material.py -- --objects Crate --remove

材质分层建议从内到外:基础 → 边缘磨损 → 锈迹 → 污垢 → 灰尘。每层需有物理成因。纯曲率效果过于程序化,应乘以噪声使磨损有轻有重。磨损量 0.2–0.4 读作“使用过”,0.7 以上读作“废弃”。

贴花(decal.py)

decal.py 在离 --at 最近的表面点放置细分平面,朝向法线并按 --rotation 旋转,使用 Shrinkwrap(投影、表面之上)保持 --offset(默认 2 mm)离开表面。贴花会被父级关联、无阴影、使用 Dithered 透明,高度随图像宽高比。脚本会像 blender-asset-qa 一样逐三角形测量间隙,并倍增 --subdiv(至 128)直到平坦三角形不再陷入凸折痕,结果会报告 gap_min_m/gap_max_m。切勿以 0 偏移放置贴花,否则必然 z-fighting。

游戏用途中,网格贴花每个消耗一次绘制调用并需要 alpha 排序。共享图集的贴花应合并为一个网格;动态贴花可用引擎投射器(UE Decal Actor、Unity URP Decal Projector、Godot Decal),或直接烘焙进基础纹理。

其他流程

Trim sheets、顶点色混合平铺、手绘/纹理绘制(5.2 笔刷资产)以及无头像素写入,详见 references/trims-tiling-painting.md。

注意事项

遮罩纹理(曲率、AO、粗糙度、ID)必须为 Non-Color;脚本会强制设置,但手工节点常忽略。

计算曲率或设置 --scale 前应先应用缩放,二者均以世界尺寸为准。

TX_Curvature 属于网格数据;之后应用修改器或重拓扑会使其失效,拓扑变化后需重新运行。

视口 EEVEE 与 Cycles 的遮罩一致,因为未使用仅 Cycles 或屏幕空间的 Bevel、Pointiness、AO 着色器节点。

适用场景与限制

适用于中高模道具、建筑等资产的程序化做旧与表面细节,以及静态贴花放置。低模游戏网格需先烘焙遮罩。不支持直接导出到游戏引擎,需先烘焙为纹理集并用 build_pbr_material.py --textures 构建材质后导出,再配合 blender-asset-qa 检查。