top of page
  • Writer's pictureMichael

3DS MAX: Cogs and Pistons, Robot Arms.


1  Open a new document. Making an 18:12 gear ratio- one cog has a diameter of 18 units, and 18 teeth, and the other has a diameter of 12, and 12 teeth. Start with a cylinder – for 18 teeth, it has a radius of 9, and 36 segments (18×2). Height segments nd cap segments dont matter. Copy this cylinder and reduce its radius to 6, and its sides to 24.

2. Take the big cog- clcik ctrl+c, then ctrl+v and copy the cylinder. in the modifier stack, reduce the radius by 1 unit (ie from 9 to 8) And de the same again and make a bigger cog- (radius from 9 to 10) so you have 3 cylinders inside of each other. Repeat this for the smaller cog. Bear in mind that the 18 and 12 will now refer to the middle cylinders in each set.

3. Freeze the two outermost cylinders of each cog. Convert the inner cylinder to editable poly, then select every second polygon on the outer edge. Extrude this by 1 unit, then bevel these extruded faces to a further 1 unit to create the teeth. Repeat this process for the smaller cog, and then delete the 2 outer guide cogs which are no longer needed.

4. To start the animation of the cogs together- select the large cog. Right click, and choose the ‘Wire Parameters‘ option. Now choose ‘Transform>Rotation> z-axis’. This will pull up a little dotted line from the centre of the large cog. Now click on the smaller cog- a similar menu will appear. once again choose ‘Transform>Rotation> z-axis’.  A new menu will appear- choose the control direction from parent to master, then click connect. In the text box below the left list, put a minus sign in front of the ‘Z_Rotation expression’. This will make the parent rotate one direction and the child the opposite (as gears should.)

5. You will notice that the cogs rotate the correct way, but at the wrong speed, so the teeth come through each other. Open the schematic view, check Wire_Parameters’ and click the link between the two cylinder icons. This will open the wire parameters expression box again. Now adjust the expression in the text box to say -‘Z_Rotation*18/12’. This will adjust the speed of the smaller cog to match that of the first. Any further cogs added to the system can be linked to the first cog in the same way, with their speed and direction expression adjusted appropriately. (ie. (+/-)Z_rotation*18/x).


1.Freeze your cogs, and create a new cylinder on top of your large cog.. Now create two long thin cylinders sticking out of the side of the first. Make one thinner than the other, as if it is sliding inside it. Copy the original cylinder to the bottom of the set, as shown below.

2. Create a dummy at each end and align them to the vertical cylinders. Now group each cylinder to its attached piston, and link each group to its attached dummy. Now, select the bottom dummy, and in the menu bar choose Animation>Constraints>Lookat Constraint. Again we get a dotted line from the dummy. Click this on the other dummy, so now the bottom one will always look at the top. NB- If this should twist or rotate the model, scroll down the modifier panel and check the option ‘Keep initial offset’

3. Repeat this in the opposite direction, but instead of connecting the top Dummy to the bottom dummy, connect the top Piston to the bottom dummy. However- this produces an imperfect alignment. We must move the pivot point of the group to the same spot as that of the dummy, to keep the pistons aligned during movement. Click on affect pivot only, choose the top piston, then the align tool, then align the pivot to the dummy.  Now, the piston will work properly.

4. To further this, move the top piston dummy over the big cog, and link the dummy to the cog. Now, when you rotate the big cog, the dummy piston will move, and the whole piston will look like it is powered by the cog.

Robot Arms.

When you create a robot arm, you will create dummy objects at each joint. For the hierarchy, link dummy to dummy, then link relevant objects to each dummy. Do not link from dummy to object to dummy to object etc as this will create problems (such as unwanted  warping and scaling) when you try to animate.

You will also want to limit the movement of these dummies, so that geometry doesnt overlap or fold inside itself. There are two ways to do this.

Firstly, select the dummy you wish to constrain, then select the hierarchy tab on the right. Beneath the object name box, click the third button named ‘Link Info’. From here you can lock the movement, rotation and scaling of objects in the 3 main axes.

link locks

Secondly, you may wish to limit how much the arm can rotate in one direction.  For instance, to limit it to only rotate + or -50 degrees on the z axis: Go to the motion tab of the selected dummy, click the ‘Assign Controller’ tab.  Choose ‘Z Rotation’ in the scroll box underneath (Its default value will probably be Z Rotation: Bezier Float). Now click the tiny square button with the white symbol just above this  scroll box. When the list box ‘Assign Float Controller’ appears  choose the option ‘Float Limit’. Now you can double click on the Z Rotation option and open a new little menu called ‘Float Limit Controller’.  This will have default values somewhere in the thousands, but you can change the upper  and lower limits to 50 and -50 as shown below. Now when you rotate the dummy it will stop when it reaches the set values.

float limit

Recent Posts

See All

TUTORIAL: Maya - UV Unwrapping

OPEN UV EDITOR 1. With Model selected, In the top toolbar go to UV > Open UV Editor. 2. This will open the UV Editor window and the UV Toolkit. REMOVE EXISTING UVS 1 Clear the existing U

TUTORIAL: Maya - Rendering Animations

Rendering is the process by which we process the snapshot of a scene to its highest quality. This can take a long time, as lighting, shadows, reflections etc are calculated. It can take several hours


bottom of page