Three-dimensional volumetric data is discrete by nature. It does not preserve continuous surface. Therefore, to render surfaces realistically, the normal vectors must be predicted before processing the image. During the rendering, if the normals are averaged directly, then the sharp edges are smoothed out as well. In this paper, we show how to avoid over-smoothing problems by analyzing a few neighbor voxels, and selectively averaging the normals to keep details, within a predefined kernel.