When a StaticMeshComponent has a scale component of zero in WorldSpace (after accumulating with the hierarchy from the root to it), function UPrimitiveComponent::OnCreatePhysicsState() logs the warning "Scale for <ComponentName> has a component set to zero, which will result in a bad body instance.". This is intended, and in most situations the warning correctly does not show when the StaticMeshComponent has its Collision Profile set to "NoCollision".
Up to 5.4, it was not possible to override the Collision Profile of a Blueprint-defined StaticMeshComponent in an actor instance placed on a level. This restriction seems to have been lifted in UE 5.5. However, if the Blueprint has a StaticMeshComponent with non-zero scale and a Collision Profile different from "NoCollision", but its Actor instance placed on the level overrides both the Collision Profile to "NoCollision" and the Root Component's scale to zero, the aforementioned warning still gets incorrectly logged. Moreover, the warning is output whenever the editor reruns construction scripts, which means that the log is spammed with it when the actor instance is moved around the level, for example.
A preliminary investigation of this problem found that the zero-scale override for the actor's root component stays in effect throughout, but that the NoCollision override is only applied after the StaticMeshComponent has been registered and its physics state created (which is when the warning gets triggered based on the BP-defined Collision Profile).
Check the call stack section for a summary of the flow when moving the actor instance around the level editor viewport (line numbers as of vanilla UE 5.6).
1. Create and edit an actor blueprint asset
1.1. Add a static mesh component to the blueprint
1.2. Set the static mesh property (e.g. from Engine/BasicShapes)
2. Create a new level
3. Place an actor instance based on the previous blueprint
4. On the details panel for the actor instance:
4.1. On the root scene component, set one component of the scale to 0
4.2. On the static mesh component, set the Collision Presets value to NoCollision
5. Move the actor around the viewport --> Warning spam about bad body instance
Note: The warning does not trigger in the following situations:
FActorElementEditorViewportInteractionCustomization::GizmoManipulationDeltaUpdate() Line 191
AActor::PostEditMove() Line 283
AActor::RerunConstructionScripts() Line 596
AActor::ExecuteConstruction() Line 881
| USimpleConstructionScript::ExecuteScriptOnActor() Line 647 |
| USCS_Node::ExecuteNodeOnActor() Line 218 |
| USCS_Node::ExecuteNodeOnActor() Line 179 |
| USimpleConstructionScript::RegisterInstancedComponent() Line 638 |
| UActorComponent::RegisterComponentWithWorld() Line 1918 |
| UActorComponent::ExecuteRegisterEvents() Line 2389 |
| UActorComponent::CreatePhysicsState() Line 2303 |
| UStaticMeshComponent::OnCreatePhysicsState() Line 952 |
| UPrimitiveComponent::OnCreatePhysicsState() Line 899 // Warning AActor::ExecuteConstruction() Line 939 FComponentInstanceDataCache::ApplyToActor() Line 782 FStaticMeshComponentInstanceData::ApplyToComponent() Line 117 |
| FPrimitiveComponentInstanceData::ApplyToComponent() Line 772 |
| FSceneComponentInstanceData::ApplyToComponent() Line 2791 |
| FActorComponentInstanceData::ApplyToComponent() Line 555 // NoCollision |
| UActorComponent::ReregisterComponent() Line 2422 |
| FComponentReregisterContext::
{dtor}() Line 63 | FComponentReregisterContextBase::ReRegister() Line 49 | UActorComponent::ExecuteRegisterEvents() Line 2389 | (...) // No warning FStaticMeshComponentInstanceData::ApplyToComponent() Line 121 UStaticMeshComponent::ApplyComponentInstanceData() Line 2950 FComponentReregisterContext::{dtor} () Line 63 |
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-360406 in the post.
| 0 |
| Component | UE - Simulation - Physics |
|---|---|
| Affects Versions | 5.5, 5.6, 5.7, 5.8 |
| Created | Jan 12, 2026 |
|---|---|
| Updated | Feb 26, 2026 |