UE 骨骼模型 会没有face index的原因
在 Unreal Engine 4.26 中,骨骼模型(Skeletal Mesh)的 FaceIndex
返回 -1(即 INDEX_NONE
)是正常现象,原因如下:
1. 骨骼网格体(Skeletal Mesh)的碰撞设计差异
- 默认使用简单碰撞体:骨骼网格体通常通过 物理资产(Physics Asset) 定义碰撞(如胶囊体、球体等简单形状),而非逐三角形(Per-Triangle)的复杂碰撞。
- 不支持逐面材质索引:骨骼网格体的物理碰撞不关联材质或面索引,因此命中结果(
FHitResult
)中的FaceIndex
始终为-1
。
2. 骨骼网格体的碰撞数据限制
- 无复杂碰撞数据:骨骼网格体通常不会生成复杂碰撞网格(Complex Collision Mesh),因为其动态形变特性(如角色动画)与逐三角形碰撞计算不兼容。
- 物理资产(Physics Asset)的局限性:
物理资产中的碰撞体(如CAPSULE
、SPHERE
)仅用于物理模拟和粗略碰撞检测,无法提供面索引或材质信息。
3. 命中检测的逻辑差异
- 骨骼网格体的射线检测:
当对骨骼网格体执行射线检测时,引擎优先命中物理资产中的简单碰撞体,而非网格表面三角形。因此FaceIndex
无意义,直接返回-1
。