Abstract:
The invention generates the water grids in each of the visible range of the water wave maps and the third dimension coordinates according to the intersecting points. The third dimension coordinates are corresponded to the actual water height. Finally, the invention generates a water surface having the wave change according to the third dimension coordinates. And the invention can obtain the information of the water height dynamically, generate the water surface image having the light change, including the effect of reflection and refraction, according to the information of the water height, and make the water image corresponding to the actual water.

Description:
This application claims priority to Taiwan Patent Application No. 095147440 filed on Dec. 18, 2006 of which the contents are incorporated herein by reference in its entirety. 
     CROSS-REFERENCES TO RELATED APPLICATIONS 
     Not applicable. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to an apparatus, a method, and a computer readable medium thereof for drawing a 3D water surface. More specifically, it relates to an apparatus, a method, and a computer readable medium thereof for drawing a 3D water surface according to an actual water surface height. 
     2. Descriptions of the Related Art 
     With the growth of the science and technology, the life of people depends on the science and technology more and more. The 3D animation frequently appears in movies and computer games nowadays. Due to the maturity of the image technology, a picture of the 3D animation almost approximates the real-world view. Among 3D images, the image of a water surface is one of difficult 3D images to present. In addition to the wave shape of the water surface, there is also light change on the water surface. Hence, it is one important step to generate a reflection effect and a refraction effect of the water surface. In general, the reflection effect and the refraction effect are generated based on the following equation:
 
 C   result   =F (θ)* C   reflect +(1 −F (θ))* C   refract   (1)
 
wherein C result  is the color of the water surface, C reflect  and C refract  are the reflection color and the refraction color respectively, and F(θ) is Fresnel coefficient. Generally speaking, the reflection can be divided into two parts: the environment reflection C environment  and the object reflection C localreflect . They can be represented by the following equation;
 
 C   reflect   =C   environment   +C   localreflect   (2)
 
C environment  and C localreflect  are mapped on the water surface via reflection vectors and projection vectors. To further show the change of the depth of the water, the refraction colors of the object in the water also need considering. The following equation can be used:
 
 C   refract   =e   −f(y)   *C   objectcolor +(1 −e   −f(y) )* C   watercolor   (3)
 
wherein C objectcolor  is the original color of the object, C watercolor  is the color of the object in the water, and e −f(y)  is a ratio coefficient for mixing the two colors.
 
       FIG. 1  is a conventional apparatus  1  for drawing a water surface image. The apparatus  1  comprises a database  10 , a reflection image generation module  11 , a refraction image generation module  12 , and an image mergence module  13 . The database  10  stores a water wave map  16 . The reflection image generation module  11  and the refraction image generation module  12  respectively generate a reflection image  14  and a refraction image  15  according to a fixed water height, wherein the fixed water height is the surface when the water is calm. After that, the image mergence module  13  utilizes the equation (1) to merge the water wave map  16 , the reflection image  14 , and the reflection image  15  into a water surface image  17 . 
     The conventional apparatus  1  does not consider the actual water surface height when the reflection image  14  and the refraction image  15  are generated. More particularly, the conventional apparatus  1  sets the water surface height, y axis, is always 0 to generate the reflection image  14  and the refraction image  15 . However, it only occurs when the water is calm. If the water has big waves, the errors of displaying the image of the water surface occur. As the  FIG. 2  shows, bubbles  21 , supposed to be around a rock  20 , is not around the rock  20  and a refraction  22  of the part of rock  20  under the water apparently breaks off the position of the rock  20 . Another error as shown in  FIG. 3  is that the conventional apparatus  1  erroneously determines the refraction as the reflection  30 . The errors shown in  FIG. 2  and  FIG. 3  occur because the reflection image and the refraction image are generated according to the fixed water height, but not the actual water height. 
     Consequently, how to represent an actual water surface and make the 3D animation is closer to the real water to increase the value of the 3D animation industry is still an object for the industry to endeavor. 
     SUMMARY OF THE INVENTION 
     One objective of this invention is to provide an apparatus for drawing a water surface. The apparatus comprises a map mergence module, a first generation module, a coordinate generation module, and an image generation module. The map mergence module is used to merge a plurality of water wave maps into a merged water wave map. The first generation module is used to generate a plurality of first water grids in a visible range of each of the water wave maps and generate a plurality of second water grids in the visible range of the merged waves map, wherein each of the first water grids and the second water grids has a two-dimension coordinate. The coordinate generation module is used to generate a plurality of corresponding third-dimension coordinates according to the two-dimension coordinates of the first water grids. The image generation module is used to generate the water surface according to the corresponding third-dimension coordinates and the two-dimension coordinates of the second water grids. 
     Another objective of this invention is to provide a method of drawing a water surface. The method comprises the following steps: merging a plurality of water wave maps into a merged water wave map; generating a plurality of first water grids in a visible range of each of the water wave maps, wherein each of the first water grids has a two-dimension coordinate; generating a plurality of second water grids in the visible range of the merged waves map, wherein each of the second water grids has a two-dimension coordinate; generating a plurality of corresponding third-dimension coordinates according to the two-dimension coordinates of the first water grids; and generating the water surface according to the corresponding third-dimension coordinates and the two-dimension coordinates of the second water grids. 
     Yet a further objective of the invention is to provide a computer readable medium for storing a computer program. The computer program makes an apparatus to execute a method for drawing a water surface image. The method comprises the following steps: merging a plurality of water wave maps into a merged water wave map; generating a plurality of first water grids in a visible range of each of the water wave maps, wherein each of the first water grids has a two-dimension coordinate; generating a plurality of second water grids in the visible range of the merged waves map, wherein each of the second eater grids has a two-dimension coordinate; generating a plurality of corresponding third-dimension coordinates according to the two-dimension coordinates of the first water grids; and generating the water surface according to the corresponding third-dimension coordinates and the two-dimension coordinates of the second water grids. 
     The invention is capable of dynamically obtaining the information of the actual water surface height and generating a water surface image according to the information of the actual water surface height. If there are objects under or above the water surface, such as rocks, boats, or whales, the invention further generates the reflection image and the refraction image thereof according to the information of the actual water surface height. The reflection image, the refraction image, and the water surface image are all merged to create a more realistic 3D picture in order to increase the value of the 3D animation industry. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic diagram of a conventional apparatus for drawing a water surface. 
         FIG. 2  is a 3D picture drawn with the conventional apparatus. 
         FIG. 3  is another 3D picture drawn with the conventional apparatus. 
         FIG. 4  is a schematic diagram of a first embodiment of the invention. 
         FIG. 5  is an oscillogram of sine waves. 
         FIG. 6  is a schematic diagram of a water surface in view of human eyes. 
         FIG. 7  is a flow chart of a second embodiment of the invention. 
         FIG. 8  is a flow chart of step of generating the water grids in the second embodiment. 
         FIG. 9  is a flow chart of a third embodiment of the invention. 
         FIG. 10  is a flow chart of the step of generating the water grids in the third embodiment. 
         FIG. 11  is a 3D picture drawn with the invention. 
         FIG. 12  is another 3D picture drawn with the invention. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     A first embodiment of the invention is shown in  FIG. 4 , which is a schematic diagram of an apparatus  4  for drawing a water surface. The apparatus  4  comprises a map mergence module  400 , a first generation module  401 , a coordinate generation module  402 , and an image generation module  403 . The map mergence module  400  receives a plurality of water wave maps  404 , wherein the water wave maps  404  are pre-generated. Most of the water wave maps  404  in the art, generated by a CPU, are sine wave maps, cosine wave maps, and/or fast Fouier transform wave maps. If the water wave maps  404  are the sine wave maps, simply one of the water wave maps  404  used to generate the water waves is dull. As shown in  FIG. 5 , sine waves  500  and  501  are carried in the different water wave maps  404 . As one can observe, only one of the sine waves  500  and  501  to represent the waves of the water surface looks unreal because, in the real world, the waves of the water surface are not so regular. If the sine waves  500  and  501  are merged into a merged sine wave  502  by adding them, the merged sine wave  502  is closer to real water waves. So the map mergence module  400  is used to merge the water wave maps  404  into a merged water wave map  405 , wherein the merged water wave map  405  is a 2D map. 
     As shown in  FIG. 6 , when human beings look down at a water surface  602 , an actual water surface  607  represents in the eyes due to an angle of view. The shape of the actual water surface  607  is approximately a trapezoid which is defined by four apexes  603 ,  604 ,  605 , and  606 . However, it is difficult to do the following process based on the trapezoid. Therefore, the first generation module  401  converts the actual water surface  607  into a rectangle grid map  608 . More particularly, the apexes  609 ,  610 ,  611 , and  612  of the rectangle grid map  608  correspond to the apexes  603 ,  604 ,  605 , and  606 , respectively. The rectangle grid map  608  comprises a lot of grids each of which has a two-dimension coordinate, wherein the two-dimension coordinate corresponds to the coordinate of the water surface image in x-axis and z-axis. 
     More particularly, the first generation module  401  comprises a retrieval module  408  and a grid generation module  409 . The retrieval module  408  generates four first reference points  410  on the boundary of the actual water surface  607  of each of the water wave maps  404 . In particular, the first reference points  410  are the apexes of the actual water surface  607 , i.e., the apexes  603 ,  604 ,  605 , and  606  in  FIG. 6 . Then, the first reference points  410  are transmitted to the grid generation module  409 . Furthermore, the retrieval module  408  also generates four second reference points  411  on the boundary of the actual water surface  607  of the merged water wave map  405 . Similarly, the second reference points  411  are the apexes of actual water surface  607 , i.e., the apexes  603 ,  604 ,  605 , and  606  in  FIG. 6 . Then, the second reference points  411  are transmitted to the grid generation module  409  as well. In conclusion, the retrieval module  408  is used to define the actual water surface  607  on the water wave maps  404  and the merged water wave map  405  respectively and retrieve four apexes from the actual water surface  607  of each map. 
     The grid generation module  409  converts the actual water surface  607  of the water wave maps  404  and the merged water wave map  405  into the grid maps  608 . Next, the grid generation module  409  uses a pixel shader to generate the first water grids  406  in the corresponding rectangles, as the grids in the grid map  608 , according to the first reference points  410 , wherein each of the first water grids  406  has a two-dimension coordinate in x-axis and z-axis. Furthermore, the grid generation module  409  generates the second water grids  407  in the corresponding rectangle, as the grids in the grid map  608 , according to the second reference points  411 , wherein each of the second water grids  407  has a two-dimension coordinate in x-axis and z-axis. 
     According to the two-dimension coordinate of each of the first water grids  406 , the coordinate generation module  402  generates a third dimension coordinate  412  for each of the first water grids  406  based on the following equation: 
               H   w     =       ∑     i   =   0     n     ⁢     tex   ⁢           ⁢   2   ⁢     D   ⁡     (       wave   i     ,         V     ρ   ⁢           ⁢   os       .   xz     /     scale   i         )                 
wherein H W  is the third dimension coordinate in y-axis, i.e., the actual water surface height with reference to the water wave, wave i  is the corresponding water wave map, V pos .xz is the two-dimension coordinate of the first water grids  406 , and scale i  is a pre-determined constant, wherein the pre-determined constant scale i  is defined by users to control the frequencies of ripples. In addition, the objects in the water are reflected and/or refracted by the water. To consider the reflection and refraction effect, the coordinate generation module  402  generates a third-dimension world coordinate  414  indicating a height difference between vertexes of the objects and the actual water surface height according to two-dimension world coordinates  413  of the vertexes, wherein the two-dimension world coordinates  413  are converted by a vertex shader.
 
     Then, the image generation module  403  generates a water surface based on the vertex shader according to the two-dimension coordinate of the second water grids  407  and the third dimension coordinate  412 . And the image generation module  403  further determines the vertexes of the objects are under or above the actual water surface according to the two-dimension world coordinates  413 , height coordinates of the vertexes, and the third-dimension world coordinates  414 , wherein the height coordinates are converted by the vertex shader. After that, the image generation module  403  further generates a reflection image and a refraction image for the objects. Finally, with the usage of the pixel shader, the image generation module  403  merges the water surface, the reflection image, and the refraction image into a water surface image  415  which shows light changes. 
     A second embodiment of the invention is shown in  FIG. 7 , which is a method for drawing a water surface. First, step  700  is executed to receive a plurality of water wave maps, wherein the water wave maps are pre-generated. Step  701  is then executed to merge the water wave maps into a merged water wave map which approximates real water waves, wherein the merged water wave map is a 2D map. 
     Steps  702  and  703  are executed to generate the first water grids and the second water grids respectively. More particularly, as shown in  FIG. 8 , step  702  can be divided into the following steps. Step  800  is first executed to generate four first reference points on the boundary of the actual water surface of each of the water wave maps. In particular, the first reference points are the apexes of the actual water surface, i.e., the apexes  603 ,  604 ,  605 , and  606  in  FIG. 6 . Then, step  801  is executed to use a pixel shader to generate the first water grids, as the grids in the grid map  608 , according to the first reference points. Each of the first water grids has a two-dimension coordinate in x-axis and the z-axis. Hence, step  801  is to convert the actual water surface of the water wave maps into grid maps. Step  703  is similar to step  702  to generate the second reference points, and then to generate the second water grids, as the grids of the grid map  608 , according to the second reference points. The second reference points are the apexes of the actual water surface of the merged water wave map, such as the apexes  603 ,  604 ,  605 , and  606  in  FIG. 6 . Each of the second water grids has a two-dimension coordinate in x-axis and the z-axis. 
     According to the two-dimension coordinate of each of the first water grids, step  704  is executed to generate a third dimension coordinate for each of the first water grids based on the following equation: 
     
       
         
           
             
               H 
               w 
             
             = 
             
               
                 ∑ 
                 
                   i 
                   = 
                   0 
                 
                 n 
               
               ⁢ 
               
                 tex 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 2 
                 ⁢ 
                 
                   D 
                   ⁡ 
                   
                     ( 
                     
                       
                         wave 
                         i 
                       
                       , 
                       
                         
                           
                             V 
                             
                               ρ 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               os 
                             
                           
                           . 
                           xz 
                         
                         / 
                         
                           scale 
                           i 
                         
                       
                     
                     ) 
                   
                 
               
             
           
         
       
     
     To consider the reflection and refraction effect, step  705  is executed to generate a third-dimension world coordinate indicating a height difference between vertexes of the objects and the actual water surface height according to two-dimension world coordinates of the vertexes, wherein the two-dimension world coordinates are converted by a vertex shader. 
     Next, step  706  is executed to generate a water surface according to the two-dimension coordinate of the second water grids and the third dimension coordinate of each of the first water grids. After that, step  707  is executed to generate the reflection image and the refraction image according to the two-dimension world coordinates, the third-dimension world coordinates, and height coordinates of the vertexes, wherein the height coordinates are converted by the vertex shader. Finally, step  708  is executed to generate the water surface image which shows light changes according to the water surface, the reflection image, and the refraction image. 
     In addition to the steps in  FIG. 7  and  FIG. 8 , the method of the second embodiment is able to execute of all the operations in the first embodiment. Those skilled in the art can straightforwardly realize how the second embodiment performs these operations and functions based on the above descriptions of the first embodiment, and thus no unnecessary detail is given. 
     A third embodiment of the invention is shown in  FIG. 9 , which is a method for drawing a water surface applied to the apparatus  4 . The method is executed by a computer program which is stored in a computer readable medium. In step  900 , the computer program has code for the map mergence module  400  to receive the water wave maps. In step  901 , the computer program has code for the map mergence module  400  to merge the water wave maps into the merged water wave map. Then step  902  and  903  are executed in which the computer program has code for the first generation module  401  to generate the first water grids and the second water grids, respectively. To execute step  902 , the computer program has code to execute the following steps shown in  FIG. 10 . In step  1000 , the computer program has code for the retrieval module  408  to generate the four fist reference points on the boundary of the actual water surface  607  of each of the water wave maps. Then, step  1001  is executed in which the computer program has code for the grid generation module  409  to use the pixel shader to generate the first water grids according to the first reference points. Each of the first water grids has a two-dimension coordinate in x-axis and the z-axis. Step  903 , similar to step  902 , the computer program has code for the retrieval module  408  to generate the four the second reference points, and the computer program has code for the grid generation module  409  to generate the second water grids according to the second reference points. Each of the second water grids has a two-dimension coordinate in x-axis and the z-axis. 
     According to the two-dimension coordinate of each of the first water grids, step  904  us executed in which the computer program has code for the coordinate generation module  402  to generate a third dimension coordinate for each of the first water grids based on the following equation: 
     
       
         
           
             
               H 
               w 
             
             = 
             
               
                 ∑ 
                 
                   i 
                   = 
                   0 
                 
                 n 
               
               ⁢ 
               
                 tex 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 2 
                 ⁢ 
                 
                   D 
                   ⁡ 
                   
                     ( 
                     
                       
                         wave 
                         i 
                       
                       , 
                       
                         
                           
                             V 
                             
                               ρ 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               os 
                             
                           
                           . 
                           xz 
                         
                         / 
                         
                           scale 
                           i 
                         
                       
                     
                     ) 
                   
                 
               
             
           
         
       
     
     To consider the reflection and refraction effect, step  905  is executed in which the computer program has code for the coordinate generation module  402  to generate the third-dimension world coordinate indicating a height difference between vertexes of the objects and the actual water surface height according to the two-dimension world coordinates of the vertexes. 
     Next, step  906  is executed in which the computer program has code for the image generation module  403  to generate the water surface according to the two-dimension coordinate of the second water grids and the third dimension coordinate of each of the first water grids. After that, step  907  is executed in which the computer program has code for the image generation module  403  to generate the reflection image and the refraction image according to the two-dimension world coordinates, the third-dimension world coordinate, and the height coordinates of the vertexes. Finally, step  908  is executed in which the computer program has code for the image generation module  403  to generate the water surface image  415  which shows light changes according to the water surface, the reflection image, and the refraction image. 
     In addition to the steps in  FIG. 9  and  FIG. 10 , the method of the third embodiment is able to execute of all the operations in the first embodiment. Those skilled in the art can straightforwardly realize how the third embodiment performs these operations and functions based on the above descriptions of the first embodiment, and thus no unnecessary detail is given. 
     The computer readable medium can be a floppy disk a hard disk, an optical disk, a flash disk, a tape, a database accessible from a network or a storage medium with the same functionality that can be easily thought by people skilled in the art. 
     The invention can dynamically obtain the information of the actual water surface height and generate the water surface image according to the information of the actual water surface height. When there are objects under or above the water surface, the invention further generates the reflection image and the refraction image according to the information of the actual water surface height and merges the reflection image, the refraction image, and the water surface image. As shown in  FIG. 11  and  FIG. 12 , the present invention makes the bubble in the right position, and makes the refraction correctly shown. 
     The above disclosure is related to the detailed technical contents and inventive features thereof. People skilled in this field may proceed with a variety of modification and replacements based on the disclosures and suggestions of the invention as described without departing from the characteristics thereof. Nevertheless, although such modification and replacements are not fully disclosed in the above descriptions, they have substantially been covered in the following claims as appended.