...
unsigned char *voxel;
unsigned char *color_table;
float *alpha_table;
int x_dim, y_dim, z_dim;
voxel = read_seismic("../Data/data0.vol", &x_dim, &y_dim, &z_dim);
/* alpha and color tables */
alpha_table = (float *)malloc(256 * sizeof(float));
*color_table = (unsigned char *)malloc(256 * 3 * sizeof(unsigned char));
for (i = 0; i < 256; i++) {
color_table[i*3] = i
color_table[i*3+1] = i;
color_table[i*3+2] = i;
alpha_table[i] = (float)i/255.0;
}
/* Create a volume object */
volume = XintView3DCreateVolume("volumeObject",
XintVF_I,
XintVD_UCHAR,
XintVAM_COLOR_TABLE,
alpha_table,
256,
XintVCM_COLOR_TABLE,
color_table,
256*3,
0,
255,
0.0,
1.0,
x_dim,
y_dim,
z_dim,
(unsigned char *)voxel,
XintVRM_3D_TEXTURE,
NULL);
XintView3DSetColor4ByName(view3d, "Green", color.single);
material = XintView3DCreateMaterial(NULL, XintMATERIAL_SINGLE_COLOR,
&color, 0, NULL);
XintView3DAddObjectAndMaterial(view3d, volume, material, NULL);
The output of example volume_demo.c is shown below.
Figure 18: Volume example