Parametric Race Trophies

Project Description

Elevator Pitch: For my final project, I’m designing custom parametric trophies for the Boulder Alleycat race series, using Grasshopper. Each trophy is tailored to physically show the route taken by the racer by mapping race data onto a 3D topological model of campus. The goal is to generate meaningful, personalized trophies which celebrate individual race strategies.


Background: Alleycat races are a unique phenomenon, born from the messenger/ courier culture in large cities such as New York. Spending most of their waking moments biking around the cities delivering parcels, these cyclists developed a unique race format to honor their work and highlight their skills.


Alleycat races are checkpoint based where checkpoints can be visited in any order, and thus have no set route. The challenge (and the fun) is derived from figuring out the best route yourself. As a result, there can be as many routes taken as participating racers, which adds a lot of value to the winning route.


In October of 2023, my roommate and I decided to start our own race series in Boulder. Utilizing the CU campus as our stage and advertising towards students and fixie enthusiasts, we started Boulder Alleycat. After the second race, I decided to engineer a web-based tool to handle checkpoint check-in online, which would significantly reduce the effort needed to organize the races while also enabling live tracking and timing data collection (Data from the most recent Race 04 is visible on my Dashboard).


This is where my motivation to take on this project originated. I figured that using Grasshopper, I could build a reusable tool that turns coordinates and checkpoint order into interesting memorabilia to support my race series.


Task 1 Image 1

Functionality

To transform raw race data into a physical representation, I implemented several layers of logic and geometry processing within Grasshopper. After extracting checkpoint coordinates from Google Maps, the checkpoint order from the live tool, and the 3d model from Touch Terrain I developed a parametric system that:


  • Places points on the scale model precisely in the correct location (x,y).
  • Aligns those markers with terrain height using Mesh Closest Point.
  • Generates vertical markers (e.g., cylinders and spheres) to denote checkpoints. Spheres represent the start and finish, cylinders represent the remaining checkpoints.
  • Uses pipes to connect the markers in the correct order.
  • Iterates along the pipes and applies Mesh Closest Point again to ensure the pipes maintain a consistent prominence over the scale model without dipping into it or bridging over.

Additionally, I embedded race metadata in the form of some text for a more trophy-like aesthetic, including racer number, "Race 03", and the racer's final time, dynamically positioned in the upper right hand corner of the trophy, and also utilizing MCP to maintain a consistent letter look.


Below is a sequence of screenshots of my Grasshopper code that show the logic for each of these functions, followed by renders.


Coordinate transformation

Using coordinates that represent where the corners of the model are on Earth, I find where on the model to place a given checkpoint by dividing the checkpoints longitude or latitude by the difference of the min and max, and multiplying this result by 100 (the side length of the model). To create a new trophy using the same code, I need only paste in the coordinates, and change the scale factor to the side length of the model.


First working conversion

Next, I draw pipes between the points by using a combination of the line, pipe, divide curve, MCP, and interpolate components. The first pipe, the one connecting the start marker to the first checkpoint visited, is given an arrow (cone) to denote direction of travel of the racer.


Calculation setup


Offset logic

The logic that controls the text, and ensures it follows the complex contours of the topological model.


Checkpoint cylinders

"#002//1st Place//Race 03//(9m49s)"


Downloads

Physical Fabrication

I used my friend's bambu labs printer to print the final model. I chose his printer because it has a high print resolution, and the more precise a machine, the greater topographical detail can be captured in the final print.

Coordinate transformation
First working conversion
Calculation setup

Reflection

My main qualm with the finished product is the readability of the text at the top. While still somewhat legible, the text aspect of the trophy is necessary to the function of the object as a trophy. Not only does it make the final product look ugly, it also hinders the function. If I were to do this project again, I would make sure to increase the text size significantly to avoid this.


Aside from that, however, I am very pleased with myself. I was able to achieve all of my goals, and my idea has successfully been brought to life down to the last detail. The Grasshopper code is messy, but it works flawlessly and has a vast array of parameters I can modify if I want. I can make the markers and pipes larger for better prints, or smaller to accentuate the topographic model, just to name a couple. I am very excited to utilize it in the future for winners with efficient alleycat routes.


Finally, I'd like to extend my thanks to you, Professor Rivera, for a great semester. Grasshopper is such a cool tool that I plan to continue using in the future, so I'd like to say thank you for teaching such an interesting class and for your contribution towards the incredible course offerings at ATLS. HAGS!