Description

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).

Steps to Reproduce

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:

  • "NoCollision" is configured directly on the blueprint's static mesh component (instead of being an override on the actor instance)
  • Zero scale is set on any non-root component instead of on the actor/root component
  • When moving a non-root component around the viewport instead of the actor/root component
  • When the StaticMeshComponent is added directly to the actor instance instead of to the blueprint
Callstack

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
FComponentReregisterContextBase::ReRegister() Line 49
UActorComponent::ExecuteRegisterEvents() Line 2389
(...) // No warning

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-360406 in the post.

0
Login to Vote

Backlogged
ComponentUE - Simulation - Physics
Affects Versions5.55.65.75.8
CreatedJan 12, 2026
UpdatedFeb 26, 2026
View Jira Issue