How can I achieve this effect on my character?

Hello,

I’ve been trying to recreate stuff from other games to learn more stuff, and I’ve been trying to recreate this ability using the already included Shinbi assets.

I’m nearly finished but I just cant figure out how I would achieve the effect it has on the character.
It’s hard to see in the video so I’ll post the screenshots as I explain the problem.

First of all, the moment you activate it its bright (https://i.imgur.com/zq0PhIk.png), then it dims down, on the character there’s a pattern (https://i.imgur.com/jAUB9UY.png). After the dash period is over, it gradually becomes black-purple (https://i.imgur.com/zlXhfrj.png), then everything clears to reveal the character. All of this happens very smoothly.

If you want to look at it frame by frame, Paragon - Shinbi Overview - YouTube, 0:46. Use comma and dot keys on your keyboard to control the video frame by frame.

I have tried to do this using the materials provided and a custom material. Basically I created a patterned masked material, applied it once character started dashing by looping through all the materials. Then reapplied the original materials at the end of the dash and started a timeline, and it gradually became black to normal.

There are two issues with this, if I dash a lot of times Unreal crashes. Also the change from masked material to normal material blacked doesnt look great. I’m worried about the performance impact too.

I’m not saying that please show me how to achieve this step by step, but instead I just need a step in the right direction, I’ve been trying to figure this out for 2 days and I’m lost.

Much appreciated :))

It could be a material like this:

Or it’s a particle system:

Hey, much thanks for taking the time to reply and help me out.

I’ve gone over these tutorials and unfortunately none of them helped me. First of all, the first one.
In the first one you create a material and then apply it to the character, thats how it works. But with the Paragon character there are 16 materials per character, and all of it is custom. In the video the person who does it have only one material and he just applies it to the character and it works. That could be fixed like I did to my own masked material, but then the same problems I talked about will exist again.

For the second one, I tried to do this using Niagara, but I have no idea how I would achieve the effect at the end, and also the patterned character. I know I can use a sampled mesh, then set the particle positions to the sampled skeletal mesh position, but I couldnt figure out how I would achieve the pattern effect it has on the character. Also, at the end like I mentioned, character becomes black completely then the blackness disappear to reveal the character. If I could achieve this using Niagara that would be awesome.

I definitely think they made it work with the material system because it doesnt effect the sword, and during the pattern there’s also some effect to show the character outline. https://i.imgur.com/jAUB9UY.png
I just have no idea how I would achieve this with problems I mentioned above.

If you wait for a tutorial to come along that does exactly what you want, it will never happen.

It’s much better to use idea from various places to get what you need.

In fact, I think a lot of what you like from your ideal scenario was probably a compromise by the original programmer. To do this with one material, when it comes to a dash, you could change all the skeletal mesh materials to the same material, make the dash effect, and then change back.

To avoid a pop when changing materials, you might very well, make everything black for a split second. Hence the black fade you notice. ( I have no idea if this is actually so ).

I agree with you but you are misunderstanding me. You know that is not what I meant. Staying in the tutorial hell is the thing I am most afraid of, thats why I started to implement this myself, which I have done mostly, only part I wasnt able to implement is this.

I explained why the Niagara wouldnt work in this case. I also explained why the material tutorial wouldnt work.

Looping through the materials is something I have did, I explain this in the OP. I’m quoting directly from it now.

“There are two issues with this, if I dash a lot of times Unreal crashes. Also the change from masked material to normal material blacked doesnt look great. I’m worried about the performance impact too.”

Here’s the C++ code for it,

Begin play:

Materials = GetMesh()->GetMaterials();
for (int i = 0; i < Materials.Num(); i++) {
	UMaterialInstanceDynamic* MatInstance = UMaterialInstanceDynamic::Create(Materials[i], this);
	GetMesh()->SetMaterial(i, MatInstance);
	MaterialsInstances.Add(MatInstance);
}

On dash click:

for (int i = 0; i < MaterialsInstances.Num(); i++) {
			GetMesh()->SetMaterial(i, DashMaterial);
}

On dash end:

FOnTimelineFloat FloatDelegate;
FloatDelegate.BindUFunction(this, FName("TimelineProgression_GradualBlack"));
GradualBlackTimeline.AddInterpFloat(GraduallyBlackCurve, FloatDelegate);
GradualBlackTimeline.PlayFromStart();
GradualBlackTimeline.SetLooping(false);

for (int i = 0; i < MaterialsInstances.Num(); i++) {
	GetMesh()->SetMaterial(i, MaterialsInstances[i]);
}
void AMyCharacter::TimelineProgression_GradualBlack(float val) {
	for (int i = 0; i < MaterialsInstances.Num(); i++) {
		MaterialsInstances[i]->SetScalarParameterValue("FadeOut", val);
	}
}

It’s not like I’m trying to do this for a game. I’ve been learning about animation, Niagara and bunch of other stuff and I wanted to test myself using this. The outcome is not important here, if I cant achieve the same effect, it doesnt matter at all. Of course I’m not aiming 1:1, but at least similar.

I said that I’ve been pondering about this for 2 days now. I tried bunch of things, and I came to the conclusion that my knowledge and YT tutorials were not enough for this problem, thats why I came here to ask a question.

Solved.

Crash was happening because I didnt use UPROPERTY() on TArray. Instances I saved was eventually becoming None, and that resulted in a crash.
But that wasnt the only problem, you could techinically dash before timeline was over and start again. So I put Timeline.Stop() on all timelines before switching the enum to Dashing.

I handled the effect by doing a fresnel material, and applying that to the character. For the glitter/pattern on character’s body, I used Niagara particles.
So it eventually became like StartTimeline->Put translucent material on body immediately
Then I put some notifies on montage, around where the timeline starts I put the Niagara glitter effect.
Eventually the result became pretty similar.

Making this reply because of the crash problem. It’s very unnoticable and took me quite a long time and debugging to realize. I’m marking this thread now as solved.