aeva,
@aeva@mastodon.gamedev.place avatar

I've worked up quite a hunger by staying in bed all day and thinking too hard about geometry 😌

aeva,
@aeva@mastodon.gamedev.place avatar

In the last few days I finally fixed high-dpi support in 🍊 and added proper support for MSAA. Now everything looks super crisp and smooth and you can see how dogshit the current meshing system is in full 4k glory... so, I'm pondering what to replace that with.

aeva,
@aeva@mastodon.gamedev.place avatar

Great news everybody! I've decided on a promising bvh-ish data structure which I think is most logically called a "ball tree". If this is able to produce the cluster building behavior I want, then a concurrent version will eventually be needed, which would most naturally be called a "concurrent ball tree", which should not be confused with the "concurrent binary tree" and other forms of CBT.

aeva,
@aeva@mastodon.gamedev.place avatar

"ball space partition tree" might be more accurate come to think of it

demofox,
@demofox@mastodon.gamedev.place avatar

@aeva I'm looking forward to a write up if you are planning one!

aeva,
@aeva@mastodon.gamedev.place avatar

@demofox noted! my theory is you can force FCC/HCP lattices to nest by committing to each ball in the smaller ball lattice corresponding to exactly one ball in the larger ball lattice. The goal is to build a set of convex hulls by finding neighbors that produce zero crossings along their connecting edges, and turn those hulls into triangle patches by ignoring all faces with any interior vertices and shrinkwrapping the rest to the isosurface.

aeva,
@aeva@mastodon.gamedev.place avatar

@demofox the ball hierarchy is meant to be a more efficient divide and conquer strat than voxels in terms of sdf evaluations, and then if that actually works the way I want it to I have a hunch that stitching together cluster patches at different recursion depths might be doable.

aeva,
@aeva@mastodon.gamedev.place avatar

@demofox I keep coming back to this idea so I figure worst case of prototyping it is I finally put a bad idea to rest and free up some brain space lol.

Or maybe the worst case is it works wonderfully and then my head is filled with all of the related ideas like "what if this but with a blue noise distribution"

aeva,
@aeva@mastodon.gamedev.place avatar

@demofox the better version is probably start with a set of surface "hints" (it's CSG - I know where all the shapes are more or less) and then do sort of a fill search to find all of the starting cells, and recurse to produce finer clusters.

demofox,
@demofox@mastodon.gamedev.place avatar

@aeva that's a neat idea. A spherical primitive seems to make a lot of sense for an SDF.

aeva,
@aeva@mastodon.gamedev.place avatar
aeva,
@aeva@mastodon.gamedev.place avatar

Here's another view with the parameters tweaked a little bit and a slightly denser sphere packing.

This is really promising! The lua prototype is able to produce all of the convex hulls fast, and then my current "surface nets" implementation takes forever to mesh it. Cropped balls get a pretty good likeness even though the prototype doesn't handle all of the cases correctly :O

aeva,
@aeva@mastodon.gamedev.place avatar

I worked out some bugs in the math, and have it handling handling one of the corner cases correctly now. There's some missing convex hulls and some convex hulls that are only partially cropped, but those are just some edge cases that should be straight forward to handle.

I'm really pleased with how this is turning out! This is doing a nice job with hard edges, round convex features, concave features, pointy bits, and so on. And it does this without needing to first generate a very dense mesh

another rendering of the bisected cone thing with the surface normals visualized.
a rendering of the prototype this time with my "hand soup" model

dbat,
@dbat@mastodon.gamedev.place avatar

@aeva It looks kind of cellvox!

aeva,
@aeva@mastodon.gamedev.place avatar

@dbat ?

dbat,
@dbat@mastodon.gamedev.place avatar

@aeva I mean it as a play on words: Voxel vs Cellvox. It has a kind of chunky but organic look.

Cool tech. Wish I understood what you are doing a bit better.

🏆

aeva,
@aeva@mastodon.gamedev.place avatar

@dbat ah, thanks :)

aeva,
@aeva@mastodon.gamedev.place avatar

Also it seems to be pretty quick so far? I think I could get a pretty good likeness out of this with a fairly coarse sampling grid, and then gradually refine it via a cluster hierarchy thing

lritter,
@lritter@mastodon.gamedev.place avatar

@aeva balls

aeva,
@aeva@mastodon.gamedev.place avatar

@lritter balls :3

aeva,
@aeva@mastodon.gamedev.place avatar

@lritter what do you think

lritter,
@lritter@mastodon.gamedev.place avatar

@aeva to me it just looks like a complication with no real benefit over dual marching cubes + QEF. the real issue is undersampling, no lattice based solution can fix that. but that's just my inner perfectionist talking. if you dig the style, go for it :)

efi,
@efi@chitter.xyz avatar

@aeva I have no idea how this works and only a vague intuition of why it's better than cubes, but it looks amazing
maybe you could have a second layer of smaller balls to fill up the space the big ones can't?

aeva,
@aeva@mastodon.gamedev.place avatar

@efi that's the plan

efi,
@efi@chitter.xyz avatar

@aeva wait, how do you have corner cases if it's all balls? :thonking:

aeva,
@aeva@mastodon.gamedev.place avatar

@efi balls have many corners

krisso,
@krisso@mastodon.gamedev.place avatar

@aeva omg you never sleep 😅

aeva,
@aeva@mastodon.gamedev.place avatar

@krisso what is "sleep"

rygorous,
@rygorous@mastodon.gamedev.place avatar

@aeva sounds like you reinvented Vantage Point Trees

aeva,
@aeva@mastodon.gamedev.place avatar

@rygorous tell me more

rygorous,
@rygorous@mastodon.gamedev.place avatar

@aeva VP trees = binary tree where at each level, you partition the universe into d(x,P) <= T and d(x,P) > T for some distance metric d and some point P and threshold T stored on the node

topher_batty,
@topher_batty@mastodon.acm.org avatar

@aeva i think sphere trees are a classical bounding hierarchy approach, see e.g. http://graphics.cs.cmu.edu/projects/bdtree/jamespai_bdtree04.pdf and references therein.

aeva,
@aeva@mastodon.gamedev.place avatar
mcc,
@mcc@mastodon.social avatar

@aeva To avoid acronym namespace collisions, I recommend instead naming it a Ball Branching Lattice.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • osvaldo12
  • DreamBathrooms
  • ngwrru68w68
  • Durango
  • mdbf
  • magazineikmin
  • everett
  • thenastyranch
  • rosin
  • Youngstown
  • slotface
  • khanakhh
  • kavyap
  • tacticalgear
  • JUstTest
  • ethstaker
  • cubers
  • modclub
  • tester
  • InstantRegret
  • GTA5RPClips
  • cisconetworking
  • anitta
  • provamag3
  • Leos
  • normalnudes
  • megavids
  • lostlight
  • All magazines