nosfero32

3 replies · posted

Regarding Nodevember livestream with simon thommes, ray marching procedural material

Hey everyone, I have been trying to recreate the ray marching method from near the end of the nodevember live stream https://www.youtube.com/watch?v=3UWHKtKsIbU .

Does anyone know how the SDF nodes are implemented? 

  • Hi nosfero32,

    know what you're getting yourself into!

    Here's a simple example of an SDF of a line segment:

    With Raymarching  this could give for instance this (here the Raymarching stops at a certain, constant distance from the line):


    You might wanna watch this video (to start with):

    https://www.youtube.com/watch?time_continue=4&v=62-pRVZuS5c&feature=emb_logo

    I haven't found any Blender Raymarching videos, but the technique is used 'a lot' in games. If you Google SDF and Raymarching you'll find a ton of resources, but you'll have to 'translate' them to Blender.

    It's not an easy topic! Have fun and good luck.

  • Thank you so much for this Spikeyxxx. I really appreciate the information, this is exactly what I was looking for to get started. Looks like I will need to build up a library of primitive SDF shapes which can be used along with union and intersection operations to create more complex shapes. Wish I could remember more vector calculus, all that parametric surface and vector math would be useful but its been awhile. 

    I found the following resources so far https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm 

    https://www.alanzucconi.com/2016/07/01/signed-distance-functions/ 

    If you have any more examples or particularly good resources I would really appreciate that as well!

    It looks like this could get pretty computationally intensive, are there any tricks for improving efficiency I should be aware of?

    Thanks again Spikeyxxx.

  • Hi nosferu, Inigo Quilez is indeed a great resource. (The best I could find, but I'm sure there are more out there...)

    I'm not sure about this being computationally intensive; it's mostly just Math Nodes, which computers can handle in sleep;)

    If you can get boolean operations to work, together with the primitives, you can basically build anything. I'm still working on that;)