mcpField
B
blender-clothing

blender-clothing

github.com/el4cteo创意与媒体1.1k281 次安装今天更新
代码仓库

关于 blender-clothing

blender-clothing 是面向游戏资产创作者的 Blender 技能,用于生成和检查绑定服装网格。其脚本可从身体区域构建服装,并处理权重、布料垂坠、形态键和穿插检查。

主要功能

  1. 01按身体区域生成服装
  2. 02传递并清理绑定权重
  3. 03添加厚度与布料垂坠
  4. 04烘焙匹配身体的形态键
  5. 05检查服装穿插

适用场景

  1. 01制作贴身上衣、裤子或盔甲
  2. 02为角色制作垂坠服装
  3. 03准备可导出的分层服装
  4. 04检查服装与角色姿势的贴合情况

安装

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-clothing

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

附带文件scripts/_bpyx.pyscripts/garment.py

详细介绍

服装

执行模型位于 blender-core。骨架和权重位于 blender-character-rigging,经典布料设置位于 blender-simulation,Roblox 分层服装笼位于 blender-export-pipelines(references/roblox.md)。

每项各调用一次

scripts/garment.py -- --body Body --group Torso --name Shirt --hide-body
scripts/garment.py -- --body Body --zmin 0.45 --zmax 1.05 --name Pants --offset 0.01 --drape 40 --morphs
scripts/garment.py -- --body Body --group Torso --name Armor --offset 0.02 --thickness 0.008
scripts/garment.py -- --check Shirt --body Body          # pose the rig first: checks the current pose

专业人士如何制作游戏服装

  1. 塑形:贴身服装从身体开始(提取并偏移);宽松服装则从经布料模拟缝合的平面裁片开始(使用 Marvelous Designer,或在 Blender 中使用带缝合弹簧的布料)。在身体的静止姿势(A/T 姿势)下进行模拟。
  2. 游戏网格:将高模/模拟结果重新拓扑为干净、均匀的四边形,并在关节处布线(肘部、膝盖和肩部各留 3 圈),然后展开 UV。将褶皱烘焙到法线贴图中(blender-texture-baking),让低模保持轻量。
  3. 蒙皮:从身体复制权重(相同骨骼、相同影响),清理权重(限制为 4 个影响、归一化、移除 < 0.001 的权重),然后仅在宽松部位(裙子、外套)将权重混合得更平滑,并为这些部位添加额外骨骼。
  4. 隐藏被遮盖的部分:删除服装下方的身体面(节省三角形面数,避免穿插),或按服装遮罩处理。袖口和领口下方保留一圈皮肤。
  5. 验证动作效果:测试压力姿势(blender-character-rigging stress_poses.py),然后对每项运行 --check。可通过调整松弛度(偏移)、平滑该处身体、微调权重或隐藏身体来修复问题。

garment.py

  • 区域:使用 --group(身体顶点组,权重 > 0.5),或使用世界空间的 --zmin/--zmax 范围。面会在世界空间中复制,并沿顶点法线向外推移 --offset(贴身棉布:5–10 mm;夹克:10–20 mm;盔甲:15–30 mm)。然后由 Solidify 添加 --thickness(布料:2–4 mm;皮革/盔甲:5–10 mm),向外扩展。UV 会从身体继承。
  • 权重:通过 Data Transfer(POLYINTERP_NEAREST,按名称传递所有组)传递,应用后限制为 --max-influences,并进行归一化和清理。添加身体的 Armature 修改器,并将其设为骨架的子级。
  • --hide-body:创建 Hidden_<name> 顶点组(区域向内缩一圈),并在身体上添加反向 Mask 修改器。可切换不同服装的遮罩。导出时,则在身体副本上删除这些面。
  • --drape N:经典布料(近似棉布:质量 0.15、张力 15、弯曲 0.5、质量等级 8)。固定顶部 8%,身体碰撞距离为 3 mm,静置 N 帧,然后应用结果。这会在宽松部位形成重力褶皱。使用 30–60 帧。
  • --morphs:为每个身体形态键创建一个同名服装形态键,通过 Surface Deform 在静止姿势下绑定,并将每个变形应用为一个形态键。引擎会同时驱动身体和服装的形态键(胖/瘦、肌肉、呼吸)。实测:30% 的身体形态变形会导致 346 个顶点穿出;添加匹配的服装形态键后,穿出数量为 0。
  • 穿插检查(也要在每次构建结束时运行):沿每个身体顶点的法线进行投射。如果服装先被向内击中、再被向外击中(或距离小于 0.5 mm),则视为穿插。若顶点在 0.1 m 内未击中任何服装,则表示未被覆盖,会忽略。报告 covered_verts、poke_verts 和 poke_max_m,使用已求值姿势,并遵循身体遮罩设置。

分层服装

  • 从贴近皮肤的内层向外排序:内衣/基础层 → 衬衫 → 背心 → 夹克 → 盔甲。每层都相对下一层偏移(对衬衫运行 garment.py --body Shirt,即可制作穿在衬衫外的背心),并从身体而非下一层复制权重。
  • 动作中各层之间的相互穿插通常源自权重不匹配。让所有层都从同一身体复制权重,可确保它们动作一致。
  • Roblox 分层服装需要基于 Roblox 模板笼构建 <Name>_InnerCage + <Name>_OuterCage(顶点顺序/UV 相同)。其他引擎(UE Mutable/Unity)会混合形态键或使用身体隐藏遮罩。原理相同。

注意事项

  • shape_key_add() 创建的键值为 1.0(已测量)。使用 Python 制作变形时,将 .value = 0。
  • 表面变形仅用于变形:若与骨架修改器同时保留,会导致姿势应用两次。--morphs 会在烘焙键后移除该修改器。
  • 构建前应用身体的缩放。偏移量和厚度的单位为米。
  • 布料模拟需要中等分辨率的身体碰撞网格。如果身体超过 50k 个顶点,请对代理网格进行简化,用作碰撞网格。
  • 对最终服装运行 blender-asset-qa(检查与身体的 Z-fighting、悬浮部件和法线),并检查其三角形数量是否符合 blender-game-optimization 的预算。

评论

支持 Markdown