0

I am looking for recommendations for 3D rendering of voxel grids. Preferably I'm looking for information about software packages for high-quality, interactive visualization as well as information about how I can convert my data into the format(s) required by those packages.

My existing data format is just a column of voxel ids (positive integers) that could be converted into a unique color, plus header information describing the x,y,z dimensions of the grid.

I have done a fair amount of internet searching and have tried several things. Povray and Python can each render a very nice static image but I can't interact with it (rotate, zoom, clip, etc). Paraview can do volume rendering and it is interactive but the image quality (so far) is not as crisp as I would hope, in the sense that I would prefer to see each voxel as a crisp little cube, whereas Paraview so far makes everything look fuzzy and semi-transparent. Finally, I have had some success with Blender but it has been pretty time consuming and still not interactive.

I don't really mind commercial software if that will accomplish my goals better than any open source option. I'm also not a terribly bad programmer (C/C++ and Python mostly), so I don't mind having to develop a tool to convert my data to some other format if necessary. For example, I have in the distant past converted my data to VRML but it produced enormous files and I imagine there must be something better than that by now.

1 Answer 1

0

I'm not confident that I understand your question thoroughly, but you have enough keywords in the question to bring a possibility to the forefront.

OpenSCAD is a scripting language (of sorts) that would enable you to generate these cubes of any given size to any desired location in space. Using lists within the code, you'd be able to transfer your locations without having to key in each point.

In the preview portion of the program, colors are an available feature. In the render portion (prior to exporting to STL), the colors are ignored. If you require only the ability to manipulate the voxels, the program may assist you to accomplish your objective.

for (i = [0 : 2 : 20]){
    translate([i, i, 0])
    color(c = [i * 1 / 255, i * 10 / 255, i * 10 / 255])
    cube(1);
}

voxels in a loop

I'm not much of a programmer, so the code below is a quick knock-out, followed by the image it creates. The grid and axes can be removed in the display panel of the program if desired.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.