Voxel Node

T.D. Ritchey ([email protected])
Sat, 10 Jun 95 19:44 BST


I did not receive any response to the suggestion for the introduction of a
new Voxel node which either means a) it was amenable to everyone, and I
should continue to develop a spec for it; or b) it was so ridiculous
everyone felt it beneath themselves to slam it. In any case, I have
continued to do a little more digging on it, and would like some info from
the members of the list.

I am basing the voxel node on two standards. First, are the AVS standards
for inputting voxel data, and the second is octree encoding. I have
mentioned the second because I feel that it will make such a node fit in
with the other threads on this list stressing the importance of bandwidth.
While I don't think that the Voxel node is something which will be used in
many pages, so it won't fall under the idea of 3D to the masses, by using
octree encoding, I believe we will gain appreciable compression over just
depending upon straight gzip'ing of the ascii file.

at present I am envisioning the node to appear something like this:

FIELDTYPE
UNIFORM The data is a uniformly spaced, orthogonal set
RECTILINEAR The data is an orthogonal, but not necessarily
equally spaced set
IRREGULAR Each element in the data set has its own coordinates

FILE FORMATS/DEFAULTS
VoxelSet {
fieldtype UNIFORM #SFEnum
dimensions 0 #SFLong
arrayLimits 0 #SFLong
vectorLength 0 #SFLong

# optional
minimumExtents 0 #SFFloat
maximumExtents 0 #SFFloat
minimumData 0 #SFFloat
maximumData 0 #SFFloat
# end optional

# for RECTILINEAR
coordinates 0 #SFFloat
# end RECTILINEAR

data 0 #SFFloat
}

"dimentions" is an SFLong field which represents the number of
dimentions of the data. "arrayLimits" is an SFLong field which holds the
array limits for the data (this field is optional with the IRREGULAR
fieldtype). For example arrayLimits [ 25, 25, 25 ] would represent a 25 x
25 x 25 voxel cube with the axis being X,Y,Z respectively. "vectorLength"
represents the number of values at each point in the field. a '1' would
represent a scalar value at each data point. Values greater than '1' could
represent a velocity vector, or temp-pressure-humidity measurements. X,Y,Z
order is implied for the dimentions = 1,2,3 respectively.

The optional values could be included in order to give the browser
hints for bounding etc. The "coordinates" gives the
computational-to-physical transform for the rectilinear data sets. The
"data" field hold the SFFloat values for the voxels. In UNIFORM and
RECTILINEAR fields, the data is coordinate-less, presented in order from X
to Z. ie: (1,1,1), (2,1,1), ..., (n,1,1), (1,2,1), ..., (n,m,1), (1,1,2),
..., (n,m,p). In IRREGULAR, each data point is presented with its
coordinates. ie: [1, 1, 1, 1.23, ...] for a voxel value of 1.23 at x=1 y=1
z=1.

I hope this gives you some idea of where I am going with this. I would
appreciate any comments. I have not included anything about an OCTREE
fieldtype until I have some feedback on these basic types.

Cheers,
tim

---------------------------------------------
Timothy Ritchey [email protected]
Jesus College tel: (01)223 576-822
Cambridge fax: (01)223 576-822
CB5 8BL
England