1. A method of adaptive direct volume rendering, comprising: fragmenting a sampled 3-D dataset of a scalar field into a plurality of sub-volumes of different sizes, each sub-volume associated with a set of data value parameters characterizing the data value distribution of the scalar field within the sub-volume; defining an opacity transfer function that is dependent upon data values of the scalar field and an illumination model; selectively casting a plurality of rays from a 2-D image plane towards the sampled dataset using a computer processor, each ray having an initial ray energy and a cross-section; for each ray cast from a selected location on the 2-D image plane, selecting a subset of the plurality of sub-volumes for interaction with the ray; estimating the ray energy reflected by each sub-volume of the subset using the opacity transfer function and the illumination model; and summing the reflected ray energy as a pixel value at the selected location on the 2-D image plane; and estimating pixel values at other locations on the 2-D image plane using the pixel values at the selected locations wherein the step of estimating the ray energy reflected by each sub-volume of the subset includes; estimating a maximum energy differential of the sub-volume; comparing the maximum energy differential against a predefined energy error threshold; if the maximum energy differential is above the predefined energy error threshold, recursively selecting a smaller sub-volume along the ray path; and estimating a new maximum energy differential of the smaller sub-volume ; and if the maximum energy differential is below the predefined energy error threshold, calculating the amount of ray energy reflected by the sub-volume using the illumination model wherein if the sub-volume is a smallest sub-volume comprising 2×2×2 3-D cells, the smaller sub-volume is a 3-D cell within the smallest sub-volume, and if the opacity transfer function varies monotonically within the cell and an iso-surface exist in the 3-D cell, the maximum energy differential of the 3-D cell is calculated using the eight data values at the corners of the 3-D cell and the opacity transfer function.