Solid model generation by span method using dividing cubes

Abstract: A span processor receives volumetric data from an imaging apparatus and stores the data as a condensed display list in a span memory. After the volumetric data has been stored, the span processor converts the display list to a display list comprised of points and normal vectors which is stored in a point and normal display list memory. A model clipping circuit determines points which are to be displayed corresponding to desired model cut planes. A rotate circuit transforms the point and normal display list according to the desired orientation, and also converts the normal vectors into levels of shading according to the direction of the normal vector. The points in the transformed display list are clipped to a desired screen viewing region by a screen clipping circuit. A depth buffer, compare circuit, and an AND circuit determine voxels which do not lie behind other surfaces, and are proper to display. The AND circuit allows update of the depth buffer and an image memory buffer, the image memory buffer being a screen map. The image memory is displayed on a monitor. The models are manipulated and cut much more rapidly on a low end workstation than would be possible using conventional methods.

Description: CROSS REFERENCE TO RELATED APPLICATIONS This application is related to EP-A-0576193 - System for 3D Scan Conversion of a Polygonal Model Into A Point and Normal Format, Displayed Utilizing an Accelerator Circuit, EP-A-0549183 - System For Displaying Solid Cuts For Surfaces of Solid Models and EP-A-6549182 - Apparatus and Method For Displaying Surgical Cuts in Three-Dimensional Models all filed simultaneously with this application, and all assigned to the present assignee. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a three-dimensional (or 3D) graphics workstation and more specifically a three-dimensional graphics workstation which can rapidly manipulate surface models displayed as solids. 2. Description of Related Art Conventional computer graphic methods transform solids into a number of polygons, usually triangles, which approximate the surface of a solid model, called a surface model. These triangles are defined by vertex points (x,y,z) and a normal vector (n x ,n y ,n z ) indicating a direction normal to the surface that is being simulated. Usually a large number of triangles are required to define a surface. Another method of displaying a surface is to use actual three-dimensional data sets which are then processed to determine the difference in values of adjacent volume elements ("voxels"), that define a surface. This method requires a large amount of memory and powerful processors. The large amount of memory adds to the cost of the device, while the processing requirement reduces the speed in which the image is produced. When the image is cut or rotated, the image must be redrawn. This leads to a time lapse between each frame. This becomes important when the user desires a real-time or near real-time manipulation of the model. Currently there is a need for a device which can manipulate solid models and display them in near real-time which do not require a large amount of memory, or powerful processors. Polygonal models may be generated by conventional computer aided design/computer aided manufacture (CAD/CAM) systems or from volumetric data as described in the "marching cubes" method of U.S. Patent 4,710,876, System and Method for the Display of Surface Structures Contained Within the Interior Region of a Solid Body by Harvey E. Cline and William E. Lorensen issued Dec. 1, 1987, assigned to the present assignee and hereby incorporated by reference. These polygonal models may then be displayed by a conventional method described above. Another method of displaying models called the "dividing cubes" method. The method begins with volumetric data and creates a surface model described by a number of points and normals vectors associated with each point rather than polygons. The "dividing cubes" method has been used to display the surfaces of volume medical data and is described in U.S. Patent 4,719,585, Dividing Cubes System and Method for the Display of Surface Structures Contained Within the Interior Region of a Solid Body by Harvey E. Cline, Siegwalt Ludke, and William E. Lorensen, issued Jan. 12, 1988 ("Dividing Cubes") assigned to the present assignee and incorporated by reference. This method allows much more rapid rotation and display of a model as compared to conventional display methods, and requires far less processing power. In certain situations, such as for surgical planning, it is necessary to determine if a model is inside or outside of another model. Surgical planning is the simulation of surgery on a graphics workstation using actual data acquired from the subject to be operated on. Surface models created by conventional methods may create a surface that only partially encloses an internal region. This is called an open surface model. In this case, it is difficult to determine if another model, not intersecting the surface, extends into the internal region of the open surface model. If one model simulates a scalpel and another simulates tissue of a subject, it would be difficult to determine if the scalpel has cut into the tissue if at least one model is an open surface model. Surface models which define a closed continuous surface and surround a region are known as closed surface models. Intersection between closed surface models can be determined. If, however, a closed surface model is bisected and a portion of the surface is removed, such as is the case in surgical planning, it becomes an open surface model thereby incorporating all of the simulation problems encountered with open surface models. Open surface models are therefore difficult to use in solid modeling such as surgical planning. It would be useful to create models which identify an internal region associated with a model instead of only the surfaces of the internal region, that is easily manipulated and displayed. Medical Physics Vol. 15 No. 3, May 1988 New York USA, pages 320 - 327, describes two algorithms for three-dimensional reconstruction of tomograms using a normalised gradient technique. SUMMARY OF THE INVENTION According to the invention, there is provided a graphics workstation and method for manipulating a volumetric data set as defined in claims 1 and 5 Thus it is a feature of the present invention to provide a method of solid modelling which can be used in surgical planning and that identifies an internal region associated with a model that is easily manipulated and displayed. Another feature of the present invention is to provide a graphics workstation which can display solid models and manipulate them in near real-time. Another feature of the present invention is to provide a method that makes it practical to manipulate solid models on processor roughly the size and power of a personal computer. Another feature of the present invention is to provide a method of displaying solid models which does not require a large amount of memory as compared with conventional computer graph imaging methods. Another feature of the present invention is to provide a method of storing image data in condensed form for a graphic workstation. Another feature of the present invention is to make manipulation of solid models practical on a relatively low-power workstation by reducing processing time. Another feature of the present invention is to provide a workstation that provides capability to manipulate and display volumetric data models. The graphics workstation of the invention incorporates a custom circuit to create and manipulate solid models from volumetric data obtained from an imaging apparatus. An imaging apparatus such as magnetic resonance imaging (MRI), computed actual tomography (CAT), positron emission tomography (PET), etc. scans a subject to create volumetric data which is sent to a span processor. The span processor searches the volumetric data for spans of solid material of internal models, and condenses the data by storing the data in a hierarchical fashion in the span memory as a display list. The models are stored as spans of a solid model instead of a surface model. The span processor converts the display list to a point and normal display list and stores it in a point and normal display list memory. A user employs input devices to select planes in which to cut the structures in the model, three-dimensional orientation of the model, and screen cut planes which define a workstation viewing region. A model clipping circuit determines points within the model cut planes. A rotate circuit rotates point and normal vectors in the point and normal display list and determines shading based upon the orientation of the normal vector at each point. A screen clipping circuit determines points within a region defined by screen cut planes. A display circuit displays a three-dimensional image of multiple surfaces that are within the desired display region and the screen cut planes. The workstation is capable of displaying the models as shaded three-dimensional solid surfaces redrawn at a rate of several times per second on a low power graphics workstation, allowing near-realtime manipulation. BRIEF DESCRIPTION OF THE DRAWINGS The invention will now be described in greater detail, by way of example, with reference to the drawings in which: Fig. 1 is a simplified block diagram of the system of the present invention. Fig. 2 is an illustration of a model to be displayed intersecting a model clip box and a screen clip box according to the present invention. Fig. 3 shows a volumetric data layer representing a cross-section through a subject, with a number of spans and scan lines superimposed across the data layer. Fig. 4 is an illustration of 'neighbor' voxels used in calculating a normal vector. Fig. 5a and 5b together are a flow chart of the method by which the scan processor converts volumetric data into a display list. Fig. 6 is a hierarchical diagram illustrating the structure of the display list. DETAILED DESCRIPTION OF THE INVENTION In Figure 1 an imaging apparatus 10 acquires three-dimensional (3D) volumetric data of a subject 1 to create a set of three-dimensional volumetric data of subject 1 which is passed to a span processor 32. Span processor 32 scans the volumetric data received from imaging apparatus 10 to determine interface points (x,y,z) between different types of materials within volumetric data. Span processor 32 determines the beginning and end of a solid portion, defined as a span, and stores a number of spans as a display list in span memory 30. For purposes of rapid display, span processor 32 converts the display list to a closed surface model (not shown) comprised of points (x,y,z) and normal vectors associated with each point (n x ,n y ,n z ). The point and normal display list is stored in point and normal display list memory 20 of accelerator board 5. Many elements of the accelerator board are similar to elements shown and described in U.S. Patent 4,985,834 System and Method Employing Pipelined Parallel Circuit Architecture For Displaying Surface Structures of the Interior Region of a Solid Body by Harvey E. Cline, Richard I. Hartley, Siegwalt Ludke and Sharbel E. Noujaim issued Jan. 15, 1991 assigned to the present assignee and hereby incorporated by reference. With reference to Figs. 1 and 2, a user actuates a model cut plane input device 40 to select sections through a model 2 to be displayed, the sections being the model cut planes 206. These planes are defined in reference to model 2 and remain fixed with respect to model 2 throughout rotation of model 2. The user actuates orientation input device 50 to select a three-dimensional orientation of model 2 in space, and actuates a workstation view input device 60 to select screen view planes 212 to cut through model 2. Screen view planes 212 remain fixed with respect to a monitor 250 screen and the X,Y,Z coordinate system (workstation space), but change relative to model 2 and the X',Y',Z' coordinate system (model space) as the model is rotated. The parameters from input devices 40, 50, 60 are used to manipulate and display portions of the 3D model. A model clipping circuit 70 receives the model cut planes 206 from input device 40 and determines a model clip box 208 defined by the model cut planes 206. Model clipping circuit 70 then compares each point (x,y,z) in display list memory 20 to determine if it is within model clip box 208. If a point (x,y,z) lies within model clip box 208, a select line 80 connecting model clipping circuit 70 and an AND circuit 220 is set 'high' by circuit 70. A rotate circuit 130 receives the orientation input parameters from orientation input device 50 and creates a 4X4 transformation matrix. Both point (x,y,z) and the normal vector (n x ,n y ,n z ) are transformed by rotate circuit 130 to yield a transformed point (x',y',z') 140 and a pixel intensity used for shading the image. Rotate circuit 130 transforms the point (x,y,z) and the normal vector (n x ,n y ,n z ) according to the following equations: x' = m 11 x + m 12 y + m 13 z + m 14 y' = m 21 x + m 22 y + m 23 z + m 24 z' = m 31 x + m 32 y + m 33 z + m 34 pix = m 41 n x + m 42 n y + m 43 n z where "m 11 ... m 43 " are matrix elements calculated to orient and translate the model and pix is the calculated pixel intensity used to shade the surface. (Matrix element m 44 is 0.) Rotate circuit 130 passes the rotated coordinate (x',y') along an address bus 90 to both a depth buffer memory 180 and an image buffer memory 190. The coordinate (x',y') is used as an address of both memories. Rotate circuit 130 also passes the pixel intensity pix along bus 135 to image buffer memory 190. A screen clipping circuit 150 receives the screen view planes 212 from workstation view input device 60 and creates a screen clip box 214 similar to the model clip box 208, but which is stationary with respect to the screen of monitor 250. The transformed point (x',y',z') 140 is compared to the screen clip box 214 in the space of the workstation. If point (x',y',z') 140 is within screen clip box 214, line 160 connecting screen clipping circuit 150 to AND circuit 220 is set 'high' by circuit 150. A display circuit 7 displays exposed surfaces of an image created from the transformed points within the desired region. The image resembles a solid object with superficial surfaces being visible and surfaces which lie behind the superficial surfaces being hidden. The display circuit is comprised of depth buffer memory 180, AND circuit 220, image buffer memory 190 and a compare circuit 210. Compare circuit 210 receives a depth coordinate z' along a bus 200 and compares the depth z' with a present value in the depth buffer 180 at address (x',y'). If the depth z' of the present point (x',y',z') is closer to the viewer (i.e., has a smaller value) than the previous depth stored in depth buffer memory 180 at address (x',y'), then compare circuit 210 sets a depth line 202 connected to AND circuit 220 'high'. AND circuit 220 sets an 'update' line 225 connected to both the depth buffer memory 180 and image buffer memory 190 'high' when it senses lines 80, 160 and 202 all being 'high', causing the pixel intensity pix to be stored at address (x',y') of the image buffer memory, thereby shading an image displayed on monitor 250. This also causes depth z' to be stored at address (x',y') of depth buffer memory, thereby updating the present depth at address (x',y'). After each display list in the model has been processed, the shaded 3D image is transferred to monitor 250 for display. As shown in Fig. 1, span processor 32 receives a layer of volumetric data originally obtained from imaging apparatus 10. This layer, as shown in Fig. 3, pertains to one plane of data, for example, data for all values of x and y coordinates having a constant z coordinate and represents a section through subject 1. Initially volumetric data from imaging apparatus (10 of Fig. 1) is refined by splitting the volumetric data into smaller cubes and interpolating two intermediate data layers to produce refined data layers to be used in calculating 'neighbor' voxels. A next refined data layer is interpolated by span processor 32 of Fig. 1. In Fig. 3 a refined data layer 300 is shown composed of a material 303 which differs from the adjoining materials 302 and 304. Surface 301 is the interface between materials 302 and 303. Similarly, surface 305 is the interface between materials 303 and 304, all contained within the refined volumetric data. All voxels along a line in the x direction are a single scan line such as scan line 350. The span processor processes voxels a scan line at a time for a given y and z coordinate such as scan line 310 for example. Other scan lines 350 and 370 are shown for different y coordinates. Span processor 32 determines volume elements or "voxels" that intersect surfaces, such as voxels 320, 330 and 340 intersecting surface 305. These are referred to as interface voxels. Scan line 310 is comprised of one span through model 300 starting at voxel 320 and ending at voxels 330 and 340 encompassing a solid material 303. A span is a line segment inside a model defined by a number of points and normal vectors where the scan line intersects the surfaces of the model, even if the surfaces are internal surfaces such as surface 301. Spans define points inside the solid, unlike a surface model wherein only points on a surface are defined. Once an interface voxel has been determined, its normal vector must be calculated. The method of calculating the normal vectors is explained in more detail in the aforementioned "dividing cubes" patent 4,719,585. Briefly, this method requires choosing a present voxel to be processed and finding the 'neighbor' voxels to the present voxel. In Fig. 4, voxel 320, being the present voxel, is shown in an enlarged three-dimensional view with 'neighbor' voxels. The 'neighbor' voxels are an upper voxel 502 immediately above the present voxel, a lower voxel 504 immediately below the present voxel, front 506 and rear 508 voxels immediately in front of, and behind the present voxel respectively, and a left 510 and right 512 voxel immediately to the left and right of the present voxel,respectively. These 'neighbor' voxels are data entries from the refined data layers. Span processor 32 of Fig. 1 finds a data entry at each point associated with each 'neighbor' voxel in the refined data layers and interpolates a voxel value for each 'neighbor' voxel. Span processor 32 then subtracts the lower voxel value from the upper voxel value to arrive at a z vector difference, then subtracts the right voxel value from the left voxel value to arrive at an x vector difference, and then subtracts the front voxel value from the rear voxel value to arrive at a y vector difference. Span processor 32 next adds the x, y and z vector differences to arrive at a vector sum, and then normalizes the vector sum to a unit vector (n x ,n y ,n z ) by conventional methods. Each of the differences obtained from the 'neighbor' voxels subtractions represents a gradient of the voxel values, and when added the vector sum indicates the direction of a vector normal to the surface. Each of the scan lines, such as scan line 350 of Fig. 3, is processed by the span processor. Thus, interface voxels for scan line 350 are voxels 355, 360, 362, and 364. Voxel 355 is the first voxel of the first span in scan line 350, and voxel 360 indicates the end of the first span of the same scan line. Voxel 362 indicates the beginning of the second span in scan line 350 with voxel 364 indicating the end of the second span. Similarly, the voxels which intersect surfaces in scan line 370 are voxels 380, 382, 384, 386, and 390. Since the interface points are important in producing solid models, and the remaining points can be produced from the interface points, only the interface points need to be stored to create a solid model. Span processor 32 of Fig. 1 condenses volumetric data into a display list and stores the list in span memory 30 of Fig. 1 according to the steps of the flow chart of Figs. 5a and 5b, with points A, B and C of Fig. 5a joined to points A, B and C of Fig. 5b, respectively. Volume data from imaging apparatus 10 of Fig. 1 is interpolated to create two refined data layers from the received volume data at step 602. At steps 604 and 606, the first layer of data corresponding to all x and y locations for a first z location is selected. Refined data for the next layer used in defining 'neighbor' voxels is interpolated at step 608. At step 610 a counter nscans is set to the first scan and the first scan line is selected at step 612. At step 614 a counter counting the number of scans per present scan line is reset. At step 616 a first voxel in the present scan line of the present data layer is selected and is tested at step 618 to determine if it is at an interface between two differing materials. If the present voxel is not an interface voxel, a determination is made at step 620 as to whether the present voxel is the last voxel in the scan line. If the present voxel is not the last voxel in the present scan line, a next voxel is chosen as the present voxel at step 622 and processing continues at step 618. If the present voxel is the last voxel in the present scan line, a counter representing the number of spans nspans is stored at step 624 in a temporary memory, which is unused portion of either point and normal display memory 20 or span memory 30 of Fig. 1. Only counters which represent a non-empty set are stored. If the present voxel is an interface voxel, neighbor voxels are found at step 626. A z vector difference is calculated by subtracting the upper voxel value from the lower voxel value at step 628. An x vector difference is calculated by subtracting the right voxel value from the left voxel value at step 630. And a y vector difference is calculated by subtracting the rear voxel value from the front voxel value at step 632. Vector addition is executed at step 634 by adding the z, x and y vector differences to arrive at a vector sum. The vector sum is normalized at step 636 to result in a unit vector (n x ,n y ,n z ) normal to the surface at point (x,y,z) within the present voxel. At step 640 the x coordinate and the normal vector (n x ,n y ,n z ) of the present voxel is stored in the temporary memory. At step 642, whether the present voxel is the last voxel in the span is determined. If the present voxel is the last voxel in the span, a counter counting the number of voxels nvoxels in a span stores this number in the temporary memory at step 646 and is reset at step 648; a counter representing the number of spans in a scan line is incremented and processing continues at step 620. If the present voxel is not the last voxel in the span, the counter is incremented at step 644 and processing continues at step 620. At step 624, a count nspans representing the number of spans in a scan line is stored in the temporary memory. At step 652 a determination is made as to whether the present scan line is the last scan line in the present data layer. If the present scan line is the last scan line, the count representing the number nscans of scan lines is stored in the temporary memory at step 660 and processing continues at step 662. If the present scan line is not the last scan line and at least one intersecting voxel was found in the present scan line, the count nscans is incremented, and the y coordinate is stored in the temporary memory at step 656. The y coordinate is incremented making the next scan line the present scan line at step 658, and processing continues at step 616. At step 662 a determination is made as to whether the present data layer is the last data layer. If the present data layer is not the last data layer, a count nlayers is incremented if at least one intersecting voxel has been found in the present data layer. The z coordinate is incremented to cause the next data layer to be the present layer and processing continues at step 608. If the present data layer is the last data layer, the count nlayers representing the number of layers having at least one interface voxel is stored in the temporary memory at step 668. Finally, at step 670, the data stored in the temporary memory is rearranged and stored in the hierarchical format of Fig. 6 in span memory 30 of Fig. 1. The hierarchical structure of Fig. 6 eliminates much of the redundant data and allows the surface information to be stored in a compact form, thereby reducing the amount of memory required. The display list contains a number of layers or layer data sets equal to nlayers. Each layer data set has a unique z coordinate. Each scan line data set is comprised of a number of spans equal to, nspans, each at a unique y coordinate for a data layer. Each span has a number of intersecting voxels equal to nvoxels. Each intersecting voxel has a normal vector associated with it and a unique x coordinate for a given scan line. By storing the data in the order shown in Fig. 6, only an x coordinate and a normal vector are repeated for each voxel of a span instead of all x, y, z coordinates and normal vectors, thereby reducing the memory required. Similarly, only one y coordinate needs to be stored for each scan line, data set and one z coordinate needs to be stored for each layer data set. Points that are not interface points are not stored, further reducing the memory required. Referring now to Figs. 1 and 6, span processor 32 converts the display list to a point and normal display list to be stored in point and normal display list memory 20 of accelerator board 5. Span processor 32 first reads value nlayers from span memory 30 representing a number of data layers in the display list. For the first data layer, span processor 32 next treads nscans relating to the number of scan lines in the data layer, together with the z coordinate for this data layer, from span memory 30. Span processor 32 then reads the y coordinate and the number of spans, nspans, in the first scan line. Span processor 30 next reads the number of voxels, nvoxels, contained in the first span, and reads an x coordinate and a normal vector for each voxel in the span, from span memory 30. Span processor 32 linearly interpolates the coordinates and normal vectors of regularly spaced intermediate points from the points and normal vectors (n x ,n y ,n z ) of the present span. The resulting intermediate points and normal vectors are stored in display list memory 30 for fast rendering. Scan processor 32 repeats this process for all spans, nspans, in a scan line, all scan lines, nscans, in a data layer and all data layers, nlayers, in the display list. After all the volumetric data has been scanned by span processor 32 and stored as a display list in span memory 30, solid models can be generated and manipulated in near real-time. Since the models created by the present invention more closely resemble solid models instead of empty surface models, they can be cut and intersected with other solids more quickly and without the uncertainty of prior art methods, resulting in an efficient solid manipulation tool. While several presently preferred embodiments of the invention have been described in detail herein, many modifications and variations will now become apparent to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and variations as fall within the scope of the invention claimed.

Claims: A graphics workstation for manipulating a volumetric data set to display three-dimensional surface images of a subject represented by the data set comprising a first input device (40) for defining model cut planes of the subject, a second input device (50) for defining a three-dimensional orientation of the subject in space , a third input device (60) for defining screen views planes to cut through the subject and a monitor (250) for displaying graphic images charactenized by a) a span memory (30) for receiving and storing the volumetric data set produced by the data from the first, second and third input devices b) a span processor (32) for receiving the volumetric data set and processing the volumetric data set to create a span list that is more compact than the volumetric data set, the span processor havingmeans for storing the data set in the span memory, for reading the span list from the span list memory and for converting the span list to a point and normal display list (20) comprised of point - (x',y',z') and corresponding normal vectors (n x ,n y ,n z ); and comprising i) means for reading a value from span memory indicating the number of scan lines; ii) means for reading a y coordinate for a scan line and a plurality of spans in this scan line from the span memory; iii) means for reading a value from the span memory indicating the number of voxels in this span; iv) means for reading a location along the scan line and a normal vector (n x ,n y, n z ,) for all voxels in each span; v) means for linearly interpolating a set of regularly spaced coordinates for a set of intermediate points between the coordinates for this span; vi) means for linearly interpolating a normal vector for each intermediate point from the normal vectors (n x n y ,n,) read for the present span; vii) means for storing the interpolated coordinates along with corresponding normal vectors as a display list memory for fast rendering; viii) means for repeating steps "iii" - "vii" for all spans in this scan lines; and ix) means for repeating steps "ii" - "vii" for all scan lines in the data set and c) an accelerator board (5) employing a depth buffer (180), the accelerator board being adapted for receiving (10) the model cut planes, three dimensional orientation (130), screen view planes (150), and point and normal display list and adapted to create a three-dimensional shaded image of a solid surface from the point and normal display list according to the model cut planes, the three-dimensional orientation, and the screen view planes, and to display the image at a rate of several times per second on the monitor. The graphics workstation of claim 1 wherein the accelerator board comprises: a) a point and normal display list memory (20) adapted for storing point and normal display lists; b) a model clipping circuit (70) responsive to said point and normal display list memory and said first input device (40) for creating a signal indicating when a point (x,y,z) is within a region specified by model cut planes defined by the first input device; c) a rotate. circuit (130) responsive to said point and normal display list memory (20) and said second input device (50) for transforming each point (x,y,z) and normal vector (n x ,n y ,n z ,) in the point and normal display list according to the three-dimensional orientation received from the second input device to a transformed point (x',y',z') having an address (x',y'), a depth Z, and a pixel intensity pix; d) a screen clipping circuit (150) responsive to said rotate circuit (1 30) and said third input device (60) for creating a signal indicating when a transformed point (x',y',z') is within the region defined by screen view planes received from the third input device; e) a display circuit (180, 210, 220, 190) for forming a three dimensional (M) image of multiple surfaces from the transformed point (x',y',z') and the pixel intensity, pix, in response to signals received from the model chipping and screen clipping circuits and for passing the 3D image to the monitor to be displayed. The graphics workstation of claim 1 or 2 wherein the display circuit comprises. a) a depth buffer memory (180) coupled to the rotate circuit (130) for receiving an address (x',y') from the rotate circuit and storing a depth at address (x',y'); b) a compare circuit (210) coupled (200) to the rotate circuit (130) and the depth buffer memory (180), said compare circuit being adapted to, (1) receive a signal representing the depth z' from the rotate circuit, (2) read the present depth stored in address (x',y') of the depth buffer memory and compare it to depth z' received from the rotate circuit, and (3) create a signal indicating whether depth z' is closer to the user than the present depth stored in the depth buffer memory; (c) and AND circuit (220) adapted to (1) receive a signal from the model clipping circuit indicating if the point (x',y',z') is within the region defined by the model cut planes, (2) receive a signal from the screen clipping circuit indicating if the point (x',y',z') is within the region defined by the screen view planes, and (3) receive the signal from the compare circuit, and (4) create an update signal indicating when point (x',y',z') is within both the regions defined by the model cut planes and the screen view planes and has a depth z' less than the depth in the depth buffer memory at address (x',y'); and (d) an image buffer memory (190) having an address corresponding to each point of the display monitor, said image buffer memory being adapted to receive the address (x',y') and the signal indicating the pixel intensity pix from the rotate circuit, to receive the update signal created by theAND circuit, and to store the pixel intensity pix at address (x',y') creating an image to be displayed on the monitor. The graphics workstation of any one of claims 1 to 3 including a three-dimensional imaging apparatus coupled thereto and comprising one of the group consisting of a positron emission tomography system, a magnetic resonant imaging system, a computerized axial tomography system, a three-dimensional ultrasound system, and a three-dimensional RADAR system, and a three-dimensional digital data source for providing volumetric data to define said surface model. A method of converting a span list to a point and normal display list, said span list listing spans comprising line segments where the scan line intersects the surfaces of a model, the method comprising the steps of: a) reading a value from span memory indicating the number of scan lines; b) reading a y coordinate for a scan line and a plurality of spans in this scan line from the span memory; c) reading a value from the span memory indicating the number of voxels in this span; d) reading a location along the scan line and a normal vector (n x ,n y n z ,) for all voxels in each span; e) linearly interpolating a set of regularly spaced coordinates for a set of intermediate points between the coordinates for this span; f) linearly interpolating a normal vector for each intermediate point from the normal vectors (n x n y ,n,) read for the present span; g) storing the interpolated coordinates along with corresponding normal vectors as a display list memory for fast rendering; h) repeating steps "c" - "g" for all spans in this scan lines; and i) repeating steps "b" - "h" for all scan lines in the data set.

Inventors: CLINE HARVEY ELLIS, LORENSEN WILLIAM EDWARD, LUDKE SIEGWALT, CLINE, HARVEY ELLIS, LORENSEN, WILLIAM EDWARD, LUDKE, SIEGWALT
Applicants: GEN ELECTRIC, GENERAL ELECTRIC COMPANY
Application year: 1992
Main classification: G06T17
IPC codes: G06T15, G06T17