In a Geometry Collection, enabling Nanite Fallback in a Nanite Enabled collection won't generate a Physics Body when Nanite is disabled.
To verify this, follow the steps provided in the Steps to Reproduce and check the scene with and without Nanite using Chaos Visual Debugger. When disabling Nanite using the console command r.Nanite 0, the GC_Cube is not represented in the physics side.
The licensee has noted that the GC does not respond to Fields, but checking those with CVD shows that there is no physics representation of the Fallback mesh when Nanite is disabled.
Once I set the r.Nanite 0 console command, I've hit an Ensure. I've pasted the message and callstack in the callstack field.
I've verified this behavior on UE 5.5, 5.6, and 5.7 (CL43620315).
In an empty project, add a cube next to the floor.
Enable Fracture mode, save the new fracture (default GC_Cube), fracture it using any method (e.g. use Uniform with default values).
In the Browser, select the All folder and search for FS_MasterField.
Add it to the scene on top of GC_Cube, scaling enough to engulf the GC_Cube.
By default the FS_MasterField will apply a delayed External Strain after 1 second.
Open up GC_Cube and set Enable Nanite and Enable Nanite Fallback to true.
Simulate In Editor (SIE) and verify that the GC_Cube is shattered after one second.
Now, in the console command, type r.Nanite 0 - this will disable Nanite, what will make GC_Cube rely on their Nanite Fallback method.
SIE again.
Expected result: GC_Cube should shatter in the same manner as it did when Nanite was enabled.
Actual result: GC_Cube does not shatter.
Once I set the console command: r.Nanite 0
And Play-In-Editor I've hit an ensure:
Ensure condition failed: false [Link Removed] [Line: 2171]
[2025.06.29-20.14.23:585][427]LogOutputDevice: Error: Ensure condition failed: false [Link Removed] [Line: 2171]
[2025.06.29-20.14.23:585][427]LogStats: FDebug::EnsureFailed - 0.001 s
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in UnrealEditor.exe.
Callstack:
> UnrealEditor-Chaos.dll!Chaos::FPBDRigidsSolver::BufferPhysicsResults() Line 2171 C++
UnrealEditor-Chaos.dll!Chaos::FPBDRigidsSolver::CompleteSceneSimulation() Line 2077 C++
UnrealEditor-Chaos.dll!Chaos::AdvanceOneTimeStepTask::DoWork() Line 610 C++
UnrealEditor-Chaos.dll!Chaos::FPBDRigidsSolver::AdvanceSolverBy(const Chaos::FSubStepInfo & SubStepInfo) Line 1330 C++
UnrealEditor-Chaos.dll!Chaos::FPhysicsSolverAdvanceTask::AdvanceSolver() Line 176 C++
UnrealEditor-Chaos.dll!Chaos::FPhysicsSolverAdvanceTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> & MyCompletionGraphEvent) Line 152 C++
UnrealEditor-Chaos.dll!TGraphTask<Chaos::FPhysicsSolverAdvanceTask>::ExecuteTask() Line 634 C++
UnrealEditor-Chaos.dll!UE::Tasks::Private::FTaskBase::TryExecuteTask() Line 504 C++
[Inline Frame] UnrealEditor-Chaos.dll!UE::Tasks::Private::FTaskBase::Init::__l2::<lambda_1>::operator()() Line 185 C++
[Inline Frame] UnrealEditor-Chaos.dll!LowLevelTasks::FTask::Init::__l13::<lambda_1>::operator()(const bool) Line 499 C++
[Inline Frame] UnrealEditor-Chaos.dll!Invoke(LowLevelTasks::FTask::Init::__l13::<lambda_1> &) Line 47 C++
[Inline Frame] UnrealEditor-Chaos.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::Call(void *) Line 162 C++
UnrealEditor-Chaos.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> & Destination, void * InlineData, unsigned int DestInlineSize, bool <Params_0>) Line 171 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &) Line 308 C++
UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() Line 627 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask * InTask) Line 245 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom(LowLevelTasks::Private::FWaitEvent *) Line 457 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerLoop(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 514 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 571 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda>() Line 75 C++
[Inline Frame] UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() Line 470 C++
UnrealEditor-Core.dll!FThreadImpl::Run() Line 69 C++
UnrealEditor-Core.dll!FRunnableThreadWin::Run() Line 159 C++
UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() Line 71 C++
[External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-302050 in the post.
0 |
Component | UE - Simulation - Physics - Destruction |
---|---|
Affects Versions | 5.5, 5.6, 5.7 |
Created | Jun 30, 2025 |
---|---|
Updated | Jul 17, 2025 |