ConjureSDF - smooth, non destructive booleans

Conjure is currently in closed pre-alpha. Public alpha is planned for early 2024.

What is ConjureSDF?

Conjure is a Signed Distance Field editor for Blender. Instead of triangles, it uses Signed Distance Functions of primitive shapes together with Boolean operations to create complex objects. It is essentially Blender’s native Metaballs, but on steroids. By raymarching this mathematical representation, a watertight flawless object can be rendered.

Currently conversion to mesh is not yet supported, but is actively being worked on.

Today marks exactly 6 months since I started working on ConjureSDF :raised_hands: With a few more months needed until it is complete enough for a public release. In the meantime I hope you enjoy the updates posted to this thread :pray:

Features

  • custom rendering engine, raymarching SDFs directly
  • fully non-destructive workflow
  • 12 primitives (with many more on the way)
  • 4 boolean operations (union, difference, intersection, inset) and 4 blending types (none, smooth, chamfered, inverted round)
  • single list of primitives, with reordering (nesting and multiple roots are planned)

Some other work made with Conjure so far


by Nighthawk - https://twitter.com/NightHawk664


by Para - https://twitter.com/parawerke


by me, João Desager

acknowledgements

59 Likes

To commemorate exactly 6 months of working on this massive project, I put together a little compilation of all the short videos I posted over the course of development. (and it also serves as a nice way of getting the BA people here up to speed)

Check it out!

16 Likes

Raising hand to be invited for next alpha :slight_smile:

1 Like

I’ve been following your work on Twitter for a while, and first off, this is a really interesting tool! Congratulations!
I was wondering if you plan to incorporate the use of mesh data from the primitives?

I imagine it might be possible to use vertex/edge bevel/crease data to modulate the blending strength. That said, this could be tricky, especially since it would require resampling the data into some spatial structure. However, even if it’s just a bounding box with 8 floats for the corners and interpolation using a customizable curve, the enhanced control over the shape would be worthwhile.

From the samples I’ve seen here and on Twitter, this appears to be one of the biggest limiting factors. It also contributes to the distinctive look that nearly all the outputs share.

But I don’t mean to be overly critical – it’s an awesome tool!

(Ps.: if there is another alpha, please sign me up!)

2 Likes

There’s a thread, huzzah. one less reason for me to need to stay on twitter

3 Likes

Thank you! Really appreciate the kind words :pray:

Indeed one of the biggest limitations of SDF modellers is limited control over the blending strength between primitives. It either blends everywhere or nowhere, etc.

However I have done some tests for “directional” blending, that uses the shape of the input primitives to guide the blending amount.
https://twitter.com/JohnKazArt/status/1684885580130426880

It’s certainly something I want to work on but not right now, as it’s not as simple as it seems :sweat_smile:
I’m focusing mainly on conversion to mesh right now :pray:

8 Likes

Worked on a little test asset to check for bugs/other issues on the newest pre-alpha. Some kind of electronic warfare tank turret (I didn’t think too much about it) Done in 2-3 hours :ok_hand:
Should be going out to the current testers soon :raised_hands:

Improvements include:
-primitives can ignore the world mirroring
-multiple primitives can be moved up/down the stack
-move prims to top/bottom of stack

15 Likes

This is amazing! I’m very hyped!

2 Likes

Being able to produce boolean operations where the objects become smoothly fused to each other: A crucial need in 3D modelling!

Waiting to try it!

2 Likes

I really wish this would work in Blender macOS too. It would ease my decision to return to Mac, as there’s virtually no SDF tool for macOS yet, as far as I know, not in or outside of Blender.

There’s Unbound (in closed beta at the moment), but that will be a game engine featuring SDF modeling, but isn’t dedicated to sculpting and rendering.

Considering Blender macOS support will probably get you a nice ConjureSDF sales boost.

2 Likes

As much as I wish I could support macOS. It’s really sad that they no longer support openGL in favor of their own Metal API. :neutral_face:
Based on these numbers, I personally don’t see it affecting sales that much though. (a lot can change in 3 years however, I wish there was more recent data on windows/linux/macOS userbase distribution)

While I do plan to move the rendering engine to a separate cpp/openGL system, or even eventually to Vulkan (which should work on macOS/metal via moltenVK) It is just not a priority for any time soon. And regardless macOS support is simply not a major factor in moving away from python and bgl/openGL.

The move to cpp is >6 months away. And Vulkan is easily 1-2 years away, if ever. As a busy sole delevoper I have time constraints and priorities I must consider. It is sad to say but macOS support is unlikely to happen any time soon :face_with_diagonal_mouth:

With sufficient funding I could employ other people, etc. true. But I want to work on Conjure, not manage it. My only focus right now is conversion to mesh and other core features.

3 Likes

I believe this might be the kind of revolution that modeling needs. Some people turn towards tools like MOI or Fusion360 to avoid having to care about topology or properly working booleans but that always felt like another huge workaround to me…

2 Likes

Fair enough, thanks for the elucidation. And good luck finishing ConjureSDF!

2 Likes

Seem those numbers are from 2020.

In the annual report 2022, you have a more recent figure.

Cheers !

2 Likes

I am curious - are you using the bgl module for ConjureSDF? I thought its going away soon? I am still learning the blender api - and using the gpu module for my current project - havent even looked at bgl as it has warnings all over the api doc - so i figured gpu is the way to go…
If so, that is the reason for not having macOS support? As far as i understand it now, the gpu module would have no problem there, but i guess is lacks the features necessary?

Ah thank you Francis, I’ve been waiting for new data for ages :pray:

But as I suspected the macOS share of the userbase hasn’t changed much relatively speaking.
11% certainly isn’t nothing (especially when compared to Linux :sweat_smile:) But it doesn’t justify the time/effort it would take to support macOS right now. Perhaps after v1 launch.

2 Likes

Conjure is running on bgl for the time being. This does limit the Blender versions it can run on (4.0 and beyond is not supported) Which is why I want to move away from bgl in the near future of course.

Indeed for most applications (such as custom UI/gizmo drawing, etc.) the gpu module should be used and is more than sufficient. But with it being essentially an abstraction layer between python and openGL/Vulkan/Metal, you lose some control and performance. Which is not great for a realtime renderer. (But on the flip side, you can support macOS easily)

bgl’s docs were not perfect, and there aren’t too many complex examples out there for it. But this was still managable to work with, as it mirrors the cpp implementations of openGL rather closely.
The GPU module however? While not technically new, I think a lot of people are only now making the switch to it in their python addons.
This coupled with once again less than ideal documentation. Means I would rather not switch to it for a rendering engine :sweat_smile:

Switching to cpp/openGL (or Vulkan eventually) just gives a lot more low level access and freedom. Which is very welcome when writing your own rendering engine.
But this also means that it all takes a bit longer :sweat_smile: ‘If you want something done right, do it yourself’

4 Likes

Looks good. Nice work.

3 Likes

I’ve slowly been working on conversion to mesh. And finally had a big breakthrough today.
Marching Cubes algorithm implemented as a compute shader for the GPU via modernGL.
Churns through 2Mill voxels (128^3) in <5 seconds.

Will need a bit more time to fully integrate into Conjure, but we’re very close to a full asset pipeline.

11 Likes

have you also looked into surface nets?

This was always the solution that i felt was best in terms of complexity / quality tradeoff…

image

3 Likes