uskeletameshcomponent

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、怪物等动态实体的表现