Ribbon Troubleshooting? - UE4 ver. (4.27.1)

Hey folks, does anyone know if it’s possible to get a ribbon to tile properly in 4.27 while also having a train track effect?

Below are examples of each element-

In this example, it tiles like I want, but as soon as it begins moving it gets crunchy/jittery and slithers around, being jerked by the source (looks low FPS). Setting "TILED (BY SEGMENT LENGTH)"
crunchy-but-tiled

In this example, it doesn’t tile at all? (hard to tell) but when it moves it draws smoothly like I’d want with no jerking/jittering. Setting "TILE BY DISTANCE (BY PARTICLES.RIBBONUVDISTANCE)"
smooth-but-flat

Is there a way to get both elements? (nice tiling + train-tracking)

Previously in 4.26 this method seemed to work just using the “UOverride” + “Engine Time” method. That doesn’t appear to work anymore? The “Enable Per Particle UOverride” setting is disabled now when changing UV modes, previously it didn’t do that in 4.26.

This setting now disables UV mode in 4.27+; previously it allowed you to enable it while also tiling.
image
Ribbon Tiling Settings for 4.27+ (UOverride not available when used)
image

Here’s 4.27’s description of “tile by distance”. It says based on “tile length and ribbon uv distance”. I’ve tried fiddling with both values (extreme/tiny) but haven’t had any luck. I’ve even tried adjusting it via the Texture Coordinate inside the material but it seems to ignore that.

For context, here’s what 4.26 had for options previously
image
Settings available in 4.26
image

Here’s an example of what I want (4.26, using Engine Time method above). Here you can see it’s tiling when static, but it’s also smooth when moving (stretching but smooth). Overall its “smooth” without any jittering which is what i’m looking for. Any ideas?
smooth-desired

4 Likes

Can you not just scroll in the material? is there any reason you are being restricted to only using uv generation to generate the movement?

Hey, the smoke texture is already scrolling through the material, but that doesn’t fix the slithering/jitteryness on the exterior which is very visible. If I could use the “tile by distance” but have the initial texture tile, that’d be perfect (as seen working in 4.26 in the image below).

I mean, if you both use a uv mode to set u, and override it, the original uv mode data isn’t there anymore. (4.26 as well, it just wasn’t greyed out I believe).
However setting uoverride to distancetraveled+time should still work.

If you really want to use uv mode, the tile by distance should generate over distance travelled, but you’ll have to set the time offset in the material, since afaik it does not allow manually offsetting the existing values, just overriding.

Actually, I suppose you could try and mess with the distancetraveled parameter. Maybe add deltatime to it in emitter update? Not sure if that works

1 Like

I don’t know if it will help you, but I made 3 videos about ribbon UVs and how to calculate your own UVs based on the particle distance.
https://www.youtube.com/c/UnrealSimon/videos

image

3 Likes

It is really easy to fix that. In your emitter update take the distance from the current gun position spawn point to the previous gun position spawnpoint. now multiply the value by deltatime. Now add the delta to a countervalue so frame by frame the value keeps incrementing. In a dynamic material parameter slot feed in in the incrementing value and divide it by a float to set your texture scaling. now in your material make a float2 in R you feed in the dynamic parameter and in G you add the G mask from a standard UV coord.

1 Like

Ah, so turns out I overlooked two details- I had the override incorrectly placed in “Particle Update” instead of “Particle Spawn”.


Also, another important component was that the Override wasn’t plugged into the “UOverride Binding”

The settings are definitely ignored once setup correctly (the greying out in future versions) so that makes sense now.

I checked in 4.26 and 4.27 and it works! Wew

3 Likes

I’m having the exact same problem as you were, however what you did doesn’t seem to work for me. Not sure why. I’m wondering why are you changing the U0Override Binding and not the Ribbon UVDistance Binding. Also what’s supposed to happen when changing the value in the new SET you made (that number 9 you have), is it supposed to tile more?

EDIT: In the list of Bindings I see a Ribbon UVDistance, for some reason you don’t have it in your list in the image.