# Ep.15 — 蒙皮骨骼节点名称参考 (`Skin_*`)

本文档分享了 BipedPlus 默认生成的 `Skin_*` 蒙皮骨骼命名规范。
这是 OtakuSolutions 在 3dsMax 绑定工作中所采用的命名约定。

如果您的团队没有内部绑定命名规范，可以参考本文档作为标准。
在进行自定义时，保持这些节点名称与结构约定，可确保完全的兼容性。

BipedPlus 在部分关节中采用**主骨骼**与**分段骨骼(`_Seg`)** 分离的双重结构。
目的是实现关节拉伸效果并防止缩放错误。


| | |
|---|---|
| Pattern | `Skin_*` |
| Left + Center nodes | **85** |
| Right nodes (mirror) | 63 |
| Total nodes | **148** |


### 蒙皮结构设计

| 角色 | 说明 |
|------|------|
| 主骨骼 (`is_skinned=X`) | 负责关节运动的主轴/旋转。无需蒙皮。 |
| `_Seg` 骨骼 (`is_skinned=O`) | 主骨骼的子级；负责各段网格变形。 |
| `_Twist` 骨骼 (`is_skinned=O`) | 沿肢体分配扭转旋转。 |
| `_Cor` 骨骼 (`is_skinned=O`) | 用于左右对称校正的矫正骨骼。 |
| 无Seg/Twist的骨骼 (`is_skinned=O`) | 直接蒙皮到主骨骼（例：手指、手、脚）。 |
| `Nub` 骨骼 (`is_skinned=X`) | 链条终点标记。无需蒙皮。 |

### 字段说明

| 字段 | 说明 |
|------|------|
| `direction` | left / center |
| `is_skinned` | 该骨骼是否接受蒙皮权重（O = 是，X = 否） |
| `parent` | 父节点（`{LAST}` = 链条中最后编号的骨骼） |
| `part` | 骨架模块部件ID |


### Node List (85 — Left + Center)

| node | part | direction | parent | is_skinned |
| --- | --- | --- | --- | --- |
| Skin_Com | spine | center | Root | O |
| Skin_Pelvis | spine | center | Root | X |
| Skin_Spine | spine | center | Skin_Pelvis | X |
| Skin_Spine1 | spine | center | Skin_Spine | X |
| Skin_Spine2 | spine | center | Skin_Spine1 | X |
| Skin_Spine3 | spine | center | Skin_Spine2 | X |
| Skin_Spine4 | spine | center | Skin_Spine3 | X |
| Skin_Pelvis_Seg | spine | center | Skin_Pelvis | O |
| Skin_Spine1_Seg | spine | center | Skin_Spine1 | O |
| Skin_Spine2_Seg | spine | center | Skin_Spine2 | O |
| Skin_Spine3_Seg | spine | center | Skin_Spine3 | O |
| Skin_Spine4_Seg | spine | center | Skin_Spine4 | O |
| Skin_Spine_Seg | spine | center | Skin_Spine | O |
| Skin_Head | neck-head | center | Skin_Neck | X |
| Skin_Neck | neck-head | center | Skin_Spine{LAST} | X |
| Skin_HeadNub | neck-head | center | Skin_Head | X |
| Skin_Head_Seg | neck-head | center | Skin_Head | O |
| Skin_Neck_Seg | neck-head | center | Skin_Neck | O |
| Skin_Neck_Twist | neck-head | center | Skin_Neck | O |
| Skin_L_Clavicle | arm | left | Skin_Spine{LAST} | O |
| Skin_L_ForeArm | arm | left | Skin_L_UpperArm | X |
| Skin_L_Hand | arm | left | Skin_L_ForeArm | O |
| Skin_L_UpperArm | arm | left | Skin_L_Clavicle | X |
| Skin_L_ForeArm_Seg1 | arm | left | Skin_L_ForeArm | O |
| Skin_L_ForeArm_Seg2 | arm | left | Skin_L_ForeArm | O |
| Skin_L_ForeArm_Seg3 | arm | left | Skin_L_ForeArm | O |
| Skin_L_ForeArm_Seg4 | arm | left | Skin_L_ForeArm | O |
| Skin_L_ForeArm_Seg5 | arm | left | Skin_L_ForeArm | O |
| Skin_L_UpperArm_Seg1 | arm | left | Skin_L_UpperArm | O |
| Skin_L_UpperArm_Seg2 | arm | left | Skin_L_UpperArm | O |
| Skin_L_UpperArm_Seg3 | arm | left | Skin_L_UpperArm | O |
| Skin_L_UpperArm_Seg4 | arm | left | Skin_L_UpperArm | O |
| Skin_L_UpperArm_Seg5 | arm | left | Skin_L_UpperArm | O |
| Skin_L_Finger0 | finger0 | left | Skin_L_Hand | O |
| Skin_L_Finger01 | finger0 | left | Skin_L_Finger0 | O |
| Skin_L_Finger02 | finger0 | left | Skin_L_Finger01 | O |
| Skin_L_Finger1 | finger1 | left | Skin_L_Hand | O |
| Skin_L_Finger11 | finger1 | left | Skin_L_Finger1 | O |
| Skin_L_Finger12 | finger1 | left | Skin_L_Finger11 | O |
| Skin_L_Finger2 | finger2 | left | Skin_L_Hand | O |
| Skin_L_Finger21 | finger2 | left | Skin_L_Finger2 | O |
| Skin_L_Finger22 | finger2 | left | Skin_L_Finger21 | O |
| Skin_L_Finger3 | finger3 | left | Skin_L_Hand | O |
| Skin_L_Finger31 | finger3 | left | Skin_L_Finger3 | O |
| Skin_L_Finger32 | finger3 | left | Skin_L_Finger31 | O |
| Skin_L_Finger4 | finger4 | left | Skin_L_Hand | O |
| Skin_L_Finger41 | finger4 | left | Skin_L_Finger4 | O |
| Skin_L_Finger42 | finger4 | left | Skin_L_Finger41 | O |
| Skin_L_Calf | leg | left | Skin_L_Thigh | X |
| Skin_L_Foot | leg | left | Skin_L_Calf | O |
| Skin_L_HorseLink | leg | left | Skin_L_Calf | X |
| Skin_L_Thigh | leg | left | Skin_Pelvis | X |
| Skin_L_Toe0 | leg | left | Skin_L_Foot | O |
| Skin_L_Calf_Seg1 | leg | left | Skin_L_Calf | O |
| Skin_L_Calf_Seg2 | leg | left | Skin_L_Calf | O |
| Skin_L_Calf_Seg3 | leg | left | Skin_L_Calf | O |
| Skin_L_Calf_Seg4 | leg | left | Skin_L_Calf | O |
| Skin_L_Calf_Seg5 | leg | left | Skin_L_Calf | O |
| Skin_L_HorseLink_Seg1 | leg | left | Skin_L_HorseLink | O |
| Skin_L_HorseLink_Seg2 | leg | left | Skin_L_HorseLink | O |
| Skin_L_HorseLink_Seg3 | leg | left | Skin_L_HorseLink | O |
| Skin_L_HorseLink_Seg4 | leg | left | Skin_L_HorseLink | O |
| Skin_L_HorseLink_Seg5 | leg | left | Skin_L_HorseLink | O |
| Skin_L_Thigh_Seg1 | leg | left | Skin_L_Thigh | O |
| Skin_L_Thigh_Seg2 | leg | left | Skin_L_Thigh | O |
| Skin_L_Thigh_Seg3 | leg | left | Skin_L_Thigh | O |
| Skin_L_Thigh_Seg4 | leg | left | Skin_L_Thigh | O |
| Skin_L_Thigh_Seg5 | leg | left | Skin_L_Thigh | O |
| Skin_Prop1 | prop1 | center | Root | O |
| Skin_Prop2 | prop2 | center | Root | O |
| Skin_Prop3 | prop3 | center | Root | O |
| Skin_L_BackA_Skirt1 | extra_skirt | left | Skin_Pelvis | O |
| Skin_L_BackA_Skirt2 | extra_skirt | left | Skin_L_BackA_Skirt1 | O |
| Skin_L_BackA_Skirt3 | extra_skirt | left | Skin_L_BackA_Skirt2 | O |
| Skin_L_FrontA_Skirt1 | extra_skirt | left | Skin_Pelvis | O |
| Skin_L_FrontA_Skirt2 | extra_skirt | left | Skin_L_FrontA_Skirt1 | O |
| Skin_L_FrontA_Skirt3 | extra_skirt | left | Skin_L_FrontA_Skirt2 | O |
| Skin_L_Side_Skirt1 | extra_skirt | left | Skin_Pelvis | O |
| Skin_L_Side_Skirt2 | extra_skirt | left | Skin_L_Side_Skirt1 | O |
| Skin_L_Side_Skirt3 | extra_skirt | left | Skin_L_Side_Skirt2 | O |
| Skin_L_Back_Hip | extra_hip | left | Skin_Pelvis | O |
| Skin_L_Front_Hip | extra_hip | left | Skin_Pelvis | O |
| Skin_L_Side_Hip | extra_hip | left | Skin_Pelvis | O |
| Skin_L_ForeArm_Cor | extra_forearm | left | Skin_L_UpperArm | O |
| Skin_L_Calf_Cor | extra_calf | left | Skin_L_Thigh | O |

> **Right Side** — Replace `_L_` with `_R_` to get the mirrored node.
> e.g. `Skin_L_UpperArm` → `Skin_R_UpperArm`