Ok I am working on rendering a 3d image and my dataset is in tesseral form.

the idea is a cube with voxels addressed from 0000000 to 7777777 now the dataset is the addresses inbetween these that must be shown in the 3d structure

so i have a list

0002365

0002366

etc

I have got the addresses put them into an array but now am stuck

anyone have any idea how to take these addresses and put them into use by rendering them as coordinates in the cube.

The idea being that i can use an octree method to load only voxels which are rendered by this dataset otherwise the datastructure would take up way too much memory.

any ideas anyone?

Well, 0000000 is going to be your 0,0,0 or most negative coordinate, and 7777777 will be the most positive.

Since tesseral addresses (according to the first site I found on google) are uniformly organised, meaning that xyz is always positioned at the same relative location in cell xy, this means that you can simply one of eight arbitrary vectors to the postion of the centre of the parent cell.

So, you have eight three dimensional displacement vectors, indexed by the number that you’re adding to the tesseral address, and you do a vector add of this to the postion of the centre of the parent cell.

You also have a scale, which decreases by half as you add numbers to the address.

Say the centre of the root cell is (0,0,0), and we make our displacement vectors the 8 combinations of ( ±0.5, ±0.5, ±0.5), and start with a scale of 1.0

Lets assign vector 0.5,0.5,0.5 to subcell 0, and vector -0.5,-0.5,-0.5 to subcell 1

Then cell 0 becomes

0.0 + (0.5*1.0)
Cell 00 becomes
0.0 + (0.5*1.0) + (0.5

*0.5)*

Cell 000 becomes

0.0 +(0.51.0) + (0.5

Cell 000 becomes

0.0 +(0.5

*0.5) + (0.5*0.25)

Cell 001 becomes

0.0 +(0.5

*1.0) + (0.5*0.5) + (-0.5*0.25)

And you do this for each of the x,y, and z coordinates.

This gives you 3D coordinates for each voxel, which you can then render as points, cubes, a polygonal surface, whatever…

Hope the explanation above is clear enough…

CJ