USkeletaMeshComponent
🎮 Unreal Engine - USkeletalMeshComponent
🏛 定义
USkeletalMeshComponent 是 用于渲染和控制 Skeletal Mesh(骨骼网格体) 的组件。
它不仅能显示蒙皮网格,还支持动画系统(Skeleton + Animation Blueprint),并能与物理系统(如刚体、碰撞体)进行交互。
🏛 类继承
UObject
└── UActorComponent
└── USceneComponent
└── UPrimitiveComponent
└── USkinnedMeshComponent
└── USkeletalMeshComponent
⚡ 关键特性
- 🏷 支持 Skeletal Mesh 渲染与蒙皮动画
- 🏷 驱动动画蓝图(AnimBlueprint)进行骨骼动画播放
- 🏷 绑定物理资产(Physics Asset),实现布娃娃、刚体碰撞等物理模拟
- 🏷 支持 Morph Target(形态变形,如面部表情)
- 🏷 动态挂载(Attach)其他组件到骨骼 Socket
- 🏷 可进行动画蒙太奇(Montage)播放,适合战斗、技能等逻辑
⚙️ 常见配置
- 📦 Skeletal Mesh → 指定骨骼网格体资源
- 📦 Animation Mode
- Use Animation Blueprint
- Use Animation Asset
- Use Custom Mode
- 📦 Anim Class → 动画蓝图类
- 📦 Physics Asset → 绑定的物理资源(布娃娃、碰撞体)
- 📦 Morph Targets → 面部表情、肌肉形变等参数
- 📦 Shadow Settings → 是否接收/投射阴影
🛠️ 使用方法
🔗 设置 Skeletal Mesh
1
2
| USkeletalMeshComponent* MeshComp = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("CharacterMesh"));
MeshComp->SetSkeletalMesh(SomeSkeletalMesh);
|
🔗 应用动画蓝图
1
| MeshComp->SetAnimInstanceClass(UYourAnimBlueprint::StaticClass());
|
🔗 播放动画蒙太奇
1
2
3
4
5
| UAnimInstance* AnimInst = MeshComp->GetAnimInstance();
if (AnimInst)
{
AnimInst->Montage_Play(AttackMontage);
}
|
🔗 绑定组件到 Socket
1
| Weapon->AttachToComponent(MeshComp, FAttachmentTransformRules::SnapToTargetNotIncludingScale, TEXT("WeaponSocket"));
|
🏊 典型应用场景
- 🤖 角色动画驱动 → 玩家角色、NPC 动画播放
- 🪂 武器或装备挂载 → 将武器附着到手部骨骼 Socket
- ⚡ 战斗系统 → 播放攻击、受击、死亡等动画蒙太奇
- 🏷 物理模拟 → 死亡布娃娃效果、布料模拟
- 👤 面部表情控制 → 使用 Morph Target 实现情感表情
📚 常见子类与用途
- UDestructibleComponent → 支持破碎物理的骨骼网格体扩展
- UPoseableMeshComponent → 手动设置骨骼姿势的特殊 Skeletal Mesh
- UGroomComponent(常搭配) → 绑定头发、毛发系统
📝 小结
- ✅
USkeletalMeshComponent 是角色与动画系统的核心渲染组件 - ✅ 它继承自
USkinnedMeshComponent,具备蒙皮与骨骼动画功能 - ✅ 与 Animation Blueprint 紧密结合,驱动动画逻辑
- ✅ 可绑定物理系统,实现布娃娃、物理模拟
- ✅ 常用于角色、NPC、怪物等动态实体的表现