Abstract:
Texture mapping of a primitive object uses multiple levels of detail. The primitive object is a triangle having three vertices. The pixel coordinates of the three vertices and their corresponding texture mapped coordinates satisfy three linear equations derived from the equation representing the plane on which the triangle belongs to. An equivalent formula derived from a standard formula for the multiple levels of detail can be computed by a plurality of constants forming the three linear equations. The plurality of constants are first determined by using the pixel coordinates and the corresponding texture mapped coordinates of the three vertices. By substituting the constants into the equivalent formula, the value for the multiple levels of detail can be computed. A lookup table is used to determine log 2  function values that are required in the equivalent formula. The method can be realized by simple hardware and a high precision log 2  lookup table to accomplish high quality texture mapping.

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to texture mapping of three-dimensional computer graphics, and more particularly to an apparatus and method for texture mapping using multiple levels of detail. 
     BACKGROUND OF THE INVENTION 
     An object image of full resolution can be pre-filtered and represented by a number of primitive objects or simple textures with lower resolution. The simple textures can then be drawn according to its geometric coordinates. The process of converting a high resolution object image into low resolution simple textures is called mipmapping. Mipmapping technique has been used in texture mapping for three dimensional computer graphics. A texture can be described as a single pixel, an element, two elements, three elements or four elements. 
     Mipmapping technique selects proper textures for describing a primitive object based on functions of multiple levels of detail. The textures are processed in order to accurately describe the primitive object. FIG. 1 illustrates the process of a conventional mipmapping technique for texture mapping of a primitive object. The primitive object a  101  which is a triangle in FIG. 1 is shown in a X-Y coordinate system. The texture  102  is shown in a S-T coordinate system. The texture mapping  103  is drawn after mipmapping according to a function of multiple levels of detail. 
     For each pixel at (X, Y) in the X-Y coordinate system with corresponding texture coordinate (S, T) in the S-T coordinate system, the multiple levels of detail (LOD) is defined in Eq. (1):              d   =     LOD   =       log   2          (     max        (             (       ∂   S       ∂   X       )     2     +       (       ∂   T       ∂   X       )     2         ,           (       ∂   S       ∂   Y       )     2     +       (       ∂   T       ∂   Y       )     2           )       )                 (   1   )                                
     where ∂S/∂X is the partial differential of S with respect to X, ∂T/∂X is the partial differential of T with respect to X, ∂S/∂Y is the partial differential of S with respect to Y, and ∂T/∂Y is the partial differential of T with respect to Y. 
     Because it is difficult to realize the above multiple levels of detail shown in Eq. (1) with hardware for each pixel, conventional mipmapping technique usually uses modified approach to compute the multiple levels of detail. For example, in three dimensional computer graphics software or chips, certain values for constant levels of detail for a primitive object are found first. Interpolation technique is then used to fill in more values and improves the resolution. During the interpolation, perspective correction may or may not be applied. 
     FIG. 2 shows pre-filtered images generated in the texture mapping of a primitive object using mipmapping technique. The values d for the multiple levels of detail shown in the figure are 0, 1, 2, . . . , etc. The size of the pre-filtered image is identical to that of the original texture when d is equal 0. If the value d is 1, the size of the pre-filtered image is reduced to ¼. If the value d is 2, the size is reduced to {fraction (1/16)}. If the value is 3, the size is reduced to {fraction (1/64)}, and so on. 
     The conventional mipmapping technique has drawback as well as difficulty in its implementation. The difficulty is that the conventional technique requires the use of a monotonically increasing function f(x,y) which has continuous |∂S/∂X, |∂T/∂X|, |∂S/∂Y| and |∂T/∂Y| to find the approximate value of Eq. (1). And, in fact, it is not easy to realize the function f(x,y). The drawback is poor quality in the resulted texture mapping. The effect of simulating the real object is not good either. 
     SUMMARY OF THE INVENTION 
     The present invention has been made to overcome the above mentioned drawback and difficulty in the texture mapping of three dimensional computer graphics. The primary object of the invention is to provide a method and apparatus for a texture mapping technique using multiple levels of detail. According to the invention, appropriate texture mapping is selected according to the viewing distance from the original object. 
     Another object of the invention is to provide a method and apparatus for texture mapping in which each pixel can be realized with hardware according to a special equation disclosed in the present invention. The primitive object is represented by a triangle. By using available and useful data of the three vertices of a triangle and the equation that represents the plane of the triangle, the standard formula Eq. (1) describing multiple levels of detail is converted into an equivalent formula. The texture mapping using the equivalent formula can be easily implemented by hardware. 
     A further object of the invention is to provide a method and apparatus for texture mapping that can result in high accuracy and optimal simulation effect of the original object. According to a preferred embodiment of the present invention, the computation of a log 2 (x) function that is required in computing the equivalent formula of this invention is achieved by using a log 2  look-up table. The first three bits of the mantissa of a value x are used as the index to the log 2  look-up table in order to find the fractional part of the logarithmic value which has 10 binary bits precision. 
     The foregoing and other objects, features, aspects and advantages of the present invention will become more apparent from a careful reading of a detailed description provided herein below, with appropriate reference to the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates the texture mapping of a primitive object using a conventional mipmapping technique. 
     FIG. 2 illustrates the pre-filtered textures with different multiple levels of detail in the texture mapping of a primitive object using a conventional mipmapping technique. 
     FIG. 3 illustrates the flow chart of the texture mapping using multiple levels of detail technique according to the present invention. 
     FIG. 4 shows a table of log 2 (x) function wherein the first 3 bits of the mantissa of a x value are used as the index to the table for finding the fractional part of the logarithmic value. 
     FIG. 5 shows a preferred embodiment of a hardware implementation of an equivalent formula that computes the texture mapping using multiple levels of detail of this invention. 
     FIG. 6 illustrates texture mapping using different values for multiple levels of detail for a primitive object that is a long and deep avenue. 
     FIG.  7 ( a ) illustrates texture mapping using a conventional mipmaping technique without perspective correction of the same primitive object in FIG.  6 . 
     FIG.  7 ( b ) illustrates texture mapping using a conventional mipmaping technique with perspective correction of the same primitive object in FIG.  6 . 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The symbols and coordinate system used in the following description are defined first for convenience. In a three dimensional graphics, a texture coordinate computed for a primitive object with perspective correction W is represented by (S, T, W). The computation is normally based on three values, i.e., S/W, T/W and 1/W. Symbols SOW, TOW and OOW are used to represent these three values respectively. 
     The three values SOW, TOW and OOW have linear relationship with respect to the equation f(X, Y)=AX+BY+C of the plane that contains the triangle representing the primitive object. In other words, the three values must satisfy the following three equations: 
     
       
         S/W=SOW=A SOW X+B SOW Y+C SOW   (2) 
       
     
      T/W=TOW=A TOW X+B TOW Y+C TOW   (3) 
     
       
         1/W=OOW=A OOW X+B OOW Y+C OOW   (4) 
       
     
     where A SOW , B SOW , C SOW , A TOW , B TOW , C TOW , A OOW , B OOW  and C OOW  are constants. 
     In the following paragraphs, the equation of the multiple levels of detail of this invention and how to perform the texture mapping will be described. FIG. 3 illustrate the flow diagram of an embodiment of this invention. In the first step  301 , the available data (X 1 , Y 1 , S 1 , T 1 , W 1 ), (X 2 , Y 2 , S 2 , T 2 , W 2 ) and (X 3 , Y 3 , S 3 , T 3 , W 3 ) for the three vertices of the triangle are used to solve equations (2)-(4) and determine the constants A SOW , B SOW , A TOW , B TOW , A OOW , and B OOW  as follows:          A   SOW     =           (       SOW   1     -     SOW   3       )          (       Y   2     -     Y   3       )       -       (       SOW   2     -     SOW   3       )          (       Y   1     -     Y   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                     B   SOW     =           (       X   1     -     X   3       )          (       SOW   2     -     SOW   3       )       -       (       X   2     -     X   3       )          (       SOW   1     -     SOW   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                     A   TOW     =           (       TOW   1     -     TOW   3       )          (       Y   2     -     Y   3       )       -       (       TOW   2     -     TOW   3       )          (       Y   1     -     Y   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                     B   TOW     =           (       X   1     -     X   3       )          (       TOW   2     -     TOW   3       )       -       (       X   2     -     X   3       )          (       TOW   1     -     TOW   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                     A   OOW     =           (       OOW   1     -     OOW   3       )          (       Y   2     -     Y   3       )       -       (       OOW   2     -     OOW   3       )          (       Y   1     -     Y   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                     B   OOW     =           (       X   1     -     X   3       )          (       OOW   2     -     OOW   3       )       -       (       X   2     -     X   3       )          (       OOW   1     -     OOW   3       )               (       X   1     -     X   3       )          (       Y   2     -     Y   3       )       -       (       X   2     -     X   3       )          (       Y   1     -     Y   3       )                       where                   SOW   1       =       S   1       W   1         ,       SOW   2     =       S   2       W   2         ,                  SOW   3     =       S   3       W   3                     TOW   1     =       T   1       W   1         ,       TOW   2     =       T   2       W   2         ,       TOW   3     =       T   3       W   3                     OOW   1     =     1     W   1         ,       OOW   2     =     1     W   2         ,       OOW   3     =       1     W   3       .                              
     The step  302  shown in FIG. 3 is processed after constants A SOW , B SOW , A TOW , B TOW , A OOW  and B OOW  are found. In this step, Eq. (1) is converted to an equivalent formula for the multiple levels of detail shown in Eq. (5) by means of the relationship between the partial differentials of the texture mapping (S, T) relative to the (X, Y) coordinate and the equations (2)-(4). From Eqs. (2)-(4), because          S   =         SOW   OOW                   and                 T     =     TOW   OOW         ,                          
     the partial differential of S with respect to X can be derived as follows:                  ∂   S       ∂   X       =                    ∂     ∂   X            (     SOW   OOW     )       =         (       ∂     ∂   X          SOW     )          1   OOW       +       (       ∂     ∂   X            1   OOW       )        SOW                     =                    A   SOW        W     -         A   OOW       OOW   2          SOW                   =                    A   SOW        W     -       A   OOW          SOW   OOW          1   OOW                       =                  (       A   SOW     -       A   OOW        S       )        W       ,                                
     Similarly, the following equations can be derived:              ∂   T       ∂   X       =       (       A   TOW     -       A   OOW        T       )        W       ,     
              ∂   S       ∂   Y       =       (       B   SOW     -       B   OOW        S       )        W       ,   and               ∂   T       ∂   Y       =       (       B   TOW     -       B   OOW        T       )          W   .                              
     Therefore, Eq. (1) can be rewritten as follows:                    LOD   =       log   2          (     max        (             (       ∂   S       ∂   X       )     2     +       (       ∂   T       ∂   X       )     2         ,           (       ∂   S       ∂   Y       )     2     +       (       ∂   T       ∂   Y       )     2           )       )                   =       log   2          (     max        (             (       (       A   SOW     -       A   OOW        S       )        W     )     2     +       (       (       A   TOW     -       A   OOW        T       )        W     )     2         ,           (       (       B   SOW     -       B   OOW        S       )        W     )     2     +       (       (       B   TOW     -       B   OOW        T       )        W     )     2           )       )                   =         log   2          (     max        (             (       A   SOW     -       A   OOW        S       )     2     +       (       A   TOW     -       A   OOW        T       )     2         ,           (       B   SOW     -       B   OOW        S       )     2     +       (       B   TOW     -       B   OOW        T       )     2           )       )       +       log   2        W                   =         1   2            log   2          (     max        (           (       A   SOW     -       A   OOW        S       )     2     +       (       A   TOW     -       A   OOW        T       )     2       ,         (       B   SOW     -       B   OOW        S       )     2     +       (       B   TOW     -       B   OOW        T       )     2         )       )         +       log   2        W                     (   5   )                                
     where the function log 2  has to be determined. Instead of computing the logarithmic function value, a look-up table can be used to obtain the value of the function. Step  303  is the step for finding the log 2  function from a look-up table as shown in FIG.  4 . 
     The value of a log 2 (x) function can be represented by an exponent part and a fractional part as: 
     
       
         Log 2 (x)=exponent part·fractional part 
       
     
     According to the invention, the first three bits of the mantissa of a value x are used as the index to the log 2  look-up table in order to find the fractional part of the logarithmic value which has 10 binary bits precision. 
     The multiple levels of detail of the present invention as shown in Eq. (5) can be implemented by hardware. A preferred embodiment of the implementation is shown in FIG.  5 . With reference to Eq. (5), the circuit diagram in FIG. 5 has two groups of inputs. One is (S. A OOW , A SOW , T, A OOW , A TOW ) and the other is (S, B OOW , B SOW , T, B OOW , B TOW ). After four stages of computation, two data (A SOW −A OOW S) 2 +(A TOW −A OOW T) 2  and (B SOW −B OOW S) 2 +(B TOW −B OOW T) 2  are obtained according to the formula in Eq. (5). The maximum value of the two data are then determined. The following computation requires the use of the log 2  table. After the log 2  value of the maximum and the log 2  value of another input Ware found from the look-up table, an adder is used to find the LOD value according to Eq. (5). 
     The present invention first derives an equivalent formula of a standard formula for multiple levels of detail and then discloses a circuit implementation. The hardware that implements the equivalent formula for the multiple levels of detail can be easily realized. In addition, the required log 2  function values are obtained by a look-up table. The values in the look-up table have 10 binary bits accuracy. Therefore, the texture mapping according to this invention is very accurate. The quality of the texture is greatly improved and the simulation of the original object achieves good effect. 
     FIG. 6 illustrates an example of a texture mapping according to the present invention by means of multiple d values. The primitive object is a long and deep avenue. The results of the texture mapping using conventional mipmapping technique with and without perspective correction are shown in FIGS.  7 ( a ) and  7 ( b ) respectively. As can be seen, FIG.  7 ( a ) can not show long and deep effect of the avenue. Although with perspective correction, FIG.  7 ( b ) does show some effect of a long and deep avenue, it is not as faithful as the result shown in FIG.  6 . 
     Although this invention has been described with a certain degree of particularity, it is to be understood that the present disclosure has been made by way of preferred embodiments only and that numerous changes in the detailed construction and combination as well as arrangement of parts may be restored to without departing from the spirit and scope of the invention as hereinafter set forth.