WO2003058405A2 - Using runs of cells to traverse a ray through a volume - Google Patents
Using runs of cells to traverse a ray through a volume Download PDFInfo
- Publication number
- WO2003058405A2 WO2003058405A2 PCT/US2003/000240 US0300240W WO03058405A2 WO 2003058405 A2 WO2003058405 A2 WO 2003058405A2 US 0300240 W US0300240 W US 0300240W WO 03058405 A2 WO03058405 A2 WO 03058405A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- order
- voxels
- ray
- run
- runs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—Two-dimensional [2D] image generation
- G06T11/20—Drawing from basic elements
- G06T11/23—Drawing from basic elements using straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/20—Function-generator circuits, e.g. circle generators line or curve smoothing circuits
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
Definitions
- PCT/US02/2471 1 claims priority from U.S. provisional patent application 60/309,926, Stephenson, et al., Process and apparatus for line drawing, filed 3 August 2001.
- PCT/US02/39716 claims priority from U.S. provisional patent application 60/341,503, Stephenson, et al., Process and apparatus for anti-aliased line drawing, filed 13 December 2001, and US provisional patent application 60/341,194, Stephenson, et al., Process and apparatus for line drawing in parallel, also filed 13 December 2001.
- the invention relates generally to techniques for determining which cells of a raster a particular line intersects.
- the cells of the raster are represented in the memory of a computer system and the computer system's processor makes the determination.
- the cells of the raster may generally represent a set of locations.
- the locations may be pixels in a display, and when they are, the techniques may be used to determine which pixels in the display represent the particular line, and thus to generate the line in the display.
- the flat panel or cathode ray tube display devices typically used with computer systems are raster devices, that is, the display area is made up of a large number of picture elements, or pixels, which are arranged in a grid.
- the location of any pixel in the display can be specified by its row and column in the grid. Varying the color and intensity of the pixels in the grid makes the image that the display device displays.
- FIG. 9 is a high-level overview of a computer system with a raster display device.
- the main components of system 901 are a processor 911 with memory 903 to which processor 903 has access and a monitor 915 for which processor 911 generates displays.
- Monitor 915 is a raster display device and as such, has a grid of pixels 917.
- Within memory 903 are stored bitmap 909, bitmap drawing code 985, and bitmap data 907.
- Bitmap 909 is an area of memory that corresponds to grid of pixels 917. Each item of data in bitmap 909 corresponds to a pixel in grid of pixels 917.
- Drawing code 985 is code for drawing graphical entities such as lines or polygons in bitmap 909.
- Bitmap data 907 is data, typically supplied by a user program, which bitmap drawing code 985 uses to draw a graphical entity. For example, if a user program wishes to specify a line, it will typically indicate the start and end coordinates of the line in grid of pixels 917 and drawing code 985 will use that information to draw a corresponding line in bitmap 909.
- Processor 911 then reads from bitmap 909 to generate an image for display on grid of pixels 917.
- a display generator component 913 of processor 911 reads bitmap 909 and produces the actual signals for monitor 915 from the data in bitmap 909. It should be noted here that the task of producing a display 917 may be distributed in many different ways across hardware and software components, with the amount of hardware increasing as performance demands increase.
- FIG. 10 shows why.
- FIG. 10 shows a representation in pixels 1001 of the line 1003 that is described by the
- intersection pattern for the line.
- a line's intersection pattern depends not only on the line's slope, but also on the location of its endpoints relative to the grid of pixels.
- the intersection pattern for any straight line has regular features that can be used in drawing the straight line in a raster display or analyzing a straight line that is displayed in a raster display.
- the intersection pattern for line 1003 is a sequence of pixels.
- the next pixel has either the coordinates (a+l,b) or (a+l,b+l). Which of the two possibilities the next pixel has depends on where the line intersects the current pixel. To draw a line one pixel at a time, one need only determine for each pixel where the line intersects the current pixel and use that information to determine which of the two possible positions to give the next pixel.
- the intersection pattern includes groups of adjacent pixels that have the same y coordinate. Such a group of pixels is called a run.
- One such run of three pixels is shown at 1005.
- An examination of the runs in FIG. 10 shows that they have only two lengths: a short length 107, which is here two pixels, and a long length 1009, which is here three pixels.
- the general rule is that the runs of an intersection pattern will have only two lengths, and these lengths will be consecutive integers.
- the lengths of the long and short runs for any given line can be computed as follows:
- line 1003 contains 41 pixels and 17 runs.
- intersection pattern 1004 of line 1003 shows that the long and short runs themselves occur in repeating patterns.
- intersection pattern 1004 there is a repeating pattern of a long run (I followed by two short runs (s) followed by a long run followed by one short run, or Issls, as shown at 1011 and 1013.
- Issls a repeating pattern of a long run followed by two short runs (s) followed by a long run followed by one short run, or Issls
- intersection pattern 1004 the complete sequence of runs is Islslsslslslss; therefore we have singularly occurring runs / separating sequences of shorts runs s + and the intersection pattern is constructed of runs of runs with the shape ls + .
- the terminology of runs of runs is cumbersome so let us define these runs of runs to be second order runs. Where a run is defined by its position and length, a second order run is defined by its position, its length is defined by the number of runs which comprise it, and its shape is determined by whether there are more long or short runs in the pattern.
- runs By analogy with second order runs, we can define runs to be first order runs and pixels to be zero order runs.
- the number of second order runs must be the same as the number of long runs in the pattern by definition. If there are n long runs in the line there are a runs to divide amongst n second order runs. Therefore, if the division is to be as even as possible the length of a short second
- the second order runs appear at 1011 and 1013 in intersection pattern 1004. There are more short runs 1013 than long, so the second order runs have the shape ls + , i.e., one long run followed by a sequence of short runs. There are three long runs 1011 of length three and four short runs 1013 of length two.
- IA length 3 ' + 1 3 .
- the shape of the order 3 runs is s + l.
- the hierarchical description of ordered runs within the intersection pattern will be bounded, as the intersection pattern is eventually repeated if a and d are not coprime.
- the numerator sequence is a sequence of the numerators of the fractions .
- the line is at least — from any lattice point. If the value of ⁇ is raised d slowly, the intersection pattern will remain unchanged until the line crosses or intersects a
- FIG. 11 gives an example. At 1001, the figure shows the intersection pattern of the line
- the numerator sequence for order 0 of 1001 is shown at 1109 and that for order 0 of 1101 at 1111.
- the pixels 1104 to the right of this value are denoted by light gray and the pixels 1103 to
- the shifting of the intersection pattern due to the introduction of a non-zero intercept has a number of side effects.
- the initial and final run of any order may be truncated. This occurs when the numerator of the intercept is not in the numerator sequence of that order.
- p w a - 17. Therefore the initial value of the order 0 numerator sequence will not be the same as the initial value of the order 1 numerator sequence and the initial and final runs of order 1 will be truncated.
- DDA works at the pixel level. Initially, floating-point x and y increments are computed. The x increment is the difference between the ending and starting x coordinates divided by the line's length and the y increment is the difference between the ending and starting y coordinates divided by the line's length. Each time a pixel is set, the current x and v coordinates, which are floating point values, are converted to integers and the pixel is set at the cell defined by the increment. Then the x increment is added to the x coordinate and the y increment is added to the y coordinate.
- a difficulty with any pixel-by-pixel approach is that it requires a determination where the next pixel will be placed relative to the last pixel for each new pixel.
- this determination is a floating-point operation. As such, it is both expensive to perform and subject to rounding errors. Moreover, because the determination must be performed with every pixel, the rounding errors may accumulate quickly and cause the line to be drawn inaccurately.
- Run-based line drawing may also be used to solve problems that arise in efficiently representing rays that traverse three-dimensional space and in speeding traversal of the three-dimensional space by such a ray. It is an object of the present invention to provide solutions to such problems.
- the invention is a technique employed in a computer system for determining voxels in an object space that are intersected by a ray.
- the technique involves making projections of the ray on a plurality of planes in the object space, determining cells in the planes that are intercected by the projections, and using the intersected cells to determine the intersected voxels. Determining which cells are intercepted by the projections may be done using runs of cells, as explained in the parents of the present application, and runs of order 1 or greater may be employed.
- the plurality of planes may be a pair of intersecting planes which are perpendicular to each other and for which the line of intersection is the ray's major axis. Further details of this aspect include techniques for determining intersected voxels that are 26-connected and intersected voxels that are only six-connected. In the 26-connected case, the technique proceeds as follows at the beginning of the next run of voxels:
- the first order runs of cells that include the points in the projection corresponding to the beginning of the next run of voxels end at the same coordinate of the ray's major axis, the first order runs of cells together determine the next run of voxels through the end of the first order runs; but
- this aspect includes techniques for determining from the runs of cells whether the voxels intersected by the ray have edge or corner connections.
- the voxels will have an edge connection if one of the first order runs of cells has a corner connection at a point and the other does not; if both of the first order runs of cells have a corner connection at the point, the intersected voxels have a corner connection.
- the invention is a technique employed in a computer system of efficiently traversing a volume with a ray.
- the volume is subdivided into runs of voxels. Certain of the voxels in the runs are associated with data that affects rays.
- Each ray that traverses the volume intersects one or more of the first runs and it itself made up of a set of second runs of voxels.
- the technique determines for a second run of voxels belonging to a particular ray whether the second run includes a voxel of a first run that affects rays. When the second run includes such a voxel, the data associated with the voxel is examined.
- the volume has an axis which is the major axis for both the particular ray and the first runs of voxels and if there are three sets of first runs, each set having a different axis of the volume as its major axis.
- the first runs contain significant runs that include voxels that affect rays. Determining whether the second run includes a voxel from a first run that affects rays includes determining whether the second run includes a voxel of a significant run.
- aggregate information is associated with partitions of the first runs.
- the aggregate information indicates how one or more of the voxels in the partition affect rays. Determining whether the second run includes a voxel from a first run that affects ways includes using the aggregate information associated with a partition determine whether the partition contains a voxel that affects the particular ray.
- the partitions may be the significant runs. They may also be a number of sets of partitions, with the partitions in each set having a different length. The partitions to use for a particular ray are selected in accordance with the lengths of the runs in the ray.
- FIG. 1 is an overview of the manner in which lines are drawn using the techniques of the invention
- FIG. 2 is an overview of a system which draws lines using the techniques of the invention
- FIG. 3 is a flowchart of how the bitmap processor processes complete runs of pixels
- FIG. 4 is a flowchart of how the bitmap processor processes truncated runs of pixels
- FIG. 5 is a flowchart of how the bitmap processor processes a run of order 1;
- FIG. 6 is a flowchart of how the first truncated run of an order / is processed and set;
- FIG. 7 shows how the first pixel of a line is handled using the techniques of the invention
- FIG. 8 shows a flowchart of how a complete run of order is processed
- FIG. 9 shows a system in which the invention may be employed
- FIG. 10 shows the structure of a representation of a line as a set of pixels
- FIG. 11 shows the effect of a displacement of the starting point from the origin on the structure of the representation
- FIG. 12 shows an example line
- FIG. 13 shows how the first pixel of the example line is handled;
- FIG. 14 shows truncated runs of orders 1-3 in the example line;
- FIG. 15 shows the geometry of the error term and structural parameters in a run of order 1;
- FIG. 16 is a flowchart of a technique for drawing lines in parallel;
- FIG. 17 is a diagram showing the geometry of ray traversal;
- FIG. 18 is a diagram showing the geometry of the projection of a ray on planes that are perpendicular to each other and intersect at the ray's major axis;
- FIG. 19 is a first diagram showing how voxels intersected by a ray may be computed from the cells intersected by the ray's projections;
- FIG. 20 shows an algorithm for computing the voxels intersected by a ray;
- FIG. 21 is a second diagram showing how voxels intersected by a ray may be computed;
- FIG. 21 is a second diagram showing how voxels intersected by a ray may be computed;
- FIG. 22 is a third such diagram showing how edge connections appear in the projections;
- FIG. 23 is an algorithm for detecting edge connections in the voxels;
- FIG. 24 is a fourth diagram showing how corner connections appear in the projections;
- FIG. 25 is an algorithm for detecting corner connections in the voxels;
- FIG. 26 is a diagram showing an encoding run in a volume;
- FIG. 27 shows a ray traversing a volume which has been divided into encoding runs
- FIG. 29 shows an algorithm for detecting an intersection between a ray and an encoding run
- FIG. 30 shows a ray traversing a volume in which the encoding runs have been divided into a hierarchy of runs
- FIG. 31 shows an algorithm for using a hierarchy of runs to find voxels that will affect the ray.
- FIG. 1 Overview of line drawing with the invention: FIG. 1
- FIG. 1 is a flowchart [101] that provides an overview of how a line-segment may be drawn using this invention.
- Starting parameters include the maximum order of the runs to be used in drawing the lines [122] and the start and endpoints of the line [112,114].
- the maximum order can be predefined by the manufacturer of an apparatus based on the invention, calculated based on the characteristics of the system or based on the length of the line.
- the maximum order of the runs [120] is set to two.
- ( ,, y,) consists of, at most, three sets of runs of any order, i: The first truncated run of order i, the set of full-length runs of order i, and the final truncated run of order i.
- FIG. 2 Overview of the components of a system for drawing lines according to the invention: FIG. 2
- FIG. 2 shows the components of a system 201 for drawing lines according to the invention.
- the main components of system 201 are a Truncated Run Processor [102], which calculates the structure of the first truncated run of order / [202] and the structure of the hierarchy of runs [140] in the line segment, and the Run Processor [104], which calculates the length of the full length runs and the final truncated run [206].
- the Run Processor [104] calculates the length of the full length runs and the final truncated run [206].
- the Bitmap Processor is responsible for breaking the run into its composite pixels and setting each pixel into the Bitmap Memory [108].
- the Truncated Run Processor [102] is responsible for calculating the structure of the first truncated run of the desired order [120] and supplying this structure to the Bitmap Processor [106] so that the truncated run [194] can be set into the Bitmap Memory [108].
- Bitmap memory [108] may be a bit map such as bitmap 909 in FIG. 9.
- Truncated Run Processor calculates the structure of the first truncated run, it also calculates the structure of the hierarchy of runs [140] and stores this information [142] for the use by the Run and Memory Processors [104,106]. During this process if the desired maximum order of the process [120] is found to be greater than the maximum order of the hierarchy of runs in the line, the maximum order [120] is set to be the maximum depth of the hierarchy [124].
- the Truncated Run Processor Based on the start and end points of the line [110], the Truncated Run Processor also calculates and stores [132] the starting pixel position for the line [130].
- Each component of the first truncated run is calculated based on the error term [150], As each component is processed, the error term is retrieved [152], updated and stored again [154]. Once the first truncated run has been processed, the error term remaining [150] is used by the Run Processor [104] to define the full-length runs in a similar manner.
- the Run Processor [104] is responsible for calculating the length of each full-length run of the desired maximum order in the digital line. These lengths are passed to the Bitmap Processor [106] such that the runs can be set into the Bitmap Memory [108]. The length of the full-lengths is decided based on the error term [150], which is retrieved [156], updated and stored [158] to process the next full-length run. Thus, the error term is recalculated only at the beginning of each full-length run of the maximum order instead of for each pixel.
- the Bitmap Processor [106] is responsible for actually setting the runs into the Bitmap Memory [108].
- the Bitmap Processor [106] can take advantage of this function.
- the Bitmap Processor [106] also keeps a track of the current position of the line being drawn in relation to the end point of the line [110]. If the line moves reaches the end point [114], the Bitmap Processor [106] signals the Truncated Run Processor [102] or the Run Processor [104] to terminate [162] using an internally stored termination condition [160].
- the Bitmap Memory [108] is the memory representing the raster display of a graphics system, video memory, image memory or any other type of bitmap.
- the Bitmap Processor [106] handles the process of setting the pixels of the Bitmap Memory [108]. To draw the line, the Bitmap Processor is given a set of commands [194][196] to draw a collection of runs of various orders into the Bitmap Memory. The information given in the command to draw a run is the length of the run, rf , and the order of the run, / [194][196]. The position of the run in the bitmap [130], ( j ] ,y j [ ] ), is initialized [132] by the Truncated Run Processor [102] and is retrieved by the Bitmap Processor [136]. As the run is drawn, the coordinate is updated to the position of the next run of order i, and is stored for the next iteration [134].
- Bitmap Memory [108] permits the setting of runs of pixels or runs of runs, etc., the process of reducing the run of order / to runs of order i-1 can be stopped at the permitted level. Therefore, instead of setting pixels into the Bitmap Memory, runs or runs of runs can also be used.
- each run of any nonzero order i within the digital line has, at most, only two possible run lengths that are consecutive integers where the length is measured as the number of composite runs of the next lowest order, i-1.
- the runs of order 1 in the line segment (0, 0) to (41, 17) can be described by (Islslsslslslslslsss) [l] .
- a run of order can then be defined recursively by:
- a run of order 1 is the maximal set of contiguous pixels with a similar abscissa.
- a run of order i is the maximal set of contiguous runs of order i-1 such that each run has a shape ( s) [l'1] t (ls + ) [ ' ] , (s + l) [ '-", or (s ) [ " !1 , where (/ + ) [ -' ] and ( ) li'l] denote the occurrence of one or more long and short runs of order /-/ respectively.
- a run of order 2 can only possess the shape (ts) [l] or (ls*) [Ij '.
- the type of order 1, t i] is defined to be zero.
- the types of orders greater than 1 are calculated using structural parameters; the structural parameters and their calculation will be described in detail below.
- Inputs to the process are the length of the run of order i to be set [194] and the structure of the hierarchy of runs. The process will cease if the end point of the line has been reached [304].
- the pixels of the run are set directly [340] into the Bitmap Memory.
- the process of reducing the first truncated run of order k into full-length runs of order k-1 follows directly from the instructions to reduce full-length runs.
- the only variation comes from the fact that a truncated run is defined to be a run not of its full-length. Therefore at least one run of order k-1 has been truncated from the run of order k. Because this is the first run in the line, the truncated run occurs at the beginning of the run.
- the process is shown at 401 in FIG. 4.
- the inputs are the length of the run of order i that is to be set [194] and the structure of the hierarchy of runs [146].
- the process 401 will cease if the end point of the line has been reached [404].
- the pixels of the run are set directly [440] into the Bitmap Memory If the order of the run is at least 2, the run is reduced into its composite runs of the next lesser order and each run is set into the Bitmap Memory:
- FIG. 5 is a flowchart 501 showing how to set the pixels of a run of order 1 [340].
- the method requires as inputs the starting pixel [136], (x j l ] , y 1 ' 1 ), the end point of the line [114], and the length of the run [194], rf , are required.
- the starting pixel is stored and updated internally [136].
- the length of the run [194] is passed to the Bitmap Processor.
- Each pixel in the run has a similar y-coordinate, which is the y-coordinate of the starting pixel [136], yj 1] .
- the length of the run to be set [194] is changed to the difference between the x- coordinate of the start of the run being set and the ceiling of the x-coordinate of the endpoint ofthe line, rf ⁇ x ⁇ - x [404].
- the starting coordinate of the next run of order 1 in the line is calculated from the current coordinate value by incrementing the current y-coordinate of the next pixel position [430], How the first truncated run of order i in the line segment is processed by the Truncated Run Processor: FIGS. 6 and 12
- a truncated run length of order k is of course made up of run lengths of orders 0 through k- 1.
- the bits for that order are set before the next higher order is processed.
- the bits set for order i -1 will always make up the complete truncated or untruncated first run of the order i .
- the endpoints of the line segment are the real number coordinates (x ,y 0 ) and (x ⁇ ,y ⁇ )
- the slope of the line is calculated by a - (y, - y 0 )/(x i ⁇ x 0 ) [502].
- Example line 1201's endpoint (xo, yo) 1203 is (1/2,12/41) ; its endpoint (xi.yi) 1207 is (41+1/2,17+12/41) .
- the coordinates of the endpoints are rational numbers in this case, a coordinate may be any real number.
- the first step in the algorithm is to handle the pixel in which the start point of line lies as described in FIG. 13.
- the dark pixel 1301 at the start of the line will have been processed.
- l/2j 0
- the choice from these two is made using the value of the error term /J 0 0] .
- the error term is greater than or equal to the average run length of order 1 as shown at 709 in FIG. 7, the next pixel is pixel ( ° ] + 1, yQ l ] + 1) . Accordingly, the error term is also updated.
- the coordinate (x , .yj, 1 ] ) is stored as the position of the next run in the line segment [130].
- the error term ⁇ ] is stored [152] as the error term for the next run [150].
- the structure of the hierarchy of runs stores a description of each level in the hierarchy from order 1 to the defined maximum order [120].
- Each record of the description for order i stores the following entries:
- the type of the runs of order i in the line, t [k] either 0 or 1.
- FIG. 15 shows geometrically why the error parameter and the structural parameters can be used in this fashion.
- the figure shows a first-order run y of pixels 1505 representing a portion of line 1507 with slope a .
- the slope ⁇ I1] of the run is the same as the slope of the line 1507. Shown at 1503 is the last pixel of the run y " -l .
- the coordinates are the coordinates of the lower left-hand comer of the first pixel of run y; the coordinates ( ⁇ , TM ) are the coordinates of the lower left-hand comer of the first pixel of the first pixel of run j ' +l.
- the values of the error parameter and the structural parameters are defined geometrically by means of lines that are parallel to line 1507 and intersect comers of the pixels of runy.
- line 1509 intersects the upper left-hand comer of pixel 1503;
- line 1511 intersects the upper left-hand comer of the last pixel 1506 in runy ' ;
- line 1513 intersects the bottom left-hand co er of the first pixel in runy ' .
- the error parameter ⁇ ] is the distance on the line formed by the top of pixel 1506 between the intersections of lines 1507 and 1513 with that line. The greater the distance between lines 1507 and 1513, the shorter the next n must be. Moreover, since a line is drawn beginning with a partial ran of the maximum order k and the partial mn is made by beginning with a partial n of order 1, followed by a partial mn of order 2, and continuing through order k, the error term for the partial mn of order i is that resulting from order i - l.
- the structural parameter ⁇ [n is the distance on the line formed by the top of pixel 1506 between the intersection of line 1513 with the line formed by the top of pixel 1506 and the upper left-hand comer of pixel 1506.
- the stmctural parameters vary with the slope o ' 3 of the line as represented by mns of order i, and thus can be used to determine the type of order / + 1.
- FIG. 14 shows line 1201 and the pixels 1402 that will be generated to represent it according to the technique under discussion.
- At 1401 is shown how the first tmncated mn 1403 of order 1 is set;
- at 1405 is shown how the first truncated mn 1405 of order 2 is set; and
- at 1407 how the first tmncated run of order 3 is set.
- first pixel 1301 has been set and the position of the next pixel relative to first pixel 1301 has been determined as described above.
- the next step is to handle the first tmncated mn of order 1 if it exists.
- the portion on the line that will be processed is described by the dark pixels 1403.
- the initial tmncated mn of order 21405 is described by the dark pixels 1407 in line 1201.
- the initial tmncated mn of order 2 has a length of one (i.e. one mn of order 1).
- the last mn of order 1 in a mn of order 2 is a short mn of order 1.
- a short mn of order 1 has a length of two pixels. Therefore two pixels are set in this stage.
- the initial tmncated mn of order 31409 is described by the dark pixels 1411.
- the initial tmncated mn of order 3 has a length of one (i.e. one mn of order 2).
- the mns of order 3 in the line have a shape s + l , the last mn of order 2 in a mn of order 3 is a long run. Therefore we will set a mn of order 2 of length three.
- the Run Processor [104] performs the steps shown in flowchart 801.
- the inputs are the maximum order of the mns (120), the stmcture of the hierarchy of mns [146] which was determined by tmncated mn processor [102] while processing the tmncated mns, and the error term ⁇ [l] provided by tmncated mn processor [102].
- the mn processor determines the length of the mn of order i in the line and passes the mn's length and order to the Bitmap Processor [106] to set the actual pixels of the run into the Bitmap Memory [732].
- the calculation of the length of the mn of order i is based on the type of order (i) [702] and the value of the error term [150] , ⁇ f , retrieved [158] by the Run Processor [710,720]. Once the length of the mn has been calculated, the error term is updated, ⁇ f , and stored [156] .
- the values of the stmctural parameters ⁇ l ' ] and v [ ' ] and the length of a short and long mn, rf and rf , are retrieved [144] from the stmcture of the hierarchy of mns [140].
- the mn is set into memory [194] by the Bitmap Processor [106] and [732].
- the Run Processor keeps processing mns as just described until it reaches the end of the line segment [730].
- a technique similar to the 2D polygon scan conversion embodiment is used.
- a technique that is also possible is to shade the polygon using lines of constant depth. Think of a plane parallel to the view plane being used. As the plane is moved backwards through the polygon, the line of intersection between the plane and the polygon can be defined. This line has a constant depth that can be used to make the shading technique more efficient. To shade the polygon you can step along this line using the line drawing technique described setting each pixel the color calculated by the shading algorithm.
- Height field rendering Ray tracing has long been used to render height fields or elevation maps.
- the mn-based ray line drawing technique can be adapted to traverse a ray over the height field to seek an intersection with an elevation.
- the voting process requires a line of votes to be cast into an array.
- the mn-based line digitization techniques described can be used to cast the votes.
- FIG. 16 Parallel techniques for determining the cells of a raster that are intercepted by a line: FIG. 16
- An advantage of using mns of any order n to determine the cells of a raster that are intercepted by a line is that once the first tmncated mn of order n is drawn and the stmctural information about the line has been computed, it can be used to determine the positions in the raster of all of the other mns of order n of cells that are intercepted by the line. Consequently, if the hardware or software being used to determine the cells permits it, the cells belonging to the other mns of order n can be computed in parallel.
- the parallel computations can be performed by calculating each mn of order n in the cells intersected by the line in parallel; or by calculating the positions of groups of mns of order n in the cells intersected by the line in parallel and using the sequential version of the algorithm to draw each group.
- Another level of parallelism could be attained within each mn by setting multiple mns of a lower order or pixels per iteration of the sequential or parallel version of the algorithm.
- the mn of order n could be divided into mns of an order less than n, each of which could be processed in parallel.
- FIG. 16 gives an overview of how mns may be computed in parallel.
- initialization 1615 which calculates and sets the first tmncated mn of cells and then computes the starting cells of each of the full mns of order i being set, and the part 1615 that sets the full mns in parallel.
- start 1603 the first part of the initialization is done as shown in FIG. 6.
- tmncated mn processor 102 receives as inputs the endpoints of the line; from the endpoints, it calculates the line's slope and determines the starting pixel and the starting point and error term ⁇ for the first mn tmncated mn of order 1.
- the apparatus of FIG. 2 may be modified to perform the processing of FIG. 16 by replacing bitmap processor [106] with a number of bitmap processors 106(a..j), which can operate on bitmap memory 108 in parallel. Run processor 104 would then give each bitmap processor 106(i) the starting cell and stmcture parameters for the mn that bitmap processor 106(i) is to set.
- the degree of order n may be determined by the number of bitmap processors 106; for example, if there are four bitmap processors, the degree of order n may be that at which the line contains full mns and a final tmncated or untmncated ran such that the total number of the full and final mns is divisible by 4.
- the degree of order n may be determined by the designer or based on external parameters such as the length and slope of the line.
- the bitmap processors may also be able to set an array of bits in a single operation; in that case, the order whose runs best fit the array that the bitmap processor can set might be the one for which the operation is parallelized.
- ⁇ y is the intercept value of the first full length ran given at position (- , o )•
- j yy -y ⁇ - ' as the height of a mn is always one.
- ⁇ and v are the stmctural parameters described in the parent of the present application.
- j in the image given the line segment (x 0 ,v 0 )to (JC,, ,) such that L)O J ⁇ ./ ⁇ [ i 1 where o > ⁇ 0 > ⁇ > Vi ⁇ and x 0 ⁇ *, :
- Algorithm 1 illustrates a possible implementation of an order 1 algorithm.
- Algorithm 1 Calculating the length and position ofthej-th run of order 1 in the digital 10 line.
- the constants cf and cf can be calculated once in the initialization of the algorithm.
- the constants cf and cf can be calculated iteratively as each new parallel task is created from preexisting constants. Therefore each mn can be set in parallel for a cost of approximately 6 additions, a multiplication and a comparison compared to a cost of 3 additions and two comparisons for the central loop of the sequential algorithm. Hence, the overhead imposed by the parallelization of the algorithm is quickly recouped.
- migrating to a parallel implementation would add two divisions and a multiplication to the cost of initializing the algorithm and 10 additions, a multiplication and division and a comparison to the cost of calculating the length and position of each mn of order 2.
- Algorithm 2 Calculating the length and position of the y ' -th run of order 2 in the digital line.
- Algorithm 3 Calculating the length and position of they-th run of order i in the digital line.
- ran lengths Within each order the computation of ran lengths is actually an initialization and we count it as such.
- the ran positions can be computed in parallel. Each position costs 0(1) rational arithmetic operations. However, here division appears to require full precision. Assembling our accounting, we have that initialization over all orders costs O(log d) rational arithmetic operations. Idealizing slightly the partial quotients behavior of GCD, we credit order i with d 12' mns. If we allocate d 12' processors to the /-th mn, the time to compute mn positions across all orders is O(l) rational arithmetic operations.
- the order of the algorithm must be decided either by the designer or dynamically by the system itself. While the length of the mns in the digital line increases exponentially with the order of the ran, the cost of initializing an algorithm also rises, albeit linearly. Given that the cost of an iteration to decide the position and length of the next mn in the line is so small, the number of mns in the line must be significant enough to warrant using a higher order algorithm.
- FIG. 17 There are many situations where a program needs to compute the traversal of a ray through three-dimensional space.
- One example of such a program is one that produces a two- dimensional display of a three-dimensional object; another is one that determines how a signal is propagated through a volume.
- FIG. 17, which shows how ray traversal may be used to make a two-dimensional representation of a three-dimensional object, is a slightly modified version of Levoy's FIG. 2.
- the two-dimensional representation of the three-dimensional object is an image 1705 that contains P x P pixels.
- the image is effectively a "window" into an image space 1701 that contains P x P x W voxels.
- a voxel is the three-dimensional equivalent of a pixel: it is a data item that corresponds to a cell located at a point (x.y.z) in image space.
- the data in the voxel contains information about the cell; an example of such information is the color and opacity of the cell. If the color and opacity correspond to data values, the data in the voxel may also include the data values.
- image space 1701 is non-empty, it will include one or more object spaces 1703.
- Each object space has as many voxels as are required to contain all of the voxels for a particular object in image space 1701.
- Each voxel 1709 in object space 1703 contains data as required for the portion of the object represented by the voxel. It should be noted that, as shown in FIG. 2, object space 1703 may not have the same x, y, and z-axes as image space 1701, and that consequently, a ray 1711 may pass through object space 1703 at any angle relative to the axes of object space 1703.
- one or more rays 1711 corresponding to one or more pixels 1715 in the image are traced through image space 1701. If ray 1711 passes through a voxel 1709 whose data affects the appearance of that pixel, the relevant information from the voxel becomes part of sample 1713 for the pixel. When ray 1711 has completely traversed image space 1701, the information in sample 1713 is used to determine the appearance of pixel 1715.
- an image space 1701 of any size has an enormous number of voxels, and most of the voxels traversed by a particular ray 1711 are either not part of an object space 1703, and therefore provide no information to the traversing ray, or are behind an opaque voxel and can provide no information to the traversing ray beyond what was obtained from the opaque voxel.
- Efficient traversal of image space 1701 by a particular ray thus requires both efficient techniques for computing the voxels that are intersected by the ray and efficient techniques for determining which of the voxels intersected by the ray contain information that is relevant to the pixel that corresponds to the ray.
- the mn-based techniques described in the parents of the present patent application may be employed both to provide efficient computation of the voxels that are intersected by a ray and to provide efficient determination of which of the voxels intersected by the ray contain information relevant to the ray's pixel.
- the same techniques can of course be employed in other applications where the information gathered by the ray traversal has uses other than or in addition to display generation.
- FIG. 18 The techniques that are explained in detail in the following are based on the fact that a ray which is traversing a volume in which positions of points are defined relative to X, Y, and Z axes may be represented as two projections: one on the plane defined by the X and Y axes and another on the plane defined by the X and Z axes. This is shown in the diagram of FIG. 18.
- FIG. 18 shows a volume 1801 that is being traversed by a ray 1816.
- Points in volume 1801 are specified by the triplet (x,y,z), where x is a value on X axis 1803, y is a value on Y axis 1805, and z is a value on Z axis 1807.
- X axis 1803 is termed the major axis with regard to traversing ray 1816 because the direction of traversing ray 1816 is closer to that of the X axis 1803 than it is to the other two axes.
- X axis 1803 is the major axis because for any two points on ray 1816, (a,b,c) and (i,j,k), the difference ⁇ between a and i will be greater than the difference ⁇ between b andy or c and k.
- Traversing ray 1816 passes through the top and bottom of volume 1801.
- the point at which ray 1816 intersects plane 1815 is point (x(c), y(d), z(e)) 1819; the point at which the ray intersects plane 1813 is (x(0),y(a), z(b)) 1817.
- ray 1816 may be projected onto planes 1833 and 1835.
- One way of doing the projection onto plane 1833 is to construct a line on top plane 1815 which passes through point 1819 and is perpendicular to the edge of plane 1833 which intersects plane 1815, construct a line on bottom plane 1813 which passes through point 1817 and is perpendicular to the edge of plane 1933 which intersects plane 1813, and then construct the projection 1821 of the ray on plane 1833 by connecting the points at which the perpendicular lines intersect the edges.
- Projection 1827 on plane 1835 can be constructed in the same fashion.
- projections 1821 and 1827 contain all of the information needed to determine the (x,y,z) coordinates of all of the points in volume 1801 that are on ray 1816; consequently, projections 1821 and 1827 together may be used to represent ray 1819.
- a three-dimensional lattice of voxels in volume 1801 may be represented by two-dimensional lattices in planes 1833 and 1835 and the voxels intersected by ray 1816 may be determined from the lattice cells intersected in plane 1833 by projection 1821 and the lattice cells intersected in plane 1835 by projection 1827.
- Figs. 19-22 Determining cells in a two-dimensional lattice that are intersected by a line is of course the problem addressed by the techniques described in the portion of the present patent application that are carried over from the present application's parents. As set forth there, given two points within a two-dimensional lattice, it is possible to describe lattice cells that are intersected by a line connecting the two points in terms of mns and mns of mns of cells.
- the lattices are projection planes such as planes 1833 and 1835 and the lines are projections of a ray on the projection planes, then it is further possible to determine voxels intersected by the ray from the lattice cells intersected by the projection lines.
- FIGs. 19 and 20 Determining 26-connected voxels intersected by a ray: FIGs. 19 and 20
- FIG. 19 shows how to determine 26-connected voxels intersected by a ray from mns of lattice cells on the XY plane 1833 and the XZ plane 1835 that are intersected by the projections of the ray on the XY and XZ planes.
- Volume 1801 in FIG. 19 has an X-axis 1803, a Y-axis 1805, and a Z-axis 1807, with the X-axis being the major axis.
- Determining the mns in the XY plane and the XZ plane is done iteratively or in parallel a ran at a time with the corresponding runs of each traversal determining the length of the resultant mn of voxels.
- the initial mns of lattice cells intercepted by the projections onto the XY and XZ planes are calculated.
- the shorter of these two rans and the equivalent number of cells of the longer run map to the first ran of voxels intercepted by the ray.
- mn of lattice cells 1923 and the corresponding portion of mn 1929 map onto ran of voxel cells 1911.
- the remaining portion of the longer mn 1929 and a co ⁇ esponding portion of mn 1925 map onto run of voxel cells 1913.
- the remaining portion of ran 1925 and all of run 1931 are then mapped onto mn of voxel cells 1915.
- Voxels intersected by the three-dimensional line can therefore be determined by taking the length of the shorter of the two corresponding rans of cells as the length of the three-dimensional ran of voxels.
- the longer two-dimensional mn of cells is then reduced by the length of the shorter ran, which is replaced by the next two- dimensional ran in its traversal.
- the procedure is more precisely described in Algorithm 2001 in FIG. 20.
- the cells in the two-dimensional rans need only be 8-connected, i.e., by any of their four sides or four comers. Deteimininfi the 6-connected voxels intersected by a ray: FIG. 21
- the 6-connected set of voxels that the ray intersects is shown at 2117.
- Run 2119 corresponds to ran 1923 and the corresponding portion of mn 1929;
- mn 2121 corresponds to the remaining portion of mn 1929, added cell 2115, and the part of mn 1925 corresponding to the remaining portion of mn 1929.
- Run 2123 corresponds to the remaining portion of mn 1925, added cell 2107, and mn 1931. All of the voxels in set of voxels 2117 are connected to one or more other voxels in the set by their faces.
- FIGs. 22-25 With 6-connected sets of voxels that are intersected by a ray, ray-object intersection tests can be avoided if voxels in which the ray intersects only an edge or a comer of the voxel can be excluded from the 6-connected set of voxels.
- FIG. 22 shows the edge intersection case. First, the edge intersection case must be detected. For an edge intersection to occur in the set of 6-connected voxels intercepted by the ray, a comer intersection must occur in one of the two-dimensional sets of mns. This is shown in FIG. 22, where two-dimensional set of mns 2205 that intersects projection 2201 has a comer intersection 2209 between mns
- the distance ⁇ between the projection and the comer of the next mn is considered. If the distance is non-zero, no edge intersection occurs. If it is zero, an edge intersection occurs and no voxel corresponding to the cell that is added to the beginning of the next two-dimensional mn is added to the set of voxels.
- the algorithm is set forth more precisely at 2301 in FIG. 23, where ⁇ indicates a normalized value of ⁇
- Set of voxels 2421 then has a mn of voxels 2423 that corresponds to two- dimensional mns 2407 and 2415 and a mn of voxels 2427 that co ⁇ esponds to two- dimensional mns 2411 and 2419. Runs of voxels 2427 and 2423 are connected at comer 2425.
- the three-dimensional traversal algorithm requires two separate two-dimensional traversals of each of the projections of the line pe ⁇ endicular to the major axis. If comer and edge intersections are ignored, the number of mns in the three- dimensional path of the ray is the sum of the number of rans in the two two-dimensional traversals. Therefore the order of the three-dimensional ray traversal algorithm is 0(n/ ⁇ ), where r is now the average length in the three-dimensional path of the ray and n is the associated number of cells.
- FIG. 26 Using descriptions of rays as sets of runs of voxels to accelerate ray traversal: FIGs. 26-31 Using encoding runs to describe the voxels in a volume: FIG. 26
- a problem in rendering the contents of a volume as pixels by traversing the volume with rays to obtain the information needed to define the appearance of the pixels is that in general, not all contained in the volume along the path traversed by a particular ray has anything to do with the appearance of the pixel. Two examples of this fact are the following:
- early ray termination only applies to certain rendering functions such as shaded rendering and isosurfaces. If the entire path of the ray through the volume must be determined, as for an X ray style or maximum intensity projection (MIP) rendering, early ray termination is not valid.
- MIP maximum intensity projection
- a general solution to the problem of skipping uninteresting space is to find some way of indicating that the content of a particular set of voxels will have no effect on a traversing ray.
- the technique generally used is to subdivide the space being traversed into regions that will affect a traversing ray and regions that will not. When the ray enters a region that does not affect it, there is no need to examine individual voxels in the region.
- Run-length encoding is used in situations where the data being compressed includes sequences of data in which the same value is repeated over and over again. Such a sequence of data may then be represented by giving the value and the number of repetitions. For example, the sequence of 10 eights, 8888888888 may be encoded as the pair ⁇ value, number of occurrences ⁇ , or ⁇ 8,10 ⁇ .
- the compressed data thus becomes a list of pairs ⁇ value, number of occurrences ⁇ .
- the sequence of data represents pixels in an image, there may be a list of pairs corresponding to each row of pixels in the image.
- a row of pixels is of course a mn, and in the following, mns used for encoding will be termed encoding runs, to distinguish them from the rans of cells traversed by a line or ray.
- the encoding rans may be rows of voxels in the volume.
- FIG. 26 gives an example of an encoding ran 2603 in volume 1801. Encoding mn 2603 is a row of voxels in 1801 for which the coordinates are (x(i),y(0..n),z(j)).
- Similar encoding mns may of course be made where the voxels all have the same y and z coordinates and a range of x coordinates or the same x and y coordinates and a range of z coordinates.
- the best encoding mns to use with a particular ray are those for which the dimension with the range of coordinates is the dimension of the major axis of the ray.
- Encoding ran 2603 can thus be encoded as a list of sets of three values as follows: ⁇ NULL,y(0),y(a) ⁇ ; ⁇ VALl,(y(b),y(b) ⁇ ; ⁇ NULL,y(c),y(d) ⁇ ; ⁇ VAL2,(y(e),y(f) ⁇ ; ⁇ NULL,y(g),y(h) ⁇ , where a part of the mn that has no effect on the ray is indicated by NULL followed by the y coordinates of the beginning and end of the sequence of voxels that have no effect and a part of the mn that can affect a ray is indicated in the same way, except that NULL is replaced by value(s) that will affect the ray in the sequence.
- the data items corresponding to the voxels in the significant mn that match the ray voxels must be examined to determine how they affect the ray.
- Using the techniques just explained to determine the ray voxels for a ray make determining whether there are ray voxels that are the same as voxels in a significant mn in a particular encoding mn easier, since in order for there to be such voxels, a run of the ray voxels must intersect the significant mn.
- FIG. 27 shows a slice 2701 of a volume of voxels in which the voxels are associated with data from the Visible Human Project male dataset. The data describes the head and neck of a human male.
- Slice 2701 is a set of voxels that have the full range of x and v coordinates permitted by the volume and a single z coordinate.
- the interesting region of slice 2701 is represented as a list of encoding mns.
- the mn of voxels represented by one such mn, 2703(1), is shown in FIG. 27.
- mn 2703(i) has three runs 2707 that contain no information that will affect a ray and two significant rans 2705; the encoding mn corresponding to mn of voxels 2703(i) will represent that fact as described above.
- a single ray 2709 is shown traversing the volume. The ray has the X-axis as its major axis; consequently, the encoding mns of interest are those for the X-axis.
- the ray is further parallel to the z-axis, and is thus completely contained in the encoding mns of slice 2701 throughout its traverse of the volume.
- the techniques described here can also be used in the case where the ray intersects more than one slice.
- Ray 2709 intersects a set of rans of ray voxels; one of the rans of ray voxels is shown at 2711; this ran also intersects an encoding ran 2703(1) whose voxels contain information that will affect ray 2709.
- the problem of finding an intersection between ray 2709 and a significant mn 2705 of an encoding mn 2703 can be solved by detecting any intersection between the ran from the ray and a significant mn in the list of rans associated with the encoding ran. Given that the list of significant rans from the encoding ran is ordered, the search can be performed efficiently and a number of strategies are possible. The simplest is described in algorithm 2801 of FIG. 28.
- Further acceleration of ray traversal may be achieved by hierarchically grouping encoding mns that lie in the same or adjacent beams of the volume data.
- a beam is the maximum set of voxels in a slice with the same abscissa or ordinate. Therefore, voxels are arranged into beams, beams are arranged into slices, and slices are arranged into the volume. If the encoding mn has already been divided into significant mns, aggregate information may be maintained about each significant mn. For example, for a maximum intensity projection (MIP) rendering of a volumetric data set, storing the maximum value found within each significant mn would be useful.
- MIP maximum intensity projection
- the maximum value of the mn can be compared against the current maximum for the ray. If the ray is already at or above the maximum intensity, there is no need to consider the voxels in the significant mn in detail. In many cases, including such statistical information about the mn dramatically reduces the number of times the original data set has to be accessed.
- the use of aggregate information as just described establishes a hierarchy of information concerning the encoding mn and permits each partition of an encoding mn to be checked in its entirety for relevance to the ray before the intersecting voxels of the ray and the significant mn are checked in detail.
- isosurface rendering in which the surface that corresponds to a given value is reconstmcted from the volumetric data.
- each ray is traced through the volume and where it would cross the isosurface is calculated. Therefore if the viewer is external to the volume and the exterior of the volume is assumed to be empty space, the voxel in which one of its neighboring values is greater than the isosurface value is sought. Within this voxel, the ray may cross the isosurface, and if so, the point of the intersection must be calculated.
- the minimum and maximum values found within each significant mn can be kept. These values can be used to determine if an isosurface intersection can exist in any composite voxel. If not, the entire significant can be skipped.
- a three-dimensional mn length encoding of a volume provides an 0(kn ) compression of the volumetric data where k is proportional to the mean number of significant rans in the encoding mn lists and n is the size of the volume.
- mns are termed in the following significant runs.
- the maximum number of significant mns in list cannot exceed n/2 by definition.
- To traverse the mn length encoding of the volume using the mn-based ray traversal scheme each run in the path of the ray is intersected with the significant runs in the encoded mn list.
- the searching strategy is an 0(k) operation.
- the procedure in its entirety is therefore 0(n/ ⁇ + k).
- the behavior of the algorithm is 0(n) when the absolute value of the slope of the two two-dimensional projections of the ray is 1.
- the behavior will be 0(n/f) as k will typically be much less than n/2.
- FIGs. 30 and 31 Organizing an encoding run into sets of partitions of various sizes: FIGs. 30 and 31
- the three-dimensional ray traversal algorithm described is very efficient and for most of the rendering functions employed, such as isosurfacing and maximum intensity projection, the cost to process each voxel traversed by the ray is not high.
- the aim of using spatial subdivisions to accelerate the traversal process is to reduce the amount of the volume that has to be processed and to concentrate the processing performed to that part of the volume that affects the final image.
- traversing the ray through the spatial subdivision introduces too much overhead, its contribution is limited.
- FIG. 30 Shown at 3001 is again a slice of a volume of voxels in which the voxels are associated with data from the Visible Human Project male data set. The data describes the head and neck of a human male.
- Slice 3001 is a set of voxels that have the full range of x and v coordinates permitted by the volume and a single z coordinate.
- Ray 2709 intersects slice 3001. The voxels of ray 2709 occur in mns of two lengths: a short mn of 3 voxels is shown at 2711 and a long mn of four voxels is shown at 2612.
- the encoding mns 3003 have been divided into mn length partitions.
- the partitions 3005 at the lowest level of the hierarchy each have 4 voxels; each higher-level partition in the hierarchy would contain a greater number of voxels than the previous level.
- the increase in size is based on the powers of two.
- a partition at a given level k of the hierarchy contains 2 k of the lowest-level partitions.
- partition 3005 contains four voxels
- partition 3007 contains two partitions 3005 and therefore 8 voxels, and so forth for 1 ⁇ k ⁇ 4 .
- the partitions of the hierarchy can be related to each other in other ways, use of the powers of 2 makes it easy to calculate the partition sizes.
- Ray 2709 has mns of 3 and 4 voxels; consequently, the best size of partition to use for ray 2709's traversal of slice 3001 is partition 3005.
- the algorithm is as shown at 3101 in FIG. 31. There are two cases: if the portion of the ray mn being processed extends beyond the partition and if it does not. In the first case, the partition's aggregate data is consulted to determine whether the partition is relevant to the ray; if it is, the voxels of interest in the partition are traversed. Thereupon, the length of the ray ran is decreased by the number of intersecting voxels, and the partition indicator is set to the next partition.
- the partition's aggregate data is again consulted to determine whether the partition is relevant; if it is, the voxels of interest in the partition are traversed. Thereupon, the amount of the partition to be processed is reduced by the length of the ray mn.
- the problem is therefore how best to traverse the ray through the mn length partitioning and what is the best partition size to use. If the average length of a ray run is a lot smaller than the size of the partition, there will be little gain, as the aggregate statistics associated with the partition represent the entire partition and the number of ray runs that will be rejected is reduced. Further, if the partition size is much larger than the ray ran, the cost and complexity of checking for significant rans in the partition is greater. Therefore, the cost of traversing the partitioning must be balanced with the savings from finding voxels that need not be considered. If dealing with voxels that are relevant to the ray is expensive, it is better to use a small partition size. If that is not the case, a larger partition size can permit a faster traversal algorithm.
- a good compromise is to choose a ran-length-partition size that is at least as large as the short ran length in the path of the ray, as was done when a partition size of 4 was chosen in FIG. 30.
- the ray at each step will traverse at most two partitions. Therefore, the loop to traverse the run through the partitions can be unrolled into a two-stage process, as is done in algorithm 3101. Efficiency of ray traversal with a partitioned hierarchy of runs
- a three-dimensional ran length partitioning of a volume provides an 0(n 3 /p) compression of the volumetric data where p is the partition size and « 3 is the size of the volume.
- p is the partition size
- « 3 is the size of the volume.
- the order of the ray traversal algorithm is 0(n/ ⁇ ), where ⁇ is the average run length in the path of the ray. Therefore the ray traversal process through the partitioning is 0(n/min(p, ⁇ )). By choosing ⁇ to be less than or equal to the partition size, the complexity of 0(n/ ⁇ ) is maintained for the entire traversal process.
- any technique of determining the intersected voxels from the intersected cells could be used in addition to those disclosed herein.
- any method of encoding that distinguishes significant mns from the remainder of the encoding mn may be used, and aggregate values may be maintained for any useful partition of the encoding runs.
- any useful representation of the mns of cells, the mns of voxels, and the encoding mns may be employed.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
Description
Claims
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/500,772 US20050116951A1 (en) | 2002-01-07 | 2003-01-06 | Using runs of cells to traverse a ray through a volume |
| EP03702002A EP1472654A2 (en) | 2002-01-07 | 2003-01-06 | Using runs of cells to traverse a ray through a volume |
| AU2003202890A AU2003202890A1 (en) | 2002-01-07 | 2003-01-06 | Using runs of cells to traverse a ray through a volume |
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US34674102P | 2002-01-07 | 2002-01-07 | |
| US60/346,741 | 2002-01-07 | ||
| USPCT/US02/24711 | 2002-08-02 | ||
| PCT/US2002/024711 WO2003012599A2 (en) | 2001-08-03 | 2002-08-02 | Methods and apparatus for determining intersections of a particular line with cells in a lattice |
| USPCT/US02/39176 | 2002-12-12 | ||
| PCT/US2002/039716 WO2003052733A1 (en) | 2001-12-13 | 2002-12-12 | Using line structure information to enhance line drawing in digital systems |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2003058405A2 true WO2003058405A2 (en) | 2003-07-17 |
| WO2003058405A3 WO2003058405A3 (en) | 2004-01-22 |
Family
ID=33158419
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2003/000240 Ceased WO2003058405A2 (en) | 2002-01-07 | 2003-01-06 | Using runs of cells to traverse a ray through a volume |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP1472654A2 (en) |
| AU (1) | AU2003202890A1 (en) |
| WO (1) | WO2003058405A2 (en) |
-
2003
- 2003-01-06 WO PCT/US2003/000240 patent/WO2003058405A2/en not_active Ceased
- 2003-01-06 AU AU2003202890A patent/AU2003202890A1/en not_active Abandoned
- 2003-01-06 EP EP03702002A patent/EP1472654A2/en not_active Withdrawn
Non-Patent Citations (3)
| Title |
|---|
| KAUFMAN ET AL.: '3D scan-conversion algorithms for voxel-based graphics' ACM 1986, pages 45 - 75, XP002969288 * |
| LEVOY: 'Efficient ray tracking of volume data' ACM 1990, pages 245 - 261, XP002913630 * |
| SCHRODER ET AL.: 'Data parallel volume rendering as line drawing' ACM 1992, pages 25 - 32, XP002969287 * |
Also Published As
| Publication number | Publication date |
|---|---|
| AU2003202890A8 (en) | 2003-07-24 |
| EP1472654A2 (en) | 2004-11-03 |
| WO2003058405A3 (en) | 2004-01-22 |
| AU2003202890A1 (en) | 2003-07-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Sud et al. | DiFi: Fast 3D distance field computation using graphics hardware | |
| US7576743B2 (en) | System and method for approximating an editable surface | |
| Sramek et al. | Fast ray-tracing of rectilinear volume data using distance transforms | |
| US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
| US7446770B2 (en) | Apparatus of and method for drawing graphics, and computer program product | |
| US6850234B2 (en) | Method and system for determining visible parts of transparent and nontransparent surfaces of there-dimensional objects | |
| JP2002531905A (en) | Method of forming perspective drawing from voxel space | |
| Fournier et al. | Chebyshev polynomials for boxing and intersections of parametric curves and surfaces | |
| US20050116951A1 (en) | Using runs of cells to traverse a ray through a volume | |
| Dobkin | Computational geometry and computer graphics | |
| Horvat et al. | Ray-casting point-in-polyhedron test | |
| EP1503346B1 (en) | A process for providing a vector image with removed hidden lines | |
| Valque | 3D Snap rounding | |
| Sud et al. | Interactive computation of discrete generalized voronoi diagrams using range culling | |
| EP1472654A2 (en) | Using runs of cells to traverse a ray through a volume | |
| US20040189641A1 (en) | Method and apparatus for determining intersections of a particular line with cells in a lattice | |
| US20050001840A1 (en) | Using line struture information to enhance line drawing in digital systems | |
| Sud et al. | Fast distance field computation using graphics hardware | |
| Marcus | Level-of-Detail Independent Voxel-Based Surface Approximations | |
| WO2003052733A1 (en) | Using line structure information to enhance line drawing in digital systems | |
| Thompson et al. | Embarrassingly parallel mesh refinement by edge subdivision | |
| Schütz | Textured surfels visualization of multi-frame point cloud data | |
| Gregorski et al. | Multiresolution representation of datasets with material interfaces | |
| JP2006524384A (en) | Method and system for filling in a parallelogram | |
| Wood | Improved isosurfacing through compression and sparse grid orientation estimation |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A2 Designated state(s): AU CA CN JP SG US |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT SE SI SK TR |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 10500772 Country of ref document: US |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2003702002 Country of ref document: EP |
|
| WWP | Wipo information: published in national office |
Ref document number: 2003702002 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: JP |
|
| WWW | Wipo information: withdrawn in national office |
Country of ref document: JP |
|
| WWW | Wipo information: withdrawn in national office |
Ref document number: 2003702002 Country of ref document: EP |













