# Moving and looping/repeating a straight object (road)

I would like to loop a street object i have. It's essentially just a plane with an image texture. I need to move the street on the y axis and loop / repeat it.

Most tutorials i've seen use curves, but my vision is that it's a straight road, not a curved one. I tried a few things myself including keyframing a second road to spawn in when the first one ends, without success though. I can't wrap my head around how i could possibly repeat / loop it without using the array modifier with a lot of repetitions.

Is there an easier way to do this then my approach so far? All the help i found use a curved road with curves, so it's much easier to just rotate to loop it but that's not my vision for this project. Thanks

Visual Explanation:

Here's an example using Geometry Nodes.

The idea is that you take a mesh line, make it into points and instance a plane on each of those points. You then use the Position, subtracted from the Frame Number (Scene time) and use that to "move the points" along the X axis (or Y for your project), making the last (farthest) one disappear, and a new one (closest) appear as it goes along. As long as you keep the camera view between the endpoints, it will seem to be infinitely scrolling. I reduced the speed by dividing the Frame Number by 25 (though you can use any number you want - smaller = faster).

For your texture to work, you will need to use the UV map from the initial grid (plane) and apply it as a UV map to the Group Output, so it maps each plane separately (works best with repeatable textures). If you need to use one texture for the "whole" road at once, there are ways of doing it, just a bit more complicated.

The "special" UV map must be added as a UV attribute in the Shading graph as a base vector for your textures (instead of a generic UV coordinate), and you must also select your UV map from the Output section of the Geometry nodes Modifier.

I know it can be kind of hard to figure out from just an image, so I'll include and example .blend file for you to examine.

File is here -

You could keep the camera still, array your setup as much as necessary, move it forwards:

To make sure that the last image will be the same as the first you can snap the object to the grid for example:

And as Markus says, use a Linear interpolation for the movement.

• And an easy and convenient way to achieve the seamless loop is to make the interpolation linear (no ease in/ease out), set the minimum frame to 1 (default), maximum frame to x, and synchronize the positions to be perceptively the same on frames 0 and x. Commented May 13, 2023 at 19:04