The Remove-On-Break (ROB) feature, set on Fracture Mode on Geometry Collections (GC), was supposed to make the particle shrink until it vanishes. When the GC goes to sleep the shrinking stops and shows strange behaviors depending on the structure of the GC as well as if it's under the influence of some types of fields.
Once the particle is broken from a cluster, the ROB automatically applies a visual animation of each particle shrinking until vanishing. Upon inspecting the broken GC using the Chaos Visual Debugger (CVD), I believe the shrinking only happens in the rendering side, as all physical representations remain unchanged in CVD, until the particle completely vanishes. That might also be why the rendered shrinking particles look like they are flying above the ground.
While testing I noticed that Particles that entered Sleep state would suffer from this issue, so I suggested the licensee some strategies to avoid it going into sleep, by either setting a Sleep Family to custom and Custom Sleep Threshold Multiplier to a small number or by console command:
p.Chaos.Solver.Sleep.Enabled false
It looks like the Sleep state is stopping the update to the rendering, although it does not stop the timers that make the particle be deleted entirely. I was not able to pinpoint the exact place where the issue occurs but I suspect it's somewhere around UGeometryCollectionComponent::OnPostPhysicsSync()
Remove on Break instructions:
> UnrealEditor-GeometryCollectionEngine.dll!UGeometryCollectionComponent::OnPostPhysicsSync() Line 4360 C++
[Inline Frame] UnrealEditor-Chaos.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<0>,void __cdecl(void)>::operator()() Line 555 C++
UnrealEditor-Chaos.dll!FGeometryCollectionPhysicsProxy::PullFromPhysicsState(const Chaos::FDirtyGeometryCollectionData & PullData, const int SolverSyncTimestamp, const Chaos::FDirtyGeometryCollectionData * NextPullData, const float * Alpha, const Chaos::FDirtyRigidParticleReplicationErrorData * Error, const double AsyncFixedTimeStep) Line 4458 C++
UnrealEditor-Engine.dll!Chaos::FPhysicsSolverBase::PullPhysicsStateForEachDirtyProxy_External<`FPhysScene_Chaos::OnSyncBodies'::`2'::FDispatcher>(FPhysScene_Chaos::OnSyncBodies::__l2::FDispatcher & Dispatcher) Line 164 C++
[Inline Frame] UnrealEditor-Engine.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::FFunctionRefStoragePolicy,void __cdecl(FPhysScene_Chaos *)>::operator()(FPhysScene_Chaos * <Params_0>) Line 555 C++
UnrealEditor-Engine.dll!FPhysInterface_Chaos::ExecuteWrite(FPhysScene_Chaos * InScene, TFunctionRef<void __cdecl(FPhysScene_Chaos *)> InCallable) Line 630 C++
UnrealEditor-Engine.dll!FPhysScene_Chaos::OnSyncBodies(Chaos::FPhysicsSolverBase * Solver) Line 2417 C++
UnrealEditor-PhysicsCore.dll!FChaosScene::SyncBodies<Chaos::FPBDRigidsSolver>(Chaos::FPBDRigidsSolver * Solver) Line 459 C++
UnrealEditor-PhysicsCore.dll!`FChaosScene::EndFrame'::`65'::<lambda_1>::operator()<Chaos::FPBDRigidsSolver>(Chaos::FPBDRigidsSolver & Concrete) Line 559 C++
[Inline Frame] UnrealEditor-PhysicsCore.dll!Chaos::FPhysicsSolverBase::CastHelper(const FChaosScene::EndFrame::__l65::<lambda_1> &) Line 313 C++
UnrealEditor-PhysicsCore.dll!FChaosScene::EndFrame() Line 554 C++
[Inline Frame] UnrealEditor-Engine.dll!Invoke(void(UWorld::*)()) Line 66 C++
[Inline Frame] UnrealEditor-Engine.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UWorld::*)() &) Line 309 C++
UnrealEditor-Engine.dll!TBaseUObjectMethodDelegateInstance<0,UWorld,void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfSafe() Line 667 C++
[Inline Frame] UnrealEditor-Engine.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 570 C++
[Inline Frame] UnrealEditor-Engine.dll!FSimpleDelegateGraphTask::DoTask(ENamedThreads::Type) Line 1580 C++
UnrealEditor-Engine.dll!TGraphTask<FSimpleDelegateGraphTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread, bool bDeleteOnCompletion) Line 1235 C++
[Inline Frame] UnrealEditor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & CurrentThread, ENamedThreads::Type) Line 840 C++
UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 760 C++
UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit(int QueueIndex) Line 651 C++
[Inline Frame] UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn(ENamedThreads::Type) Line 2068 C++
UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete(const TArray<TRefCountPtr<FGraphEvent>,TSizedInlineAllocator<4,32,TSizedDefaultAllocator<32>>> & Tasks, ENamedThreads::Type CurrentThreadIfKnown) Line 2122 C++
UnrealEditor-Engine.dll!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup WorldTickGroup, bool bBlockTillComplete) Line 556 C++
UnrealEditor-Engine.dll!FTickTaskManager::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 1583 C++
UnrealEditor-Engine.dll!UWorld::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 772 C++
UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1521 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2015 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 550 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5921 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 61 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 180 C++
UnrealEditor.exe!GuardedMainWrapper(const wchar_t * CmdLine) Line 118 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 258 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 298 C++
[External Code]
I am not able to find world outliner how to enable it?
What method is used to fill polygonal regions when drawing spline mesh at run time?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
How can i modify the param name in EQS node
How does UMG set overlapping layouts?
How to achieve HLSL Multiple Render Target in Material blueprints?
Delay nodes occasionally don't fire the "Completed" output in a nativized build
How does TextureRenderTarget2D get TArray<uint8> type data?
How to properly terminate the DoWork thread function in FAsyncTask?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-227628 in the post.
0 |
Component | UE - Simulation - Physics - Destruction |
---|---|
Affects Versions | 5.4.4 |
Target Fix | 5.6 |
Created | Oct 15, 2024 |
---|---|
Updated | Oct 18, 2024 |