UE5.1 - rotating ball is not shown clear

I created a golf game. when the ball rolls on the ground, it doesn’t look clearly. Even though it doesn’t roll, it doesn’t look clear. I tried FXAA, TAA, TemporalAACurrentFrameWeight, TemporalAAFilterSize, ScreenPercentage, r.MotionBlur.Amount. Those are not working.

Please help me how to solve that

I guess you are using a highly reflective sphere with Lumen turned on, because if so, it’s a Lumen problem :eyes:

If the ball looks soft even when it is sitting still, this is not motion blur. A golf ball is a handful of pixels. TAA/TSR treats that as noise and smears it.

Things that actually help, in order:

  1. Confirm the ball material writes velocity. If it uses World Position Offset, or the parent is a moving component with no velocity output, TAA ghosts it even at rest. Material → details → output velocity on. Drop WPO if you do not need it.
  2. Stop fighting TemporalAACurrentFrameWeight. In 5.1 switch the project AA to TSR, or FXAA + 100–150% screen percentage. TAA on a small high-contrast sphere almost always looks milky.
  3. r.Tonemapper.Sharpen 0.6 (or 1.0) in the console / DefaultEngine.ini. Cheap and usually the first visible win.
  4. Motion blur off is correct (r.MotionBlurQuality 0), but it will not save a 12-pixel ball. Scale the mesh up a touch, or give it a sharper normal/roughness so the silhouette reads.
  5. If you have a Niagara trail: that is a separate smear. Disable it once to see whether the mesh itself is the problem.

“Doesn’t look clear even when it doesn’t roll” = resolution + TAA, not the roll code. Fix the AA path first, then the material velocity, then worry about trails.

It doesn’t resolve. when it rotates slowly, it is better. but I cannot make it rotate slowly any more as it is unrealistic. I did this:

FVector vBallPos_UE = ConvVectorD3dxToUe4(m_vBallPos);
FRotator Rotator = GetActorRotation();
float fAngle = fDistance / (PI * s_fBallRadius * 2.6f) * 180.f;
if (fAngle > s_fRotateBallUpperLimit) fAngle = s_fRotateBallUpperLimit;
Rotator.Pitch = 0;
FVector vDir = m_vBallPos - m_vPrevBallPos;
vDir.Normalize();
Rotator.Yaw = FMath::RadiansToDegrees(FMath::Atan2(-vDir.Y, vDir.X));
static float fRoll = 0.f;
fRoll += fAngle;
if (fRoll > 360) fRoll -= 360;
Rotator.Roll = fRoll;
			
SetActorLocationAndRotation(vBallPos_UE, Rotator);

When make Roll=0, the tail disappears. But the tail appears when making Yaw=0