Abstract:
A method generates a detail directed hierarchical representation of orientations of a surface of a graphics model. The surface of the graphics model is partitioned into surface cells, each surface cell enclosing a portion of the surface. The surface cells are stored in a hierarchical data structure having levels, wherein the number of levels for a particular portion of the surface is determined by surface detail of the particular portion. A visibility element of the enclosed portion of the surface is determined for each surface cell, the visibility element specifying an axis and a spread defining a range of normal values of the enclosed portion of the surface. The visibility element is stored with the associated surface cell. The surface detail of the particular portion can be determined by a degree of curvature and shading parameters of the surface of the particular portion.

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention relates generally to the field of computer graphics, and more particularly to determining the orientations of a surface of a model.  
         BACKGROUND OF THE INVENTION  
         [0002]    In real-time graphics applications, such as games and physical simulations, numerous techniques are known to automatically generate models in the form of polygon meshes. Common generation techniques include laser range scanning and triangulation of implicit functions. Often, the resultant meshes include more polygons that can be rendered by standard rendering engines at real-time frame rates.  
           [0003]    Therefore, in order to reduce the number of polygons in the models, multi-resolution triangle meshes are frequently used. These methods typically use two approaches for generating level-of-detail (LOD) meshes. In the static approach, a set of static LOD meshes are pre-computed before use in an application. At runtime, a member of the set is selected, based on viewing parameters and frame rate requirements, and displayed. In the dynamic approach, a single dynamic mesh is generated before use in the application, and then the mesh is adapted by a series of transformations according to the viewing parameters and the frame rate requirements, see Garland “ Multiresolution Modeling: Survey and Future Opportunities,”  Eurographics &#39;99 State of the Art Reports, pp. 111-131, 1999.  
           [0004]    Known dynamic meshing methods, such as view dependent progressive meshes (VDPM), and hierarchical dynamic simplification (HDS), generate hierarchical data structures that can be refined and decimated to reduce the number of polygons in the meshes. The hierarchy in the VDPM is formed by generating a new parent vertex for every pair of vertices combined by an edge collapse operation, see Hoppe “View-Dependent Refinement of Progressive Meshes,” Proceedings of SIGGRAPH 1997, pp. 189-198, 1997. The HDS hierarchy is formed by spatially subdividing a scene into cells, and grouping vertices in each cell into a single representative vertex, see Luebke et al. “ View - Dependent Simplification of Arbitrary Polygonal Environments,”  Proceedings of SIGGRAPH 1997, pp. 199-208, 1997. In both methods, a screen space error and normal cones are used to determine when to refine and decimate the mesh.  
           [0005]    However, these techniques can still produce more polygons than needed. Furthermore, their processing time is dependent on the number of polygons in the original model, which can be prohibitively slow for large models. Finally, these methods can produce poor quality models when the polygon count is small.  
           [0006]    Therefore, there is a need to provide a method and system for automatically generating real-time dynamic meshes that match viewing parameters and desired frame rates.  
           [0007]    The use of normal cones for determining visibility is known in the art, see Hoppe and Luebke et al. as described above. In both systems, normal cones are constructed from the initial geometry of the model and placed in a data structure such as an octree. There, the range, or spread, of normals in an octree cell is a function of where the geometry lies with respect to the octree grid. For example, a leaf cell of the octree can have a large spread of normals simply because the geometry within that cell has a large degree of curvature. This type of normal cone construction can cause a rendering engine to draw many more polygons than necessary because polygons that should be classified as invisible, e.g., back-facing, are instead classified as visible since the polygons are grouped in a leaf cell with a large spread of normals indicating, erroneously, that they are visible.  
           [0008]    Therefore, there is a need to provide a method for automatically generating detail directed visibility elements, e.g., detailed directed normal cones, that will more accurately classify geometry such as polygons according to visibility, thus avoiding unnecessary processing such as the rendering of polygons as described above.  
         SUMMARY OF THE INVENTION  
         [0009]    It is an object of the present invention to generate detail directed visibility elements to enable more accurate decisions about the visibility of rendering elements such polygons and points.  
           [0010]    The present invention provides a method for generating a detail directed hierarchical representation of orientations of a surface of a graphics model. The surface of the graphics model is partitioned into surface cells, each surface cell enclosing a portion of the surface. The surface cells are stored in a hierarchical data structure having levels, wherein the number of levels for a particular portion of the surface is determined by surface detail of the particular portion. A visibility element of the enclosed portion of the surface is determined for each surface cell, the visibility element specifying an axis and a spread defining a range of normal values of the enclosed portion of the surface. The visibility element is stored with the associated surface cell. The surface detail of the particular portion can be determined by a degree of curvature and shading parameters of the surface of the particular portion. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0011]    [0011]FIG. 1 is a flow diagram of a method for generating view dependent dynamic rendering elements according to the invention;  
         [0012]    [0012]FIGS. 2 a ,  2   b ,  2   c , and  2   d  show examples of visibility elements;  
         [0013]    [0013]FIG. 3 is a flow diagram of a process for generating visibility elements used by the method of FIG. 1;  
         [0014]    [0014]FIG. 4 is a flow diagram of a process for maintaining active cells of an adaptively sampled distance field representing a model;  
         [0015]    [0015]FIG. 5 a  is a dynamic model with 16984 triangles at 47 frames per second; and  
         [0016]    [0016]FIG. 5 b  is a dynamic model with 23364 triangles at 41 frames per second. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0017]    Introduction  
         [0018]    [0018]FIG. 1 shows a computerized dynamic modeling system and method  100  according to our invention. The modeling system and method  100 , as a basis, uses an adaptively sampled distance field (ADF)  120  to represent a digitized model that can be animated, in real-time, for use by the entertainment industry and physical simulations.  
         [0019]    The basic data structure of an ADF is described in U.S. patent application Ser No. 09/370,091 “Detail-Directed Distance Fields” filed by Frisken et al. on Aug. 6, 1999, incorporated herein in its entirety by reference.  
         [0020]    The ADF  120  can be generated from an input model  105  by a ADF generation method  115  according to generation parameters  110 . For example, the generation parameters can specify a level-of-detail, or acceptable error measures. The method  115  adaptively samples distance values in a signed distance field of the model  105 , and stores the distance values in a spatial hierarchy of cells, for example a sparse octree of cells. Distance values with a positive sign are exterior to the object, negative distance values are interior, and zero distance values represent the surface of the object.  
         [0021]    Methods that can operate on ADFs are described in: U.S. patent application Ser. No. 09/810,983 “System and Method for Generating Adaptively Sampled Distance Fields with Bounded Distance Trees” filed by Perry et al. on Mar. 16, 2001, U.S. patent application Ser. No. 09/810,839 “Conversion of Adaptively Sampled Distance Fields to Triangles” filed by Frisken et al. on Mar. 16, 2001, U.S. patent application Ser. No. 09/811,010 “System and Method for Modeling Graphics Objects” filed by Perry et. al. on Mar. 16, 2001, and U.S. patent application Ser. No. 09/809,682 “System and Method for Converting Range Data to 3D Models,” filed by Frisken et al. on Mar. 16, 2001.  
         [0022]    Overview of System and Method  
         [0023]    Our method and system  100  begins with the input model  105  constructed using any known modeling technique. For example, the model  105  can be in the form of range images, a point cloud, a triangle mesh, or an implicit function. Because the model  105  can be in many forms, our method is particularly suited for animation and physical modeling where many different model forms are often used in conjunction depending on production and time requirements, cost, and available technologies.  
         [0024]    Our method comprises two stages: a pre-processing static stage  101 , and a real-time dynamic stage  102 . The static stage  101  generates  115  the ADF  120  from the model  105 , and determines  300  visibility elements (VE)  210 , see FIG. 2, for the ADF  120  to produce a single static ADF VE    140 . The static stage also initializes  130  active cells  150  and a count of the total number of rendering elements NRE  180  required for the dynamic stage  102 .  
         [0025]    The dynamic stage  102  adapts and optimizes the active cells  150  and the N RE    180 , which can be initially view-independent, for dynamically varying view parameters  160  and frame rate requirements  165 . The dynamic stage is performed every frame, or every few frames, as required. During each adaptation of the active cells  150  and the N RE    180 , the ADF VE    140  is considered to determine when active cells  150  need to be added or removed.  
         [0026]    Processing Details  
         [0027]    [0027]FIGS. 2 a - d  show example visibility elements, for example, a visibility cone, disk, and patch, and a cone positioned on a surface in 3D space. As described in further detail below, a detail directed visibility element (VE)  210  is determined  300  for each surface cell in the ADF  120 , producing an annotated ADF VE    140 .  
         [0028]    The visibility element  210  minimally includes an axis  213  and a means  214 , such as an angle, for defining the range, or spread, of normals of the surface associated with the visibility element. The visibility element  210  may also include a reference point  215 , which anchors the visibility element in a coordinate system, and a data structure  216 , such as a sphere, cube, and ADF cell, for describing the bounding volume of the surface associated with the visibility element  210 .  
         [0029]    The spread of normals  214  of the visibility element  210  essentially corresponds to the detail, e.g., the degree of curvature, of the portion of the surface associated with the visibility element  210 .  
         [0030]    The visibility element  210  associated with each surface cell in the ADF  120  indicates whether the associated surface cell could be potentially visible in a rendered image. The surface cell is potentially visible if any direction within the spread of normals  214  about the axis  213  of the visibility element  210  intersects an infinite sized image plane, i.e., the viewing plane. When a surface cell is visible, it is said to be “front-facing,” otherwise it is “back-facing.” Whether or not the surface cell is actually visible for a selected viewing frustum depends on specific viewing parameters  160 .  
         [0031]    A data structure  216  of the visibility element  210  can be used to determine whether the surface associated with the visibility element  210  is within the selected viewing frustum. If the data structure  216  indicates that the surface is outside of the selected viewing frustum, then the surface is invisible under the specific viewing parameters  160  of FIG. 1.  
         [0032]    Because the visibility elements  210  associated with every surface cell of the ADF VE    140 , they can be used to determine potential visibility of the surface cells for any viewing parameters  160 . Therefore, the ADF VE    140  is said to be view independent and static.  
         [0033]    Using parameters  135 , the process  130  determines an initial set of active cells  150  that can be view independent. The parameters  135  can include the position and size of an initial view frustum. Each active cell of the set  150  corresponds to a selected one of the surface cells in the static ADF VE    140 . The process  130  also determines initial rendering elements for each active cell of the set  150 , and computes the initial total number of rendering elements N RE    180  for all the active cells of the set  150 . Frisken et al. in “ Conversion of Adaptively Sampled Distance Fields to Triangles”,  see above, describe a method for converting the active cells of the set  150  to triangular rendering elements.  
         [0034]    A process  400  dynamically modifies the set of active cells  150  depending on the dynamic viewing parameters  160 . The process  400  also minimizes the number of rendering elements N RE    180  that are produced in order to satisfy the frame rate requirements  165 . In addition, the process  400  optimizes the visual quality of the images produced by using a higher level of detail in visually important regions, for example, the silhouette of a graphics object, or portions of the graphics object that are closer to the viewer.  
         [0035]    A process  155  extracts the rendering elements  170  from the active cells  150 . The rendering elements  170  can be in the form of points, non-uniform rational B-splines (NURBS), triangles, or other graphics primitives. A standard hardware or software rendering engine  175  can then further process the rendering elements to produce a sequence of image frames for various applications such as games, physical simulations, and movie production.  
         [0036]    The dynamic process  400  increases the number of rendering elements N RE    180  when a particular active cell of the set  150  results in too few elements, and decreases the number of rendering elements N RE    180  when a particular active cell of the set  150  results in too many elements. Thus, the number of rendering elements N RE    180 , at any one time, is kept at an optimal minimum that ensures quality images and meets desired frame rates. See below for the specific method steps which add and delete the rendering elements  170  associated with the active cells  150 .  
         [0037]    Detailed Directed Visibility Elements  
         [0038]    [0038]FIG. 3 shows the process  300  for determining visibility elements  210  in greater detail. In step  320 , the distance values at a plurality of locations associated with, e.g., within and near, each leaf surface, i.e., boundary, cell of the ADF  120  are determined. That is, the root cell, intermediate cells, and interior and exterior cells are excluded from this process.  
         [0039]    The distance values at the plurality of locations can be used 322 to analytically determine the visibility element axis  213  and spread  214  of the surface contained in the cell. The distance values at the plurality of locations can also be used 321 to derive the surface normals at a second plurality of locations. The surface normals at the second plurality of locations are then combined to determine the visibility element axis  213  and spread  214  of the surface contained in the cell. When step  320  finishes, every surface leaf cell of the ADF  120  is annotated with the visibility element  210 , producing ADF VE     —     LEAF    323 .  
         [0040]    In a bottom up fashion, step  325  determines visibility elements  210  for each non-leaf surface cell by combining the visibility elements  210  of the cell&#39;s children  323  until the root cell is reached and thus all surface cells have an associated visibility element  210 . The resulting visibility elements  210  reflect the adaptive detail directed nature of the ADF  120 . That is, the resulting visibility elements  210  are detail directed.  
         [0041]    The ADF  120  is then annotated  325  with the determined visibility elements  210  to produce the ADF VE    140 .  
         [0042]    The process  300  can also be used for generating detail directed visibility elements  210  for any arbitrary input model  105 . First, an ADF  120  is generated  115  from the input model  105  using generation parameters  110 . Second, the ADF VE    140  is produced as described above.  
         [0043]    Step  330  then associates rendering elements, e.g., triangles, with the cells of the ADF VE    140  that contain the rendering elements, producing ADF VE     —     ELEMS    331 . Step  340  generates a visibility element spatial data structure input model VE    341  that comprises the visibility elements  210  and their associated rendering elements. The input model VE    341  can be used to perform visibility testing without requiring access to the ADF  120  and the ADF VE    140 .  
         [0044]    Dynamic Modification of Active Cells  
         [0045]    [0045]FIG. 4 shows the process  400  for dynamically modifying active cells. Input to the process includes the viewing parameters  160 , the active cells  150 , the frame rate requirements  165 , the ADF VE    140 , the N RE    180 , and a weighting function  401 .  
         [0046]    Step  410  assigns a cell weight, e.g., 0≦cell weight≦1, to each active cell, and determines a total weight W 411, initially zero. A cell is assigned a high weight, e.g., one, if the cell is on the object&#39;s silhouette, and zero weight if the cell is back-facing or outside the view frustum. Cells that are oblique to the view direction can be assigned intermediate weights, e.g., 0.5.  
         [0047]    During weighting, other parameters, such as the projected screen size of the cell and specular highlighting, an exemplary shading parameter, can be considered. In addition, our method can use the cell&#39;s error measure as an indicator of surface roughness or curvature. The error measure can be factored into the weight.  
         [0048]    Step  420  determines whether a cell has too few or too many rendering elements (RE&#39;s). This determination uses the following formulation:  
           D =(cell weight)/ W −(cell&#39;s number of RE&#39;s)/ N   RE .  
         [0049]    If D&lt;t 1 , then the cell has too many rendering elements, where t 1  is a first threshold. In this case, the cell is added to a first list  421  for ascending the ADFVE  140 . If D&gt;t 2 , then the cell has too few rendering elements, and the cell is added to a second list  422  for descending the ADF VE    140 .  
         [0050]    In step  430 , a determination is made to add or deleted cells depending on the lists  421 - 422 . For each cell that has too many rendering elements, its parent cell is added to a first queue  431  used to add active cells, and the parent cell&#39;s boundary children cells are added to a second queue  432  used to delete active cells.  
         [0051]    For each cell with too few rendering elements, the cell&#39;s boundary children cells are added to the first queue  431 , and the cell is added to second queue  432 .  
         [0052]    Queues for Adding and Deleting Active Cells  
         [0053]    To ensure that the frame rate requirements  165  are met, add operations are stored in the add queue  431 , and delete operations are stored in the delete queue  432 . The delete operations are processed after every adaptation to keep the number of rendering elements at a minimum. The add operations in the add queue  431  can be ordered according to the ratio D defined above. Add operations can be processed when frame time is available using a feedback system  166 . It is also possible to geomorph, i.e., interpolate, between new rendering elements and existing rendering elements to avoid jerky motion and “popping” artifacts.  
         [0054]    Step  440  adds and deletes active cells  150 , and updates the total number of rendering elements N RE    180  accordingly. For each new active cell, its rendering elements are determined  440  and the number of new rendering elements is added to the total number of rendering elements N RE    180 . By appropriately setting the thresholds t 1  and t 2 , the number of rendering elements N RE    180  to be processed by a particular rendering engine  175  can be adjusted to meet frame rate and quality requirements.  
         [0055]    As shown in FIGS. 5 a  and  5   b , the method and system according to our invention produces detail-directed rendering elements, such as triangle meshes, that have a high visual quality. Note the silhouette quality of the bunny model in FIG. 5 a . In addition, the invention minimizes the number of rendering elements in non-visible portions of the model. Note how areas outside the view frustum  510  are culled in FIG. 5 b . Real-time frame rates, e.g., 30 frames per second or higher, can be sustained even as changes in the point of view cause significant differences in the visible portion of the model.  
         [0056]    This invention is described using specific terms and examples. It is to be understood that various other adaptations and modifications may be made within the spirit and scope of the invention. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the invention.