Jump to content

rebuild SDF

Recommended Posts


i wonder about rebuild SDF theory

i little know that about rebuild SDF is reinitialize SDF when keep the iso contour value is 0

but i don't know mean that iso contour and rebuild SDF theory

here is Master Class that explain to Gas Reinitialize SDF DOP


i trying to know about rebuild SDF theory by reference Master Class

but i still don't got it

somebody have good infomation about rebuild SDF theory?

i tired to looking for rebuild SDF theory info

if you have then i'll say you

very very very thanks you

Edited by sonppw
Link to comment
Share on other sites

I'm by no means an expert but here's my rough understanding and others can jump in to correct me. In very simply Houdini terms, an SDF, (aka Signed Distance Field) is a 3D voxel array where each voxel's value is the distance to the surface. So let's take a very simple example:

- Create a default Box SOP

- Append an IsoOffset and set its Output Type to SDF Volume

- Append a Volume Slice to visualize just a slice of the created SDF volume

- Set the display (blue) flag on the Volume Slice, and the template (pink) flag on the Box.


Now look in the geometry spreadsheet for the Volume Slice.. Notice that the density attribute values are nearly 0 at the border to the box, negative inside, and positive outside. Those density values give you an idea of how far that voxel is away from the surface of the box that you created an SDF for. To be precise, the surface is located at where two adjacent voxels cross the 0 boundary ie. it's negative in one voxel, and positive in the neighbouring voxel.


Ok, now imagine you did something to it, like add random noise values to it. Then the voxels where the surface occurs in (ie. where the density values are 0) has shifted randomly. But because we added random values, the voxel values away from 0 no longer represent the distance to the surface, ie. how far that voxel is away from the closest boundary voxels. If we now pick a voxel at random, the density value for it no longer represents how far it is from the boundary surface. So to get a reinitialize the SDF, you need to take where those boundary voxels are currently and then recompute the surrounding voxels so that they represent how far they are to the surface again.


There are different algorithms for how to rebuild an SDF, depending on whether you need to recompute the values for ALL the voxels in the volume, or just a radius of voxels around the new boundaries. In the simplest algorithm, you can just convert to polygons, which only looks at the voxels that go from negative to positive. So now if you convert the polygons back to an SDF, now you have proper distance values for all the voxels again. Of course, you don't really need to do this in Houdini explicitly since there are nodes that will rebuild an SDF for you already.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...