ParticleModuleLocationBoneSocket don't follow ragdoll

Hi,

I have fire particles with module ParticleModuleLocationBoneSocket on pawn and when this pawn is running arounds particles follow him and they spawned from correct bone locations, but when he is turned to ragdoll they will stay where he was before ragdoll( particle positions are still updated from the animations).

The bodies below root are simulating.

What can I do to fix this problem?

Regards

Pierdek

bump . . . .

Hey Pierdek -

I was able to reproduce this issue (though not exactly to the extent you are describing, my particles where only slightly offset from the bones and not left in mid air), but it looks like it has already been fixed in an internal branch of the engine.

To confirm can you please run this console command showdebug bones and take a screenshot of the ragdolled character on the ground.

Thank You for your report -

Eric Ketchum

Hi Eric

Is there a way in 4.6 to enable “showdebug bones” for non player character?:slight_smile:
My playercharacter doesn’t have ragdoll/bonesocket particle functionality.

Regards

Pierdek

Hey Pierdek -

Yes, you can. Execute the “showdebug bones” command then execute the “ViewActor [Actor’s ID Name(, see my picture below)]” and finally “Camera Freecam” which will allow you to rotate around the other actor.

While in Play, you can hover over the actor in the Scene Outliner and it will give you the ID Name.

In my test I’ve set this up to run in the level blueprint with some Execute Console Command Nodes.

Thank You

Eric Ketchum

Hi Eric
I tested “showdebug bones” everything is fine in this test, bones are in good place.

But I recorded a movie:

with debug red points

bool UParticleModuleLocationBoneSocket::GetParticleLocation(FParticleEmitterInstance* Owner, 
	USkeletalMeshComponent* InSkelMeshComponent, int32 InBoneSocketIndex, 
	FVector& OutPosition, FQuat* OutRotation)


int32 BoneIndex = InSkelMeshComponent->GetBoneIndex(SourceLocations[InBoneSocketIndex].BoneSocketName);
		if (BoneIndex != INDEX_NONE)
		{
			FVector SocketOffset = SourceLocations[InBoneSocketIndex].Offset + UniversalOffset;
			FMatrix WorldBoneTM = InSkelMeshComponent->GetBoneMatrix(BoneIndex);
			FTranslationMatrix OffsetMatrix(SocketOffset);
			FMatrix ResultMatrix = OffsetMatrix * WorldBoneTM;
			OutPosition = ResultMatrix.GetOrigin();

			DrawDebugPoint(GWorld, OutPosition, 2.f, FColor::Red, true, 0.5f); <-- this draw red points
			if (OutRotation != NULL)
			{
				ResultMatrix.RemoveScaling();
				*OutRotation = ResultMatrix.ToQuat();
			}
		}

As you see everything is fine with particles, but as soon ragdoll simulation started the particles stay in “IDLE” animation pose.
Observe the movie around 6s(“Broken particles” annotation will pop up)

Any clues?

Regards

Pierdek

Hey Pierdek -

I am still having problems reproducing this bug internally on 4.6. Is there anyway you can upload a sample project containing this issue for us to test?

Thank You

Eric Ketchum

Hi Eric
Creating test project is little problematic for now. But I have an idea what We can test for the first place, can You give me your test particle? I will test in my project if it is caused by particle or other stuff.

Regards

Pierdek

Hey Pierdek -

Here is the link to my project containing a functioning Ragdoll with Particle Bone Location. Simply PIE and Press K to Ragdoll Pawn.

Let me know

Eric Ketchum

I’ve modified your sample and basically I was able to reproduce reported issue:

You will see pawn standing at stairs with attached bone socket particle. Press K to enable ragdoll and you will see that particle will remain at T-Pose, but whole particle system is rotated.

Regards

Pierdek

Good News!

Thank you for your help I was able to track the issue down and it has indeed been fixed in the internal branch of the engine.

It should be coming with a hot fix or major engine release soon.

Thank You

Eric Ketchum

Hi again, glad to hear that :wink:

could You point this change in master branch?

Regards

Pierdek

Hey Pierdek -

I will not have enough time to track down the submitted Changelist and Commit for you this week, but I did test and it is working in the 4.7.0 Preview 1.