Show HN: 3D Terrain simulation for hiking, skiing etc.
github.com145 points by folli 2 days ago
145 points by folli 2 days ago
I'm working on a GPS track visualizer for quite some time. It shines in hilly and mountaineous terrain (where a 3D view makes more sense), but it also offers quite a lot of Strava-like features (statistics etc.).
You can upload your GPX and FIT files manually, or sync directly with Garmin, Coros and Polar.
See https://cubetrek.com for the live app and check out some examples there. It's free and opens source.
Also, anyone who likes to work with 3D visualizations (especially Babylon.js), let me know if you like to help polish this thing further.
I love the examples on your site. I tried it out but got this message: "Error Track does not contain Timing data." It would be awesome if it could work on GPX files that don't contain timing data. I often want to visualize a planned route or verify if a GPX file I have downloaded from somewhere has any obvious problems. Thanks for testing! The requirement for timing data is in order to calculate all of the statistics. Also, from a perspective of CubeTrek being a kind of diary of your activities, route only files do not really fit into thw picture. But perhaps it makes sense to allow them on the anonymous upload for the purpose you mention. Yeah I would be fine with almost all of the statistics missing. I'm just one datapoint and I might be a bad one. Most of my GPS use is in the planning phase. I could also imagine people wanting to share visualizations of their route without the times because they don't want people saying they are slow. Now I do have a lot of files that include the time... but they are all saved as GDB files. Do you know an easy way for me to extract the GPX file with timing information from the GDB without Garmin MapSource (These are old and I no longer have MapSource installed on my computer.) Yeah it is a bit odd to have it fail on lack of timestamps. One workaround would be to add dummy timestamps. There seem to be a few options floating around, like https://github.com/mikaello/gpxfaketimer (never used, no idea how well it’ll work) If anyone wants to tinker with the Babylon.js code for the 3D visualizations, I made a standalone, sandbox-like repo, which is much easier to set up: I work in the web 3d space, but unfortunately I know nothing about working with Babylon.js. What made you choose this engine? Did you evaluate cesium.js or three.js? Three.js would get you probably a couple of orders of magnitude more potential contributors, while cesium.js is designed for exactly this kind of project - at least that's my understanding, I haven't personally used it either. EDIT: btw this sounds like a complaint but I didn't mean it that way. You might have really good reasons for your choice and I'm curious to hear them if you're willing to share. All good, it's a valid question. I'm actually using cesium.js for the replay mode (https://cubetrek.com/replay/6638) using Google Earth data. For the 3D mode I was evaluating both Three.js and Babylon.js, and back when I started Babylon.js seemed a bit more exciting as I could set everything up a bit faster, so it was not an objective choice. But perhaps it was the wrong decision in hindsight... Very cool. I know this is not a related solution but just want to remind people that Google maps has a 3D mode. I do wonder if they are planning to get rid of it because they are burying it deep. you have to turn on "Globe View" and "Satellite" https://i.postimg.cc/kMRMKvjc/Screenshot-2025-01-11-at-10-59... The replay mode (example: https://cubetrek.com/replay/6338) also uses Google Earth data.
However, I'm a bit hesitant to further work on this, as I don't know if Google will suddenly pull the plug or charge extraorbitant amounts for usage. I consider it more of a proof of concept at this stage. This is really cool, just tried it with a recent hike ( https://cubetrek.com/view/362602 ). Strava has a really basic 3d visualization but it's from a fixed angle which isn't very useful. Being able to move around and the replay mode are really neat. I was confused a little about the flame effect on the route before I realized it was matching my mouse on the other charts. I second the request to be able to visualize routes without timing, it'd be awesome to take some route I have planned out in caltopo and view it here. Also it seems like not quite what you're aiming for but I already have a few places I can (and sometimes do) upload these for the sharing/community/diary aspect (strava and peakery) and it would be cool to have some sort of integration where I could visualize activities from there without having to download/upload the GPX. Maybe I really need some kind of GPX multiplexer to upload stuff from my GPS to all the different places it could go :). Your hike looks cool, thanks for sharing! Getting the data from Strava is something I really don't wanna touch with a ten foot pole. Talking to other devs, using their API is the stuff of nightmares because they keep changing their ToS very frequently and recently they have become extremely restrictive on what you can do with "their" (actually the user's) activity data. I never heard of Peakery, need to look into that. What you can do, however, is to directly link your Garmin, Coros and Polar account to automatically upload data. That makes sense about strava, they don't seem the friendliest to work with. Good to know about linking garmin, etc. accounts though, I missed that and it would definitely do what I want. For actual hikes / backcountry tours though (not just reviewing a recorded track, but helping plan before and orient in the terrain during) -- I've found an app creatively called "Maps 3D" to work best. You can download maps for offline use (handy in those places with no cell reception) and those often include common trails in the area. The website looks great! My first thought was "I wonder if it has a docker-compose file?". Searched the repo for docker, nothing. Check the PRs. One open PR from October where someone dockerized it. Please merge this! It makes it much easier for people to deploy it one their own devices and try it out. It's definitely not ready to be merged. But you're more than welcome to work on it! There are some issues to be solved to self host the app: - the global height (SRTM) data is approx. half a TB, so we need an option to provide only a subset of files for the relevant locations
- same for OSM data where some extracted features are stored locally
- remove some third party dependencies, such as captcha verification for sign-up etc.
- remove hook to Garmin, Coros, Polar API (each user will need to go through each of the companies verification process themselves to get the keys) Still some work to do... This is awesome but would be way cooler if you showed a tiny 3d model of cyclist actually traveling the path in real time, with a timer and progress bar etc. People would LOVE to share these which is crucial to the growth of your site. Ah! I've been tinkering on a very similar project off and on for years now. This is so awesome to see— really nice work. I've just never had time to actually polish mine off. I think the backend for processing new activities is broken at the moment, but the old demo activities are still around. Ex: https://contour.run/home?activityId=36948814953 I've been using three.js and react-three-fiber for it. happy to swap notes! nice work :) The 3D terrain stuff in FATMAP was great. I don't get why Strava killed it. It's hard to overstate how passionate people were about FATMAP and how crushed they were when it was killed. Putting revenue aside, Strava should have found a way to keep it alive to maintain goodwill. I have never missed an app or service like I miss FATMAP. I still search in vain for a half decent replacement every time I go into the mountains and nothing yet comes close. I’d have paid quite a lot more than they were charging to keep it. What did you mainly use Fatmap for? Planning, navigating during the trip or viewing after the trip? Planning and navigating, the key features for me were: - high res satellite imagery available for both summer and winter - aspect and gradient shading - routes and tracks shared and discoverable with description, altitude graph etc. for freeride routes, ski tours, hikes (great for visiting somewhere new) I also enjoyed things like sharing the link to the 3D overview with friends after an epic day, but that’s both more easily replaced and less valuable to me. I’m muddling through with a whole host of apps (Maps3D, Outmap, CalTopo etc.) and have tried and given up on still more, but FATMAP was so much better than any current alternative, particularly for skiing. (Mostly in Europe, if that makes a difference.) I'm working on https://github.com/styluslabs/maps - has Sentinel-2 imagery, slope angle shading and custom slope shading including slope aspect. Wasn't there some kind of plan to integrate it in Strava? No announcement has ever been made about the integration of FATMAP into Strava. The only announcement was that FATMAP would be discontinued. Strava has been stagnating for several years now in terms of functionality. The last two evolutions I remember are the introduction of the dark theme, which has been requested for years, and the AI coaching tips, which are unbelievably bad. Personally, I'd like to see more competition in the field of sports apps. It's becoming increasingly difficult to find interesting activities in the Strava feed. There is little or no possibility of editorialization (highlighting certain contents, collections, etc.). It's very difficult to find a friend's activity if it's more than a week old. Would you like to know if anyone has made it over the pass at this time of year? Fuck you, here are some Zwift activities. > No announcement has ever been made about the integration of FATMAP into Strava. The only announcement was that FATMAP would be discontinued. This isn’t true at all. The original posts on their own sites are no longer up (though they are likely on archive.org), but you can see from the articles that followed the press release that they were quite explicit about this. For example on TechCrunch[0]: > The ultimate long-term goal for Strava is to integrate Fatmap’s core platform into Strava itself, but that will be a resource-intensive endeavor that won’t happen overnight. And that is why Strava is working to create a single sign-on (SSO) integration in the near-term, meaning that subscribers will be able to access the full Fatmap feature-set by logging into the Fatmap app with their Strava credentials. > While Strava and Fatmap will remain separate products for now, Strava said that it will decide in the future whether Fatmap will live on as a standalone product once the technical integration has taken place. > CEO and co-founder Michael Horvath, who stepped down in 2013 before returning as head honcho six years later, said that the Fatmap acquisition is part of Strava’s “ongoing investment to provide a best-in-class digital experience” for those seeking an active lifestyle.
“Where other map platforms have been designed for navigating streets and cities, Fatmap built a map designed specifically to help people explore the outdoors,” Horvath told TechCrunch in a Q&A. “We will enable Fatmap technology in all of Strava’s services, empowering anyone to discover and plan an outdoor experience with curated local guides, points of interest and safety information.” > In terms of timescales, Strava said that it has set up a dedicated team tasked with integrating Fatmap, and it anticipates this to start showing up inside Strava from around mid-2023. The company was also quick to stress that Fatmap’s tech will be available to both free and paid-for Strava members, though certain features relating to maps, discovery and route-planning will be reserved for paying subscribers. > Strava provided TechCrunch with the following mockup images to give an idea of what Fatmap might look like inside a future incarnation of Strava. [0] https://techcrunch.com/2023/01/24/strava-acquires-fatmap-a-3... They have withdrawn this announcement. The only remaining mentions are on the page announcing the closure and the transfer of payments to Strava: https://support.strava.com/hc/en-us/articles/26949702911117-... They haven't withdrawn everything. I've only just noticed this, but the Strava help centre still states that "FATMAP's 3D maps and other features will be built into Strava to create the world’s best platform for planning, navigating, and sharing outdoor adventures"[0]. There's also a recent comment on an Instagram post[1] about a supposedly recent response from Strava the commenter received that, if accurate, provides some hope. It'll be interesting to see if anything comes of it, but at this point I also rather hope that something more open, hackable, etc. rises from the ashes of FATMAP. [0] https://support.strava.com/hc/en-us/articles/26949702911117-... Very cool! I enjoyed watching my mountain hikes like this in the 30-day free Premium preview on Strava, but no way in hell am I paying $12 a month for a novelty feature. What is it worth to you? It's fine to say 0 if you just enjoy the feature for free, maybe with some functionality tradeoffs... Something like $2-3 a month would be worth the premium features to me personally. It would be cool if you could manually add landmarks to the maps. For example, the names of peaks, towns, bodies of water, etc. It would be amazing if this could be pulled in automatically, but I don't know if there's a good public source of landmark data. It would also be cool if you could automatically link your media to the GPS track, like photos and journal entries. They could be assigned to the correct spot in the track via their timestamp or geolocation data. Regarding your first point: this is already implemented! In the 3D view you see these little markers on the model with text displaying OSM features "peaks" and "saddles" Second point: I'm a bit hesitant to store media on the server or on a cloud service, this seems rather costly as this is a free service. But I don't have much experience with this, maybe someone has a good idea on how to manage it? Any plan to increase the dimensions the 3d map can be generated for? This would be fun for motorcycle ADV trips but we tend to exceed the 100km squared limit. The limit was set in place to prevent the browser from crashing in low-end devices, as the full model is loaded and displayed as a single entity in full detail (in contrast Google Earth etc. uses multiple level of details, depending on the viewing distance). Server side there's no problem to increase the model size, maybe I can add this as an option. Great visuals! I loved to use fatmap to look at ski resorts and mountains in 3d to identify slope/terrain etc. Having ski resorts as 3d models I can check out would be an awesome use case! This is really cool. I dont like the fire effect on the 3d view though. Is it too nervous? What would you suggest? I agree it was a little distracting. Maybe a small, highlighted circle on the spot in the track that your mouse falls over?
edit: I like how you highlight the current spot in replay mode. For anyone Javascript-savvy, you can take a shot at https://github.com/r-follador/CubeTrek_Babylon and experiment with different ways to highlight the current see spot. Any help is appreciated! This is really cool. I've been hacking around with Babylon lately and it's been a great pleasure. Perhaps you can take a look at https://github.com/r-follador/CubeTrek_Babylon I could use some help there... Would love to see a casual game (on Switch) where I could upload ski runs and "ski" them... Thank you thank you thank you! I have as part of my mega-project, an attempt at making a to scale earth (I am using main branch, compiled daily Godot), but many of the datasets for elevation and sat photos I have looked at are gpl incompatible datasets. I'm not sure how I missed the NASA SRTM datasets, but they are public domain and thus gpl compat! This is great news and I appreciate this very much! (your product is cool too!) Now, turning the HGT data into an actual mesh is going to be the challenge, but it seems doable! Mapping elevation data to a sphere is sure to teach me some things... Take a look at https://github.com/r-follador/TopoLibrary I will need to document the code more clearly and extensively, but on the Readme there's an example on how to turn the HGT into a mesh (GLTF).
SteveVeilStream - a day ago
folli - a day ago
SteveVeilStream - a day ago
Modified3019 - a day ago
folli - 2 days ago
esperent - 18 hours ago
folli - 8 hours ago
nox101 - a day ago
folli - a day ago
kbrackbill - a day ago
folli - a day ago
kbrackbill - a day ago
btbuildem - a day ago
Carrok - a day ago
folli - a day ago
55555 - 16 hours ago
izzymiller - a day ago
Stevvo - a day ago
SteveVeilStream - a day ago
barnabee - a day ago
folli - a day ago
barnabee - a day ago
pbsurf - 13 hours ago
folli - a day ago
Beretta_Vexee - a day ago
barnabee - a day ago
Beretta_Vexee - a day ago
barnabee - a day ago
somedude895 - a day ago
_blk - 21 hours ago
somedude895 - 20 hours ago
babs42 - a day ago
folli - a day ago
mtreis86 - a day ago
folli - a day ago
soared - a day ago
lispisok - a day ago
folli - a day ago
babs42 - a day ago
folli - a day ago
briankelly - a day ago
folli - a day ago
__mharrison__ - a day ago
arminiusreturns - a day ago
folli - a day ago