sdf-explorer
sdf-explorer copied to clipboard
How does the grid sampler determine the grid boundary?
Hi, thanks to the contributors of this project. Is there a way to determine the minimum and maximum x,y,z coordinates from the .glsl files in the data-files/sdf directory? I would like to build a custom adaptive grid sampler but there doesn't seem to be a way to determine the boundary of such a grid.
It seems like the boundary is determined by the sampler logic mapping some openGL UV space to the object XYZ space. If the contributors can offer some comments/explanations on this mapping, it would make it a lot easier to develop extensions!
Hi,
What do you mean exactly by a minimum and maximum XYZ coordinates? In general the SDFs should reside mostly in normalized [-1, 1]
space.
Thanks for the response @tovacinni ! That's what I assumed first, but I tried one of the examples and it seems like it was sampling outside the [-1, 1]^3 space.
Example: ` import sdfdes viewer_path = '/sdf-explorer/build' sample_path = '/sdf-explorer/samples'
sdf = "Torus" N = 257 pattern = "grid"
bin_path = os.path.join(sample_path, f"grid/{sdf}.bin") sample_cmd = f"./sdf-explorer --sample {N**3} {pattern} {sdf} {sample_path}" proc = sp.check_output(sample_cmd.split(), shell=False, cwd=viewer_path)
pos, dist, normal = sdfdes.deserialize(bin_path)
print(torch.max(pos[:, 0])) `
This will output 7.22, which is outside [-1, 1]
Hi,
Thanks for looking into this. At first glance this seems like a bug... I'll try to look into this.
I think ideally we should actually be generating these things in morton order.
Best, Towaki