Abstract:
To provide high-speed volume rendering without computing the points at which a viewing ray intersects with the boundaries of a volume data area. Visualizing a volume entails: selecting the exterior faces that face toward a viewing point from among a plurality of exterior faces of a volume data area, sorting the ones thus selected according to distance from the viewing point, selecting those exterior faces in the sorting order, and determining pixels on a projection plane corresponding to the exterior faces in question by scan conversion; computing pixel values along each viewing ray passing through each pixel for each corresponding exterior face until a final exterior face is encountered; such a final exterior face can be judged from information on many partial solids restricting the volume data area; when a viewing ray enters the volume data area again, pixel values to be added later on another exterior face are computed and added to the previous pixel values; the completion of processing of all exterior faces facing toward a viewing point is tantamount to the completion of processing all viewing rays.

Description:
This is a continuation of application Ser. No. 08/078,715 filed Jun. 17, 1993 now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the invention 
     This invention relates to an apparatus that visualizes three-dimensionally distributed data by applying graphics technology, and its method. 
     This invention enables the volume rendering of irregular lattice data at high speed. Irregular lattice data is numerical data (volume data) defined on partial solid objects (cells) arranged arbitrarily in a three-dimensional space. Volume data of this type is standard in the field of structural analysis and is becoming of wider use also in the field of computational fluid dynamics, as commonly found in the results of finite element analysis. Again, volume rendering is a technique for computer graphics effective for global visualization of scalar fields defined in a three-dimensional space. 
     2. Description of the Related Art 
     The following has been published as the volume rendering methods for irregular lattice data: 
     (1) Ray Tracing Method 
     The ray tracing method consists of the steps of generating a ray traveling from a viewing point past each pixel and integrating volume data along the ray. For a concrete algorithm, refer to Koyamada&#39;s article, &#34;Volume Visualization for the Unstructured Grid Data,&#34; SPIE Vol. 1259, pp. 14-25, 1990 or Garrity&#39;s article, &#34;Raytracing Irregular Volume Data,&#34; Computer Graphics, Vol. 24, No. 5, pp. 35-40, 1990. Generally, ray tracing enables generation of images of high quality. Yet, much computation time is required for judging the intersection of the ray with an exterior face, which has had a large effect on the overall computation time required for volume rendering. 
     (2) Polygonal Approximation 
     The polygonal approximation method is designed for the effective use of three-dimensional graphics processors that process existing triangle primitives. First, original volume data is expressed as an aggregate of triangle data. Then color values and opacity are rated with respect to the vertices of triangles, and the rated results are imaged as an aggregate of triangles with the color values and opacity at each vertex by use of a graphics processor. For a concrete algorithm, refer to Shirley&#39;s article, &#34;A Polygonal Approximation to Direct Scalar Volume Rendering,&#34; Computer Graphics, Vol. 24, No. 5, pp. 63-70, 1990. This method requires that such triangles have been sorted in advance in the direction of a viewing ray. When there are concave zones (hollows or holes) in original irregular lattice data, sorting may be impossible. If such irregular lattice data is simply sorted according to triangular barycenters, for instance, it is very likely for an ordering error to occur. This error would have a large effect on the quality of generated images. An attempt to sort such data accurately would incur a sharp increase in processing time. Moreover, the linear interpolation of color values and opacity within a triangular surface produces a large effect on the quality of generated images. The linear interpolation of color values and opacity which in themselves do not vary linearly onto triangles results in blur independent of the data distribution in its proper sense. 
     Also, Japanese Patent Application No. 4-48799 is a patent application relevant to this invention. The invention in this application is such that the constituent facets of cells are all sorted, and hence is distinguished from the present invention. 
     SUMMARY OF THE INVENTION 
     In volume rendering, it is a general practice to specify the nearest exterior face that intersects with a viewing ray, and to compute pixel values while tracing cells in sequence along the viewing ray from there. An exterior face is defined as a constituent facet of a cell that is shared with no other cell. In the course of tracing a cell, the viewing ray will finally go out of the volume data area (set of cells) through an exterior face. If the volume data area is concave, the viewing ray traveling outside the volume data area may enter the volume data area again through another exterior face. For this reason, it is generally necessary to further judge intersections with other exterior faces, even with regard to viewing rays that are temporarily traveling outside the volume data area. This intersection test must be conducted for each viewing ray, and the computation time for such intersection tests notably contributes to overall volume rendering time. 
     In this invention, exterior faces whose normals are directed toward a viewing ray are sorted in the direction of the viewing ray and are arranged in order of proximity to the viewing ray. (This corresponds to the case where the order of viewing ray searching is from front to back (FTB) along a viewing ray. In the case where this order is from back to front (BTF) along a viewing ray, exterior faces whose normals are directed counter to the viewing ray are sorted in the opposite direction to the viewing ray and are arranged in order of remoteness from the viewing ray.) Even in this case, simple sorting may still result in an ordering error, though the probability of this is relatively low compared with sorting that covers a whole tetrahedral cell. This is because the number of exterior faces whose normals are directed toward a viewing ray and that overlap as viewed from the same direction is still fewer than the number of tetrahedral cells that overlap as viewed from the direction of a viewing ray. 
     In this invention, the exterior faces thus sorted are then fetched in sequence, and each surface is subjected to scan conversion on a screen. On the screen, points of intersection are determined on the assumption that a viewing ray will intersect with the corresponding exterior face within the range where this surface exists. Related pixel values are then computed until the viewing ray goes out of the volume data area, while tracing the cells within the volume data area with these points of intersection as points of departure. The result is stored in a frame buffer for each pixel before proceeding to the processing of the next exterior face. If the volume data area is concave, a re-entry is made through another exterior face on the same viewing ray. The values in the frame buffer serve as initial values for pixel value computation in such a reentry. The frame buffer values thus finally obtained become the results of volume rendering. 
     One of the important points of this invention is that viewing ray searching, which used to be performed in viewing ray units, has been changed to searching in sorted exterior face units. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a general block diagram of the overall configuration of an embodiment of this invention; 
     FIG. 2 is an explanatory drawing of the volume data shown in FIG. 1; 
     FIG. 3 is an explanatory drawing of the behavior of the scan conversion subsystem 3 shown in FIG. 1; 
     FIG. 4 is an explanatory drawing of the behavior of the brightness computing subsystem 4 shown in FIG. 1; and 
     FIG. 5 is an explanatory drawing of the brightness computing subsystem 4 shown in FIG. 1. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 is a general block diagram of an image generator to which this invention is applied. The image generator achieves high-speed volume rendering on the basis of irregular lattice data, and consists of a preprocessor 1, an exterior face sorting subsystem 2, an exterior face scan conversion subsystem 3, and a brightness computing subsystems 4 as shown in FIG. 1. The preprocessor 1 includes a gradient computing subsystem 1a, a distance computing subsystem 1b, and a coordinate transformation subsystem 1c. Each block will be detailed later. Each subsystem is supplied input by or generates output as primary volume data 5a, secondary volume data 5b, tertiary volume data 5c, a rendering table 6, and frame buffers 7. Each subsystem is a module operating under the control of an IBM 3090/VM computer system, and the input/output of these subsystems occupies an area of the storage space of the IBM 3090. Collectively the subsystems comprise a computer programs product that can be stored on a variety of computer readable media such as tape and magnetic disk. 
     (1) Input/output of Subsystems 
     The following describes the input/output of each subsystem. The input/output includes volume data 5a, 5b, 5c, a rendering table 6, and frame buffers 7. 
     (a) Volume Data (Irregular Lattice Data Transformed into Tetrahedral Models) 
     As shown in FIG. 2, the primary volume data 5a consists of a tetrahedron list 8, lattice point information 9, and exterior face data 10. These are basically the same as those described in Koyamada et al&#39;s article, &#34;Volume Rendering Method for Finite Element Method Results--Air Flow Visualization in a Clean Room,&#34; Transactions of Information Processing Society of Japan, Vol. 32, No. 5, pp. 560-569. The tetrahedron list 8 consists of tetrahedral cell constituent lattice point IDs and adjacent tetrahedral cell IDs. The lattice point information 9 consists of lattice point coordinates and scalar data for each lattice point, which are denoted as X,Y,Z;S. The exterior face data 10 consists of tetrahedral cell (with exterior faces) IDs and interior face IDs representing exterior faces. Letting the four lattice points constituting a tetrahedron be G1, G2, G3, and G4, its interior faces (triangles) are defined as follows: 
     inside-surface 1= G2, G3, G4!, 
     inside-surface 2= G4, G1, G2!, 
     inside-surface 3= G4, G1, G2!, 
     inside-surface 4= G1, G2, G3! 
     The above-mentioned primary volume data 5a is processed by the preprocessor 1, so that secondary volume data 5b is generated. The secondary volume data 5b is processed by the sorting subsystem 2, so that tertiary volume data 5c is generated. 
     (b) Rendering Table 
     The rendering table 6 consists of a color table, an opacity table, and camera data. In the color table and opacity table, the range from the maximum to the minimum of scalar data values is divided into suitable intervals, which are each represented as a serial natural number (ID). Also, the ratios of colors (red, green, and blue) and opacity (as an index of the difficulty of transmission of light) are described in correspondence to each ID. As to camera data, it is necessary to describe the information (a viewing point, a view reference point, image size, and an up vector to be transformed to the Y-axis of a screen coordinate system) required for the determination of a matrix of transformation to the screen coordinate system and the number of sampling points to be arranged along a viewing ray. 
     (c) Frame Buffers 
     The frame buffers 7 store interim results or final results (red, green and blue) of brightness computation, as will be described later. For FTB only, these buffers store the interim results of opacity computation accumulated as a viewing ray advances. A storage capacity of eight bits is required to store each component (red, green, blue, and opacity) per pixel. The size of the buffers depends on the image size described as camera data. 
     (2) Subsystems 
     The following explains how the subsystems behave. 
     The gradient computing subsystem 1a computes a gradient vector (denoted as &#34;VX, VY, VZ&#34;) for each lattice point on the basis of the lattice point IDs of a tetrahedral cell, lattice point coordinates, and scalar data for each lattice point. The distribution of scalar data (S) in a tetrahedral cell is described as S=a+ax*X+ay*Y+az*Z, where a, ax, ay, and az are determined by the coordinate values and scalar values at four lattice points. Therefore, a gradient vector in a tetrahedral cell is computed as (VX,VY,VZ)=grad(S)=(ax,ay,az), which is constant for the tetrahedral cell in question. In this subsystem, the results of computation for each tetrahedral cell are distributed to each lattice point and are added. The sum is then divided by the number of cells connecting to each lattice point, to find an average. 
     The distance computing subsystem 1b computes distance from a viewing point as described in the camera data at each lattice point and stores the result in memory as distance data (S). 
     The coordinate transformation subsystem generates a screen coordinate system by multiplying lattice point coordinates described in the global coordinate system by a coordinate transformation matrix created on the basis of the camera data. How to create a coordinate transformation matrix on the basis of camera data is common knowledge. One such method is dealt with in &#34;Computer Display Aided Graphics Processing Engineering,&#34; Fujio Yamaguchi, Nikkan Kogyo Shinbunsha, pp. 161-172. 
     Secondary volume data 5b is generated by the gradient computing subsystem 1a, distance computing subsystem 1b, and coordinate transformation subsystem 1c mentioned above. The sections enclosed in rectangles in block 5b show newly generated data. 
     The sorting subsystem 2 rearranges the values of the exterior face data stored at random in storage according to distance from a viewing point in an ascending order. Tertiary volume data 5c is thus generated. The section enclosed in a rectangle in block 5c shows modified data. 
     The scan conversion subsystem 3 expands data concerning a triangle whose vertices are each represented in a screen coordinate system in a sequence of points whose coordinate values on a screen plane are integers. This subsystem will be detailed later. 
     The brightness computing subsystem 4 computes brightness values (R, G, B) and opacity α (for FTB) at screen coordinates output from the scan conversion subsystem 3 by reference to a given tetrahedral model rendering table and stores the results in the frame buffers 7. The computation of brightness and opacity will be detailed later. 
     (3) Exterior Face Scan Conversion 
     The following describes scan conversion. 
     Within a range where there is an exterior face (triangle) on a screen, a point of intersection is computed by a digital differential analyzer on the assumption that a viewing ray will intersect with the exterior face. Such methods of computing points of intersection, inclusive of DDAs, are termed scan conversion in the broad sense of the term. Scan conversion on a BTF occasion is effected in ascending order of priorities determined in the sorting subsystem 2, whereas scan conversion on an FTB occasion is effected in descending order of priorities. Exterior face scan conversion is conducted in the following way. 
     In FIG. 3, there is an exterior face (triangle), where a straight line is drawn through the second vertex from above in parallel to the X-axis with respect to the Y-axial direction of the screen coordinate system, so that the exterior face is divided into two parts and a fourth vertex is added. Apart from the numbers assigned to the triangle from the outset, the vertex with the lowest Y coordinate is named V1 and the vertex with the highest Y coordinate is named V4. Also, the two vertices in the same scanning line (a straight line with a constant y) between V1 and. V4 are named V2 and V3, where V2 is less than V3 in terms of X coordinates. When one scanning line is raised, a variation in the X-coordinate of the point of intersection with the side V1V2 and a variation with respect to the side V1V3 are determined in advance. Prior to this processing, all values in the buffer α (the alpha component of the frame buffers) must be initialized to their maximum values when FTB viewing ray searching is carried out. 
     With respect to the scanning line from  yp1! (=y) to ((yp2)) (=y), where yp1 and yp2 are the Y coordinates of vertex V1 and V2 respectively, the brightness computing subsystem 4 computes brightness values from a point (x, y) (x: an integer) within the range xs,&lt;&gt;x&lt;xe, where xs is the point of intersection of side V1V2 and xe is the point of intersection of side V1V3. This will be detailed later. The  p! denotes the least integer greater than or equal to p, and ((p)) denotes the greatest integer not exceeding p. 
     (4) Brightness Computation 
     The following explains how to compute brightness values. 
     Pixel values are computed from a point of intersection obtained by scan conversion as a point of departure while tracing the cells in the volume data until a viewing ray goes out of the volume data. The discrete brightness equations given below are solved while searching for tetrahedral cells including point (x,y) in succession in the direction of a viewing ray or in the opposite direction departing from a tetrahedral cell interfacing with an exterior face under scan conversion. ##EQU1## 
     Brightness values (ri, gi, bi) and opacity αi are computed at a sampling point i (marked with black dots in FIG. 4; i=0 represents the sampling point nearest to a viewing ray, whereas i=n represents the sampling point farther from the viewing ray) preset along a viewing ray, and then the resulting values are substituted for the above equations. Such searching for tetrahedral cells may be continued until the viewing ray reaches an exterior face, by reference to adjacent cell information included in the given tetrahedral model. 
     For BTF view ray searching, the following equations apply: 
     
         Rnew=ri*αi+Rold*(1-αi) 
    
     
         Gnew=gi*αi+Gold*(1-αi) 
    
     
         Bnew=bi*αi+Bold*(1-αi) 
    
     When the viewing line reaches an exterior face, the interim brightness values (Rold, Gold, and Bold) of red, green, and blue are stored in the frame buffers. 
     For FTB viewing ray searching, on the other hand, the following equations apply: 
     
         Rnew=Rold+ri*αi*αold 
    
     
         Gnew=Gold+gi*αi*αold 
    
     
         Bnew=Bold+bi*αi*αold 
    
     
         new=αold*(1-αi) 
    
     On a FTB occasion, once an exterior face is reached, the interim results of opacity, as well as brightness values, are also stored as old in the frame buffers. 
     At the i-th sampling point in the viewing ray, the corresponding brightness values (ri,gi,bi) and opacity αi are determined as below. (See FIG. 5.) 
     With reference to FIG. 5, interpolational computation of gradient vector, scalar data, and distance data is carried out at each point of intersection (entry point and exit point) of a tetrahedral cell, including a sampling point, with a ray of light. Prior to this interpolational computation, the area coordinates of these points on a triangular surface, including an entry point and an exit point, must be determined in advance. These area coordinates are used as weights on the lattice point data in doing interpolational computation. The area coordinates (AP, AQ, AR) of a point X on the triangle PQR are as follows: 
     
         AP=ΔXQR/ΔPQR, AQ=ΔXRP/ΔPQR, AR=ΔXPQ/ΔPQR 
    
     Letting data defined at points P, Q, R, and X be FP, FQ, FR, and FX, respectively, we obtain: 
     
         FX=Ap*FP+AQ*FQ+AR*FR 
    
     A gradient vector and scalar date are computed by dividing the above-mentioned data by the distance from an entry point to a sampling point or the distance from a sampling point to an exit point. This computation is carried out by making use of the principle that scalar data is linearly distributed in any direction within a tetrahedron. Brightness values (ri,gi,bi) are computed on the basis of data values (Si) interpolationally computed at each sampling point, a gradient vector (Vxi, Vyi, Vzi), a suitable optical model, and a color table. Opacity αi, on the other hand, is determined from data values interpolationally computed at each sampling point in light of an opacity table. For details on the method of computation, refer to Koyamada&#39;s article, &#34;Volume Visualization for the Unstructured Grid Data,&#34; SPIE Vol. 1259, pp. 14-25, 1990. 
     Similar brightness computation is carried out also with regard to the upper triangle (V2, V3, V4). By carrying out the above-stated processing on all exterior faces, volume rendering images are created on a screen. 
     As has been described so far, this invention consists of sorting exterior faces facing toward a viewing ray or sorting exterior faces facing counter to a viewing ray, determining pixels on a projection plane corresponding to those exterior faces by scan conversion in the sorting order, computing brightness values along the viewing ray passing through these pixels until the viewing ray goes out of the volume data area, and thus determining pixel values. When the volume data area is concave, a viewing ray may enter the volume data area again after it goes out of the volume data area once. In such a case, similar computation is carried out with respect to the boundaries of the entry point and the result of the computation is added to the previous value, so accurate brightness values can be computed. This invention obviates the need to run a test as to whether a viewing ray interests with a boundary, though it entails scan conversion in exterior face units. Moreover, this invention obviates the need to run a test as to whether a viewing ray enters the volume data area again, and thus enables brightness values to be computed accurately and easily.