"


















Straviz: Turning Workout Activities into 3D Visuals

built by ben



















“The path of the righteous man is beset on all sides by the inequities of blood flow, and the tyranny of gravity”



I’ve been doing mountain and endurance sports for a pretty long time. I do a lot of them, but the ones I really like doing are alpine climbing and backcountry skiing. The thing about those two sports is that you can’t actually do any serious objectives unless you have a really strong foundation of fitness. Now in general, the easiest way to gain fitness for those two (especially skiing) is by running a lot. The problem with this is that running actually kind of sucks.

Exhibit A
I made this post on r/running and it ended up being one of the highest engagement posts that year. Who would have thought that people in a subreddit dedicated to running would simultaneously harbour so much animosity towards it?

Me. I guessed it. Because running sucks.

Circuit Schematic

Ever since I made that post I’ve been thinking of different ways to make it more enjoyable. I’ve combed through the comments numerous times to see what parts about running irk people the most. The most upvoted comment definitely stands out among the rest, it’s so simple, yet somehow captures everything about the problem itself.

"Starting." -kongofcbus

It’s so true. I know that going for a run will be great, it will be good for me, I’ll feel good after I do it, I’ll be closer to my training goals etc… But for some reason I don’t want to get off the couch.
So how do I motivate myself to go do that run? That’s what StraViz is about. This is my attempt at creating an artistic solution to a physical problem. After completing iteration 1, I have a lot of ideas for where to take it next, but for now this feels like a good place to record my progress so far.

The idea is to create something that has the following properties

I also restricted myself to making this thing exist in the physical world. There’s way too many mobile apps out there to help people run / track their running progress. Running is a physical thing, so I wanted something tangible to represent it.


There’s an old saying that goes "If you stare at the wall long enough, it will eventually reveal something to you."


In my case that saying turned out to have some substance.

I have a wall in my apartment that was looking a bit too blank. I'm not a fan of empty walls, I like to use the square footage to its maximum potential. That’s where the idea started, I should use my runs to generate some sort of art that grows over time. I’ll be motivated to run more to fill up the empty wall space, and depending on how I generate the art, it could also tell me something about the data, maybe providing some insight into how I should structure my future training. It would at least be more interesting than scrolling through my Strava history.



So, what is it?

It's an art project.

Wapta


Actually, it's a data project disguised as an art project.


StraViz is a procedurally generated 3D representation of your outdoor activites, it looks cool, and it tells you something helpful.

Here's the user journey


How does it work?

StraViz can be broken into two components, an iOS app and a Blender script.



Workout data can be accessed through Apple's HealthKit API, which is much more convoluted than it should be, but it's actually really powerful. The key data points that I'm extracting for any given workout are:

These points are the foundation for the procedural generation. The Geospatial Coordinates (Latitude & Longitude) are used to create a vertex path in a cartesian (X,Y) plane. The starting point of the run is set to (0,0) in cartesian space, and the x, y positions of the rest of the vertices are calculated in relation to the starting point.

Tech box

The altitude is calculated in the same fashion, where the starting point is set to 0, and each point after is assigned the difference between starting and current altitude.

Heart rate is normalized to a range between 0 and 10, that value is then used as the input to the meshes x,y extrusion. Basically a higher heart rate generates a wider path at that point.

The final parameter is the pace, which currently only affects the lighting of the mesh. Each sample is assigned its own point light, that point light's brightness is controlled by the pace, which is also normalized to a range between 10 - 1000, which represents the wattage of the point light. The raw sample unit is Km / min.

After generating the meshes the Blender script also automatically assigns materials to the text, the platform, and the path. Materials always take some tinkering to get right, but they can be easily swapped once you have a library of them. It’s not like they show up in the final prints anyway.

Examples

Tech box



Tech box

Tech box

Tech box

If you want to try this out with your own adventure data, check out the projects github