14 votes
Date Updated: 

An animatable parametric spacing tool - useful for creating tank treads or bicycle chains.

Additional Info: 

Copy this file '' to any folder in your system
Open 3ds max
Create a Spline Shape to use as track i.e. path
Create any object to use as wagon
Open 'Utility Panel' and click 'MAXScript' button
Click 'Run Script' and locate the TrainMaker script file
Select 'TrainMaker' in the 'Utilities' dropdown list
To automate this at startup - place the file in
this folder: max_rootstdplugsstdscripts

Click 'Get Track' button - select a shape to use as track
Click 'Get Wagon' button - select any object to use as wagon
Specify the number of wagons with the 'Number:' spinner
Set the animation range use 'Active Time Segment from the Time Configuration
dialog. Or set the Start and End frame to any value.

The distance can be set in three ways:
1. Gap Distance: The distance between the wagons is calculated from the size of the objects x-axis and the value set in the 'Gap Distance' spinner. Regardless of the track length. If 'Follow' is selected in Path Constarint Options - the distance will be calculated from selected axis
2. c/c Distance: The distance between wagons are calculated regardless of the wagon size and regardless of the track length
3. Percent Offset: The distance is calculated from a percent offset of the track length. A Percent offset of 0 will distribute the wagons evenly along the Track

- 'LookAt': will make the wagon look at the wagon behind. This prevents the wagon from slide off the path if the pivot is not at the wagon's center. LookAt overrides the Axis setting in the Path Constraint Options

- Tail: Creates a dummy as LookAt target for the last wagon
- Axis: Determines wich axis to use as LookAt vector
- Flip: Will flip the wagon's LookAt axis

Path Constarint Options
This is the same as the Path Constraint options in the Motion panel. The 'Follow' option will recalculate the Wagon Length according to the axis

Version Requirement: 
7; 6
Video URL: 


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
visualizer's picture

How can this problem is still no addressed ?

I have uploaded a screen recorded vieo of the problem !
This happens even with max's inbuilt path constraint.
as long as it is on XY plane ( horizontal ) it works all the way fine... but when you make it vertical it fails!
Check my video attached here....

hope somebody finds solution !

error_clip.avi 25.88 MB
visualizer's picture



this is really nice script but the BUG is why objects flip the sides when moving on a rectangle with some radius at corners? wagens A or B doesnt maintain direction and filps the sides?
can you fix this?

tassel's picture

I hope he don't mind that i'm

I hope he don't mind that i'm uploading it.

AttachmentSize 23.21 KB

Raymond H.Ingebretsen -

YSNM's picture

Download Script

is there a way to download this script file again ? it says that it didn't find link ??
Thanks in advance

leejk's picture

Tracks Flipping Again


I've again run into the problem where the tracks are flipping part way arounf the path. I remember having this problem before, but cannot remember how we fixed it. It seems the option to allow upside down on the motion panel is greyed out, which is what needs to be turned on. Can anyone jog my memory as to how this is solved?


KevinThorp's picture

Neat script, but I'm having

Neat script, but I'm having trouble animating it.

I created a timing belt & used the Trainmaker script to populate it with teeth. When I try to animate the teeth moving around the perimeter all I can get is them moving towards a single location.

On the first frame all the teeth are spaced appropriately but by the last frame they're all together, giving the appearance of a single tooth.

alapsawy's picture

thanks very usefull script


very usefull script

Conny Klasson's picture

Glad you like the script

Glad you like the script :)

Did you solve the problem with an Upnode axis?


leejk's picture

I figured it out. This is a

I figured it out. This is a really great script!

leejk's picture

 Hello, This script does a


This script does a better job of keeping the tracks on the path than the splineIK solver for sure!

One problem I have though, how do you keep the tank tracks from flipping when they go from the top side of the track path to the bottom?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.