As I understand the usual practice is to obtain the SDF by the means of a KD-tree. But the KD-tree generation and the lookup (for each ray step) are, well, slow, while the octree can be easily modified without regenerating it. Maybe there is some way to build such KD-tree on fly, without sorting, since the octree already has everything pre-sorted in a well defined way? With a plain non-octree grid one can precalc the SDF into empty spaces, but in octree the empty space is compressed. I've considered adding SDF to the empty octant corners and then interpolating along them, but I'm unsure how it will work with the dynamic modification. Do I have to recalc the empty space SDFs on each modded voxel? Now what about SDF of the space outside of the octree grid? How does one extrapolate it? Maybe one can delay SDF generation until the moment ray actually enters the field?

Context: I'm looking towards SDF since it apparently allows soft body animation for voxel models (I want to design a purely voxel based video game engine), or at least help removing voxel slab connection seams. Maybe I'm looking in the wrong place or from the wrong angle? I have previously considered using tensors to deform the path ray travels and using the usual raytracing instead of raymarching, but how would one combine the tensor space with the octree raytracing? That would still require something like a KD-tree to do the tensor lookup at the octree nodes. And I doubt one can interpolate tensors linearly in a non-linear space.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.