用途 该技能用于在 Blender 5.2 中创建和调整毛发、胡须与皮毛。梳理的附着方式基于曲面网格的 UV 与顶点组:UV 决定毛发附着位置,绘制好的顶点组作为密度掩码,柔和的边界可形成自然发际线。执行模型与物理、灯光外观的细节分别归属 blender-core、blender-simulation 与 blender-lighting-lookdev。
主要能力 核心脚本 scripts/groom.py 一次性完成添加毛发并堆叠修改器。它调用 5.2 的 Add Empty Hair,将曲线父级绑定到曲面、设置 surface 与 surface_uv_map,在曲面上添加 Capture Rest Geometry,并加入 Hair Dynamics 修改器(固定在最末,实验性)。随后按顺序叠加内置资产:Generate(--density,单位 guides/m²)、Interpolate(--children/m²,视口中按 --viewport 比例显示)、Clump、Curl、Displace + Shrinkwrap(--droop 按长度向下且保持离面 2 mm)、Noise、Set Hair Curve Profile(--radius 与尖端收细)。每个资产保持为带实时输入的修改器,可直接在修改器面板调整;按名称访问输入值,顶点组掩码使用 ATTRIBUTE 类型与 attribute_name。
脚本会报告曲线数量、平均长度、根部到曲面的最大间隙(应接近 0)以及修改器堆栈;后台模式下评估数量使用视口比例。Clump 与 Curl 的引导线距离默认为 --length 的 10%,以避免资产默认 0.1 m 把整个头部收成少量发簇。
数据参考 人类头皮约 100–150k 根头发、约 200 根/cm²;CG 可用 30k–150k 渲染发丝、300–3000 根引导线。发丝半径约 0.03–0.05 mm,可用 --radius 0.00005,并在减少发丝数量时加粗。Principled Hair(Chiang)的 melanin:黑 1.0、深棕 0.8、棕 0.65、浅棕 0.45、金 0.25、铂金 0.1;红色用 0.5 加 redness 0.9;灰白用 0 加 tint。粗糙度 0.25–0.35(有光泽)至 0.5(干燥),径向粗糙度 0.3。皮毛长度 1–5 cm、密度 200k–2M/m²、少量 clump。HUANG(4.0+)支持椭圆截面,适合特写;CHIANG 为参考默认。
使用方式示例 scripts/groom.py -- --surface Head --mask Scalp --length 0.15 --children 150000 --clump 0.5 scripts/groom.py -- --surface Head --mask Beard --length 0.02 --droop 0.2 --curl 0.004 --melanin 0.9 --name Beard scripts/groom.py -- --surface Body --length 0.025 --droop 0.3 --clump 0.3 --name Fur scripts/groom.py -- --cards Hair --card-count 150 --atlas-res 2048 --out //textures
梳理流程 先处理曲面:头皮或头部网格需带 UV,并用顶点组标记生长区域。用少量到数千根引导线承载形状,数千根插值子发提供体积;只对引导线做造型。按层造型:长度、clump、curl/波浪、frizz/noise、轮廓(细尖端),每层保持为可开关的独立修改器。主角发型可用 Curves Sculpt 模式的 Comb、Add、Puff、Pinch、Grow/Shrink、Smooth、Slide、Density、Delete、Pull Tips 等笔刷手工梳理;程序化 droop 只能提供可信的基础,不能替代发型设计。最终在目标灯光下做外观调试,毛发观感主要来自高光与深度。
游戏发片(--cards HAIR) 从评估后的毛发中用最远点采样挑选分布良好的 --card-count 根发丝,沿每根生成带状发片:--card-width 指定宽度,尖端收细到 30%,贴合曲面(side = tangent × surface normal)。UV 的 v 从根部 0 到尖端 1,每张发片占图集一列(--atlas-columns)。用 Cycles 从平面发簇渲染图集:T_<name>BC(较深发根、alpha 为覆盖度、Standard 视图),以及 T<name>RootTip 与 T<name>_ID(Raw、线性数据)。发片材质使用 Dithered alpha 且不开启背面剔除。专业做法是从头皮向外分层:头皮处使用密集宽大的不透明发片遮挡皮肤,中间层,再到顶层细小的飞散发片。预算参考:主角 20k–60k 三角面,NPC 5k–15k;发片应弯成 S/C 形而非平面,并多角度检查。引擎侧用 alpha test/dither 加深度预通道,root-tip 用于变暗/AO,ID 用于单根发丝变化;沿 V 方向添加切线(流向)贴图以获得各向异性高光。
导出与限制 面向 UE Groom/Houdini 的发丝可用 Alembic(wm.alembic_export)或 USD(wm.usd_export(export_curves=True))导出,两者均写出评估后的曲线(实测 246/246 曲线往返正常);若目标只需引导线,先烘焙修改器堆栈。注意事项:曲面无 UV 时 Generate 无处附着,需先加 UV;梳理后更改曲面拓扑会破坏附着,应最后梳理或重跑;应用头部缩放,长度与密度均以世界米为单位;完整头部在视口中保持 --viewport ≤ 0.2,最终发丝数量只在渲染中出现;Hair Dynamics 在播放时模拟,第 1 帧静帧为直通,动画渲染前需烘焙。