hornswoggled!
experimenting with using splines to draw roads onto height maps
I figured out how to make non-uniform grids with geometry nodes 💀
I like this Zachtronics game
This looks better than expected with an arbitrary height map applied. I don't strictly speaking need to fix the tearing for what I'm doing, but I might try and patch it up later so my in progress screenshots look nicer >_>

my feature wishlist for #blender #geometrynodes

- selective subdivision (either a face selection field input or making the level input a field)

- collapse edges / faces / vertices operator

- python nodes

played around a bit more with my "drawing roads on terrain" prototype today. this is starting to get a little closer to what I want
I revisited the non-uniform grid geometry nodes thing tonight and figured out a terrible hack to stitch the edges. I think I'm starting to get the hang of this.
Side note, I like how all my node graphs end up looking vaguely like deep sea creatures.
I came up with a cool way of generating terrain from a few splines tonight. Might run with this. Just draw some feature lines and boom there's a mountain or a ravine or something.
Here's another one. This took like no time at all to draw out. I feel like I'm on to something.
I've decided there's one obvious correct name for this technique and it is Spline Distance Field :3
I made a little visualizer material for my Spline Distance Field thingy.
🌲
What is really great about this system is you can just mash stuff together and it mostly just works. Here's the same hill as before, but twice. I'm planning on using this to construct coherent landscapes out of irregular tiles and no grid :3

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.

I... may have upended the production schedule of a game friends are working on by sharing this tool with the artist 😶

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.

Might have to settle for blurring the height around those edge crossings instead.
still, the technique is pretty powerful even without the higher order curves, and I'm sure someone smart on here might spot a better way to blend between spline patches 🤷‍♀️ I'll probably write something up on my blog in the next few days time permitting.
I'm really quite amazed at how fast the geometry nodes blur intrinsic is, but I'm starting to think the perf measurement for it is just broken.
🤔
happy accident: transforming arbitrary meshes with the spline field
Experimenting with visualizing the extruded spline tangents cropped by the spline distance field volumes. This is meant to demonstrate what is being interpolated to produce the height field, though this doesn't show the part where splines are projected past their endpoints.
Today an artist friend used this technique to completely redo all of the terrain in the vertical slice level for the game she's working on. Judging by timestamps, it took her about an hour to complete after a false start. I'm not posting the screenshots because they're confidential but holy smokes it is awesome :O
what really gives me life today is she wants to push it even further <3
I've been pondering how to adapt this technique into a more general purpose modeling technique, and heh it's funny how problems are trivial when they're discrete, bounded, and 2D, but get a bit harder when they're continuous, unbounded, and 3D
oh great, the piecewise solution is a 3D voronoi diagram. of course it is 😔
I've got a distance field approximation now. Here's something I hacked together with geonodes that runs like a siggraph demo you got too excited about. I haven't implemented blending between adjacent fields yet, but I'm feeling optimistic that I'll be able to get something workable together for real time raytracing later.
getting closer...
The magic here is I spawn one of these for each point on the spline, aligned to that spline point's tangent plane and scaled to that spline point's radius. Then I deform each point toward the tangent plane of whichever spline field it happens to actually be in and bob's your uncle. Its got some quirks but it works surprisingly well.
nailed it :3

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

Attempting to make a car with the 3D spline modeling technique. So far so good!
blocking out the roof and back window

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.

I think what I actually want is to make the feature outlines with splines (eg, the windows, the different parts of the car body, the bumper, etc) and then use those to guide the placement of control points that can then be used to further adjust the shape of the local surface, as well as to paint materials. The spline outlines would then also serve as cropping features for the control points / surfels so materials can have hard edges etc.

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.

The cropped surfels thing is nice because I wont have to commit to any particular artistic work flow in Blender, and should I need some kind of acceleration structure I think the surfels could be made hierarchical be generating sets of them at different frequencies and saving out which ones overlap with which.
I think the goal I should try to work on next is just putting together a simple scene like a road with a guard rail and some cones pretending to be trees and see if I can export that into something I can render, and then figure out whether or not rendering that can be made fast.
@aeva if your renderer is based on sdf's why blender and not something based on b-splines like rhino?
@aeva if you're using blender it might be helpful to get whatever data it's passing to opensubdiv for the subsurf modifier instead of just exporting a mesh and trying to fit something to it
@bob that sound inconvenient and unpleasant :/
@bob this rhino thing looks to be proprietary? that is a nonstarter for my free time projects.