Abstract:
Rendering a three-dimensional model includes obtaining a characteristic of the three-dimensional model, determining a three-dimensional dither pattern based on the characteristic, and rendering the three-dimensional model using the three-dimensional dither pattern. Determining the three-dimensional dither pattern may include selecting a number of points to make up the dither pattern and a location of the points on the three-dimensional model.

Description:
TECHNICAL FIELD 
   This invention relates to rendering a three-dimensional (3D) model using a dither pattern. 
   BACKGROUND 
   A 3D model may be defined using 3D volumetric data. 3D volumetric data defines characteristics of models or “objects” in a 3D environment. For example, a 3D environment may include a cloud. 3D volumetric data may be used to define the density of regions of that cloud using dots or other elements. 

   
     DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is perspective view of a 3D environment. 
       FIG. 2  is a perspective view of volumetric data in an object from the 3D environment. 
       FIG. 3  is a flowchart for rendering a 3D model using one or more dither patterns. 
       FIG. 4  is a block diagram of computer hardware on which the process of  FIG. 3  may be implemented. 
   

   DESCRIPTION 
     FIG. 1  shows a 3D environment  10  rendered using 3D data. 3D environment  10  includes a cloud  12 . Referring to  FIG. 2 , the 3D data for cloud  12  is 3D volumetric data. That is, the data defines which pixels are “on” or “off” in the 3D space occupied by cloud  12 . In this way, the 3D volumetric data approximates the density of the cloud, i.e., more pixels “on” means higher density, fewer pixels “on” means lower density. 
   Although density is described here, it is noted that volumetric data is not limited to defining an object&#39;s density. Volumetric data may be used to define any characteristic of a 3D model. For example, volumetric data may be used to define color in the three-dimensional model, field strength (e.g., electrical or magnetic) in a 3D model, temperature in the 3D model, and/or pollution concentration in the 3D model. 
   Referring to  FIG. 3 , a process  20  is shown for rendering a 3D model, such as cloud  12 , using 3D dither patterns. Process  20  receives ( 22 ) 3D data for 3D model  12 . The data may be retrieved from a memory, downloaded from a network, or obtained from any available source. The following describes rendering cloud  12  using 3D dither patterns; however, it is noted that process  20  may be used to render any object in 3D environment  10  using dither patterns (provided, of course, that the object has associated volumetric data). 
   Process  20  selects ( 24 ) a 3D region of cloud  12 . In this embodiment, process  20  selects a cubic region; however, any type of 3D region may be used. Irregularly shaped regions may be used, particularly for regions near the boundary of cloud  12 . Process  20  obtains ( 26 ) a characteristic of the selected region. As noted, the characteristic, in this case density, is defined by volumetric data associated with the selected region. Process  20  obtains ( 26 ) the characteristic of the selected region as follows. 
   Process  20  selects ( 28 ) a sub-region of the selected region. The sub-region may be of any shape (e.g., a cube) and any size (e.g., from a single pixel to multiple pixels). Process  20  obtains ( 30 ) the desired characteristic, in this case density, of the sub-region. The density is obtained from volumetric data for the sub-region. Process  20  determines ( 32 ) if there are any sub-regions for which the density has not been obtained. If so, process  20  repeats blocks  28 ,  30  and  32  until the density has been obtained for all sub-regions of the region selected in  24 . Once the density has been obtained for all sub-regions, process  20  averages ( 34 ) the values of the densities. The resulting average is assigned to be the density of the selected region. 
   Process  20  determines ( 36 ) a dither pattern for the selected region based on the density of the selected region. In this embodiment, the dither pattern is defined by data specifying pixels to illuminate in 3D space when rendering cloud  12 . The pixels define individual points (or dots) in the dither pattern. The number and locations of the points in the selected region are based on the density of the region. That is, the higher the density, the greater the number of points that are included in the selected region. The points may be distributed randomly throughout the selected region to approximate the density, or they may be distributed evenly. The distribution may determined at the time of rendering, i.e., “on-the-fly”, or it may be pre-set. Alternatively, the dither pattern may be selected from a set of pre-stored dither patterns that correspond to various densities. 
   Once process  20  determines ( 36 ) the dither pattern for the selected region, it is determined ( 38 ) if there are any regions remaining in cloud  12 . That is, process  20  determines ( 38 ) if dither patterns have been selected for all regions of cloud  12 . If not, process  20  repeats blocks  24 ,  26 ,  36  and  38  until dither patterns have been selected for all regions. 
   Once the dither patterns have been selected, process  20  outputs the dither patterns to a 3D graphics rendering process. The output may be a list of points that comprise the dithered approximation of the volumetric data for cloud  12 . The rendering process, which may or may not be part of process  20 , renders ( 40 ) the 3D object, i.e., the cloud, using the dither patterns. The resulting rendering is a 3D object that approximates its density with concentrations of dots. 
     FIG. 4  shows a computer  42  on which process  20  may be implemented. Computer  42  includes a processor  44 , a memory  46 , and a storage medium  48  (see view  50 ). Storage medium  48  stores 3D data  52  for 3D environment  10  and machine-executable instructions  54  that are executed by processor  44  out of memory  46  to perform process  20  on 3D data  52 . 
   Although a personal computer is shown in  FIG. 4 , process  20  is not limited to use with the hardware and software of FIG.  4 . It may find applicability in any computing or processing environment. Process  20  may be implemented in hardware, software, or a combination of the two. Process  20  may be implemented in computer programs executing on programmable computers or other machines that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage components), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device (e.g., a mouse or keyboard) to perform process  20  and to generate output information. 
   Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language. 
   Each computer program may be stored on a storage medium/article (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform process  20 . Process  20  may also be implemented as a machine-readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause a machine to operate in accordance with process  20 . 
   The invention is not limited to the specific embodiments described above. Other embodiments not described herein are also within the scope of the following claims.