Given an octree of voxels, how do you render with smooth surfaces?
-
18-09-2019 - |
Question
I noticed most 3d voxel models are actually pretty low resolution, but then are rendered all smoothed out with some sort of interpolation.
Given its ray traced, what is the algorithm used to render it smoothly? Could anybody suggest a book on the topic?
Solution
There has been some discussion on the OMPF forum about this. The key is to have surface normal information stored with each voxel - even for high voxel resolution. You do shading with the stored normal, not the normal to the little box that is a voxel. Even then, it's not good for surfaces that are almost axially aligned where you have a lot of flat surface with an occasional step. The steps are nearly impossible to hide on smooth surfaces. Also, for extremely irregular surfaces, you'll have problems where a single "voxel normal" is not adequate for viewing from different sides.
OTHER TIPS
Have a look at volume ray casting. At the website of the Worcester Polytechnic Institute you can find a more in-depth explanation.