Compute Voxel Accesibility

Hello, I’m implementing this algorithm in my project and I am very confused with the maths. I was wondering if this is the best way to get the voxel accessibility values or if anyone could be nice to clarify how to do this in C#.

Thank you

Best,

Daniel

Reference:
Song, P., Fu, C., Cohen-Or, D. 2012. Recursive Interlocking Puzzles. ACM Trans. Graph. 31 6, Article 128
(November 2012), 10 pages. DOI = 10.1145/2366145.2366147
http://doi.acm.org/10.1145/2366145.2366147.

What part are you having trouble with? It looks pretty straightforward to convert that equation into code.

The accessibility of a voxel is written as a(x), where x is the voxel you’re getting the accessibility of, and j is the iteration. In the first iteration, where j is equal to zero, the value of a<0>(x) is simply the number of neighbors that voxel has. So if this voxel is at (3, 5, 7) (as in x = 3, y = 5, and z = 7) in space, you would just check how many voxels exist in the surrounding spaces. (So that’d be (2, 4, 6), (2, 4, 7), (2, 4, 8), (2, 5, 6), etc.). In the next iteration, you can use the data from the first iteration to get a more nuanced understanding of accessibility. In this iteration, j = 1, you calculate a<1>(x) by adding a<0>(x) to a new value A. A is calculated by adding up all the a<0> values of all of x’s neighbors (or in other words, how many neighbors each of your neighbors has), and then multiplying that total by w^j, where “w” is some weight value used to keep your numbers from getting bigger each iteration. They used 0.1 for w, so you multiply the sum of all neighbors a<0>'s by 0.1 to get A. You can do this again, where j = 2, and now you’re adding a<1>(x) to each neighbor’s a<1> multiplied by a^2, or 0.01. You can do this as many times as you like, but they say doing it more than 3 didn’t seem necessary.

1 Like

Thank you, I will try this, I haven’t figured it out since, it is my first time coding but this is helpful.