Given an octree of voxels, how do you render with smooth surfaces?
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 开发者_JAVA百科algorithm used to render it smoothly? Could anybody suggest a book on the topic?
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.
Have a look at volume ray casting. At the website of the Worcester Polytechnic Institute you can find a more in-depth explanation.
精彩评论