I think I figured out a way to do inexpensive higher order curves with this, which would mean the transitions between curves (and between between curves) can be interpolated better. This is the main barrier preventing technique being more generally useful imo.
I'll probably take a crack at implementing it in the next few days if I have any energy left between work and random appointments.
improvement idea didn't quite work out :/
The idea was that since I can determine which curve is closest to a given point on the terrain grid, I can use edge data to find the spots where abrupt changes might occur, and then can do a nearest crossing test relatively easily. This does accomplish what it is supposed to, but other artifacts show up around the perimeter of the map so it's not really worth it.
Btw here's a cool trick I figured out today:
Say you have a bunch of mesh patches that overlap but the vertices don't line up, and you wanna force them to anyway.
Use the "Distribute Points on Faces" node with the "Poisson Disc" mode and a minimum distance equal to the longest edge in your triangle soup.
Then in the triangle soup, snap each vertex to the closest point in the poisson disc point cloud, merge by distance, and bam! you got something that is very almost a delaunay triangulation :3
This is probably as far as I get tonight, unless I get an inexplicable second wind.
So far I think this technique is agreeable for me. I've been able to pick at it a bit on and off despite being sick and tired. This technique is a more fiddly than I want it to be, but that might in part be because I'm trying to make the model accurate to my references.
Unsurprisingly I have some ideas for how to improve this technique further.
As for what my game is to render exactly, I'm leaning towards representing stuff authored in Blender as cropped surfel clouds that can then be raytraced to produce more different surfels. Cropped surfels would be a set of pseudo discs that occasionally also have a cropping shape associated.
In that end, anything with a mesh representation can be efficiently prepared for my game via the distribute points of faces node.
I don't like how Blender does unit conversion.
If you set a unit system, and choose a non-meter base unit for distance, it converts everything to meters under the hood, with the unit scale being a scale factor on the conversion to meters.
Since the units presented in the UI are superficial, if you need to change the scale or the base unit everything in your scene changes along with it ;_;
I picked a mile diameter for the map cell arbitrarily, but this precision problem in Blender got me thinking about this more and...
huh, I guess the view distance to the horizon is about 3 miles if you're 6 feet tall, and is a few hundred meters less if you're 5 feet tall.
I got a bit carried away reading about classical units and what ancient people found to be useful units of measurement, and anyways it turns out the distance you can walk in an hour is in the same ball park as the distance you can see up to the horizon (for some excessively uniform and able bodied definition of "you")
What an interesting coincidence that these just happen to work out to be relatively whole numbers in both time and space.
Anyways here's a mile diameter of terrain in Blender :P
Pretend this is a 2 lane rural highway that suspiciously lacks its shoulders, clear zones, and normal markings in an improbably arid mountainous region of Wisconsin and not a narrow path through cookies and cream land.
I figure the exporter may as well build the acceleration structure for non-implicit models like landscape tiles for my game, so I'm experimenting with data structures for that now.
Here's a visualization of a hierarchical surfel graph for that landscape I posted a picture of the other day.
The visualizations are cool but this graph construction technique leaves something to be desired unfortunately.
My thinking was to poisson disc sample the terrain mesh at several intervals with the disc size decreasing each time. Each point becomes a surfel, and the nearest point in the previous generation is its parent.
The central light green patch shows that this technique can cause the coverage to meander quite a bit, and it gets worse the larger the root surfels are :(
