· 8 min read · updated
Why Tight Curves Break Voxel Track
Traluno's track has one curve radius, 5 units. Why a swept box breaks below a minimum radius of its own, and how that compares with real HO curves.

Almost every long thin thing on the layout is built the same way. Take a path, walk along it at a fixed lateral offset, and drop a box at each step. Two offsets give you two rails. A wider one gives you ballast. Move outward again and you have a kerb, a footway, a girder. Sweeping like that has a minimum radius of its own.
It is a good technique. It is also the source of a persistent class of visual bug: below that radius the geometry breaks, whatever runs on it, and that is part of the reason Traluno's curves come in exactly one radius.
Minimum radius on a real layout, and in Traluno
On a real HO layout, minimum radius is a mechanical limit set by the rolling stock. The NMRA's recommended practice on curvature, RP-11, calls its figures a trade-off between the space a layout has and the need for "greater truck rotation", and gives 356 mm (14 in) as the HO minimum for its smallest class of locomotive-hauled equipment, and 127 mm (5 in) for streetcars. Sectional track is sold in fixed radii, and the tightest sit near that figure: Märklin's C track starts at R1, 360 mm (Märklin 24130).
Traluno's one curve is a quarter circle inside a single 10-unit cell, centred on the cell's corner, so its radius is 5 units. The engine counts in centimetres, which makes that 50 mm, about a seventh of Märklin's tightest. It works because nothing in Traluno has a flange: a train follows a path through each cell rather than being steered by its wheels, and the cars are short, about five units each. The scales post sets out where else the game compresses HO, and why.
So the minimum radius that matters here is not the trains'. It is the one below which the geometry itself breaks.
What goes wrong
A box swept along a straight line is fine: consecutive boxes sit end to end and the seams are invisible.
A box swept along an arc is fine too, as long as the arc is gentle. Each box is rotated slightly relative to the last, and the outer edges open up a fraction while the inner edges close. At a large radius the difference is too small to see.
Tighten the radius and the inner edges do not just close; they overlap. Each box drives its inner corner into the body of the box behind it, and because the boxes are rotated relative to one another, the overlapping corners stick out. What you get is not a smooth curve with slightly thick geometry. It is a starburst: a ring of raised triangular fins, one per step, catching the light and reading as damage.
The engine's working rule is never to sweep an arc of radius under about 1.5 units. How bad it gets depends on the width of the box as well as the radius, because the trouble starts as the box's inner edge approaches the centre of the arc, which means a rail can survive a curve that a footway cannot. On a Traluno curve the rails run at radii of about 4.0 and 6.0, and the innermost lane of the ballast bed at about 3.3. A street is wider, so on the same curve its strips reach closer to the corner: the innermost lane of its asphalt runs at about 2.1, and the inside footway, had it been swept, would have run at 0.6.
The fixes that do not work
More steps. The instinct is that the fins are a sampling artefact, so sampling finer should help. It makes it worse. Halving the step doubles the number of fins and halves their size, and a dense ring of small fins reads as a rough, noisy band rather than as a clean overlap, which is arguably uglier because it looks like a texture problem rather than a geometry one.
Fewer steps. Going the other way turns the curve into a visible polygon. You have traded a bad curve for an obviously faceted one.
Shrinking the box. A narrower box does delay the onset, but the width is not free. A footway is as wide as a footway, and one that thins out on every corner reads as a mistake of its own.
The real problem is that a swept box has a width, and a curve tight enough will always eat it. There is no parameter that fixes it, only parameters that move where it starts.
What actually works
Do not build the tight thing by sweeping. The inside of a street curve is not swept at all. The footway there is the corner itself: a square pad between the carriageway and the corner of the cell, with its kerb laid in two straight runs along the two edges that face the road. It has no seams because it has no steps.

Even that took two goes. The first version kerbed the corner with one diagonal bar centred on the cell's corner, which overshot into the carriageway at both ends. On a lone curve it was harmless; where four curves met, the overshoots made a pinwheel of kerb arms across the road. Corners are where roads get harder than rails in general.

That is the general answer. Where a sweep is too tight, replace the sweep with pieces that occupy the same space and have no steps in them.
Keep one radius. Every curve in the catalogue is the same quarter circle of radius 5: the track curve, the diverging leg of both switches, and the street curve. Its tightest swept strip, the street's inner lane at about 2.1, is clear of the 1.5 rule, and the track's are far clear of it. A gentler curve would suit the geometry even better, but it would need more than one cell, and every track piece in the game is exactly one cell. This is not a limitation the player is protected from. It is a limitation the player never encounters, because the tight case does not exist in the catalogue. Real sectional track makes a similar bargain, a few fixed radii instead of a continuum, so that the pieces always fit; Traluno offers one, and an oval needs exactly four of it. Model train track plans builds six plans from that one piece, and Lay Your First Loop starts with the four.

The sibling bug: shared edges
There is a second failure in the same family, and it looks nothing like the first until you know what it is.
On a curve, a wide band (the carriageway, the ballast bed, the deck of a bridge) is built as several narrow lanes, each swept at its own radius, so the outer edge of the arc has no notches. The obvious thing is to have lane two start exactly where lane one ends, sharing an edge.
Do that and you get radial seams: thin dark lines running across the band at every step, appearing and disappearing as the camera moves. The cause is two coincident faces. Two surfaces at exactly the same depth, and the renderer has no basis for choosing which is in front, so it picks differently per pixel and per frame.
The fix is to overlap the lanes by about 0.3 rather than butting them. The seam disappears because there is no longer a plane where two faces agree. Overlapping geometry offends a certain kind of tidiness, but z-fighting is not a tidiness problem. It is a correctness problem, and the correct answer is to make sure no two faces ever coincide.
The fix has a cost of its own. On a curve every lane is now a little wider than its nominal width, so a band sized right up to a rail overlaps the rail and z-fights with it instead. The planking of a level crossing is laid in the same bands, and it stops clear of the rail on both faces for that reason.
The one that took longest to find
Worth recording because it looked like neither of the above.
On straights running along the Z axis, both rails collapsed onto the centreline. On X-axis straights they were fine. Curves were fine.
The cause: the geometry was being offset and then rotated in place. Offsetting first bakes the lateral displacement into world space, so the rotation spins the piece about its own centre and the offset keeps pointing the way it always did (north, say) regardless of which way the track runs. On a track running east-west that is a lateral offset. On a track running north-south it is a longitudinal one, and both rails end up on the centreline with a slight lead and lag.
The rule that came out of it: never offset and then rotate. Rotate the direction, then offset along it. In the engine it is now one function: the point on a path takes the offset as an argument and applies it across the path's heading at that point, and each box of a strip spans the chord between two points of the offset path, so a rail keeps its distance from the centreline through a curve as well as along a straight. It is obvious once written down.
- geometry
- engine
- rails



