How I chose this model:
This model was made in OpenSCAD, since I already know the program. It lets you precisely specify the dimensions of the shape you are making. However, this program has the disadvantage of not easily being able to edit individual polygons. Everything had to be made with primitive shapes.
The object I chose to represent would need to have these constraints in mind. Eventually, I settled on an old cannon. It would be instantly recognizable with only primitive shapes, and arbitrary amounts of detail could be added.
How I made this model:
The main cannon starts with a sphere. A circle with a slightly smaller radius is placed away from this sphere. The convex hull of these two shapes makes the main cannon. The slightly smaller radius of the circle means that the cannon is tapered slightly. To carve out the inside, the difference with a cylinder is used. Some torus are added for detail, each of which is a rotational extrude of a circle. These torus match the taper of the cannon.
The side frame was a challenge to get to look nice. I used a difference of two circles to make the arc at the back. This arc is joined with some rectangles. Finally, several circles are taken out of the shape to add detail, and the whole side piece is then extruded linearly.
The wheels were fairly fun to make. A cylinder represents the axle. Then a for loop is used to create the spokes of the wheel, and is easily adjustable in the number of spokes. A difference of two cylinders, one representing the outer radius, and one representing the inner radius finalizes the wheel.
Various connecting cylinders and other details are added, and the cannon is complete!
For the shader, I played around with existing values and psuedorandom values until I made one that I thought looked neat. Object reference image:
Cannon