METHOD, APPARATUS, AND ARTICLE OF MANUFACTURE FOR ASSOCIATING OBJECTS WITH REGIONS IN COORDINATE SPACE

Abstract: A technique for associating objects (10, 12) with regions (14) in scene space comprising the steps of (a) subdividing said scene space into regions according to predetermined mode of subdivivion having associated therewith a unique binary naming convention; and (b) for each region (14) including said scene space, associating a list of objects (10, 12) that appear in that region or scene space with that region or scene space with that region or scene space based upon said unique binary naming convention.

Description: TITLE METHOD AND SYSTEM FOR ASSOCIATING OBJECTS WITH REGIONS IN COORDINATE SPACE CROSS REFERENCE TO RELATED APPLICATTON(S)/CLAIM OF PRIORITY This application claims the benefit of co-pending Israeli Patent Application Serial No. 136430, filed May 29, 2000, and entitled "Ray-Tracing Method And System For Determining Visible Parts Of Surfaces Of Three-Dimensional Objects And Their Parameters Of Shading Accounting For Light And Shadow Volumes," the entire disclosure of which is also incorporated by reference as if set forth at length herein. In addition, this application relates to co-pending Israeli Patent Application Serial No. 135465, filed April 4, 2000, and entitled "Method and System for Determining Visible Parts of Transparent and Nontransparent Surfaces of Three-Dimensional Objects," the entire disclosure of which is incorporated by reference as if set forth at length herein. STATEMENTREGARDINGFEDERALLY SPONSORED RESEARCH OR DEVELOPMENT Not applicable. REFERENCE OF AN APPENDIX The Appendix attached hereto is a table comparing prior art products with that of the present solution. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates generally to computer graphics and more particularly to an improved method, apparatus, and article of manufacture for localizing n-dimensional objects in n-dimensional scene space. 2. Description of Related Art Real-time volume rendering of three-dimensional objects on a two-dimensional display medium, such as, a computer monitor, is a processor intensive operation due to the algorithmic complexity of volume visualization and the enormous amount of data required to be processed. The octree space partitioning method is used for the correct representation of solid objects in a 3d environment, and is the basis for many modeling and rendering systems. The primary objective of the octree space partitioning method is to reduce the number of comparisons required to determine which surfaces in a scene need to be processed for ray tracing, collision detection, visibility determination, or similar calculations. The octree subdivision method is presented in the paper "Space Subdivision for Fast Ray Tracing" by Glassner, Andrew S., IEEE Computer Graphics and Applications, Vol. 4, No. 10, October 1984, pp. 15-22. The octree subdivision method divides the space including objects into 8 sub-spaces. In this method, the subdivision is continued until the number of the object included by a sub-space comes up to only one. The cells obtained in the above-mentioned way have a tree structure, with each unit having of 8 leaves. Although primarily used in static environments, they can also be used in dynamic environments with a few modifications. Octrees can provide a significant reduction in the time needed to sort polygons in a scene for proper display and are ideal for high-performance games that consist primarily of empty space where the objects within this space show large variations in relative size (for example, flight simulators). Octree algorithms are recursive in nature and utilize complex intermediate structures. Consequently, the various prior art octree algorithms are difficult to implement in hardware. Given the forging, a solution is needed which overcomes the deficiencies of the prior art. SUMMARY OF THE INVENTION The present solution overcomes the aforementioned problems of the prior art by specifically providing an improved and thus, efficient technique, for associating objects with regions in coordinate space, which can be implemented in hardware. Therefore, in accordance with one aspect of the present solution there is provided a novel system, method and article of manufacture for, among other things, associating objects with regions in scene space comprising the steps of (a) subdividing said scene space into regions according to a predefined mode of subdivision based upon a unique binary naming convention (to be further described herein); and (b) for each region including said scene space, associating a list of objects that appear in that region or scene space with that region or scene space using the aforementioned binary naming convention. These and other aspects, features and advantages of the present invention will become better understood with regard to the following description, appended claims, and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS Referring briefly to the drawings, embodiments of the present invention will be described with reference to the accompanying drawings in which: Figure 1 illustrates an exemplary geometric transformation of a region in two- dimensional space in accordance with the teachings herein. Figure 2 illustrates an exemplary geometric transformation of a region in three- dimensional space in accordance with the teachings herein. Figures 3 A and 3B each illustrate an exemplary geometric transformation of several surfaces/polygons in accordance with the teachings herein. Figures 4A, 4B, 4C and 4D together illustrate a unit square being progressivly subdivided in accordance with the teachings herein. Figures 5A and 5B each illustrate a bounding volume in accordance with the teachings herein. Figure 6 illustrates how a name of a subdivision is determined in accordance with the teachings herein. Figure 7 illustrates an exemplary data structure for storing a plurality of subdivisions in accordance with the teachings herein. Figure 8 illustrates a table demonstaring how the indices in the array of subdivisions are determined in accordance with the teachings herein. Figure 9 illustrates an exemplary block diagram of several functional elements comprising a graphics processing system in accordance with the teachings herein. Figure 10 illustrates an exemplary process flow diagram of one functional element of the graphics processing system of Figure 9 in accordance with the teachings herein. DETAILED DESCRIPTION OF THE INVENTION Referring more specifically to the drawings, for illustrative purposes the present invention is embodied in the system configuration, method of operation and article of manufacture or product, such as a computer-readable medium, for example, a floppy disk, a conventional hard disk, CD-ROM, Flash ROM, nonvolatile ROM, RAM and any other equivalent computer memory device, generally shown in Figures 1 - 10. It will be appreciated that the system, method of operation and article of manufacture may vary as to the details of its configuration and operation without departing from the basic concepts disclosed herein. The following detailed description is, therefore, not to be taken in a limiting sense. As previously mentioned, the present solution provides a fast and efficient method for associating objects with regions in which they appear. Namely, the present solution quickly and efficiently associates surfaces with regions in coordinate space using a finite number of operations. FIGURES 1 AND 2 - TRANSFORMATIONS Reference is now made to Figures 1 and 2, which illustrate region transformations into two-dimensional and three-dimensional space, respectively. Figure 1 illustrates a transformation of a region 2 into two-dimensional space creating a unit square 5. Figure 2 illustrates a transformation of a region 4 into three-dimensional space creating a unit square cube 6. The methods for determining coordinate transformation of arbitrary region into unit cube are well known in the art. For simplicity, the following sections are directed to manipulating objects in two- dimensional scene space in accordance with the teachings herein. However, it is clear to those skilled in the art that the present solution it is not limited thereby as the present solution can be naturally extended, by applying certain conventional modifications thereto, to process scenes in any n-dimensional space. FIGURE 3 - REGIONS AND OBJECTS Figure 3A illustrates a plurality of polygonal arbitrary shaped objects 10 and 12, which are at least partially located inside a region 14 in two-dimensional space with coordinate system XOY. Object 12 is only partially located inside region 14. Therefore, only the indicated hatched part of object 12 will be further considered. As shown in Figure 3B, region 14 is transformed into unit square 16. The same coordinate transformation is applied to objects 10 in region 14. Objects 10 (Figure 3A) are transformed into objects 18 in unit square 16 and object 12 is transformed into object 17 in unit square 16. FIGURE 4 - MODE OF SUBDIVISION AND NAMING CONVENTION USED FOR ASSIGNING A NAME TO A REGION In order to more fully explain the unique mode of subdivision/naming convention of the present solution reference will now be made to several Figures, which graphically illustrate a unit square being progressively subdivided according to the teachings herein. A method of mathematically dividing the unit cube or square operative in the preferred embodiment of the present invention is demonstrated in the description provided herein below. Briefly speaking, a unit volume, here a square, is mathematically subdivided according to the following description. In one embodiment the described mathematical mode of subdivision may be done conceptually and not necessarily physically. Each subdivision is associated with a "name". The name for a subdivision is constructed during each division step of the unit square or cube. Initially the unit square or cube is divided into two equal rectangles. The linear subspace in n-dimensional case corresponds to the straight- line segment in two-dimensions. The direction of this line segment is parallel to any one of the coordinate axes. An "empty" name is assigned to an initial unit cube or square. After division of the initial unit cube or square the nearest of the two resulting subdivisions to the coordinate origin is chosen. The name of rectangular subdivision 22 is constructed from the name of previous subdivision by adding the symbol zero (0) to the right hand side of the name of initial subdivision (Figure 4A). The name of rectangular subdivision 24 is constructed from the name of previous subdivision 20 by adding unit symbol (1) to the right hand side of the name of initial subdivision. The general procedure for constructing the name of arbitrary subdivision of unit cube is executed in the following steps: a) For initial rectangular subdivision name is empty (i.e. has no symbols). b) Dividing of subdivision results in appearance of two new rectangular subdivisions. For each new rectangular subdivision symbol 0 or 1 is added to the name on the right hand side. Symbol zero is added to the name of rectangular subdivision nearest to coordinate origin and 1 to the farthest. The names of the subdivisions are stored in memory for subsequent processing. To further illustrate the forgoing points, reference is now made to collectively to Figures 4A, 4B, 4C, 4D in which the results, including the naming convention, of progressively subdividing a unit square in two-dimensional space in accordance with the teachings herein are shown. As shown in Figure 4A, the initial area corresponding to the dimensions of a unit square 20 is assigned to EMPTY. Figure 4B, illustrates the results of subdividing the unit square 20 into two equal rectangular subdivision 22 and 24 wherein division line segment 26 is parallel to the y-axis. Rectangular subdivision 22 is closer to the coordinate origin than rectangular subdivision 24. Hence, in accordance with the above naming convention, a zero (0) is added to the right hand side of the name of rectangular subdivision 22 and a one (1) is added to the right hand side of the name of rectangular subdivision 24. Thus, rectangular subdivision 22 is named or coded 0 and rectangular subdivision 24 is named or coded 1. Figure 4C illustrates the results of further subdividing rectangular region 24 into two equal rectangular subdivisions 32 and 34 wherein division line segment 28 is parallel to the x- axis. Rectangular subdivision 32 is closer to the x-axis than rectangular subdivision 34. Hence, in accordance with the above naming convention, a zero (0) is added to the right hand side of rectangular subdivision 32 and a one (1) is added to the right hand side of rectangular subdivision 34. Thus, rectangular subdivision 32 is named 11 and rectangular subdivision 34 is named 10. Figure 4D illustrates the results of still further subdividing rectangular region 34 into two equal rectangular subdivisions 38 and 39 wherein division line segment 36 is parallel to the y- axis. Rectangular subdivision 38 is closer to the coordinate origin than rectangular subdivision 39. Hence, in accordance with the above naming convention, a zero (0) is added to the right hand side of the name of rectangular subdivision 38 and a one (1) is added to the right hand side of the name of rectangular subdivision 39. Thus, rectangular subdivision 38 is named 110 and rectangular subdivision 39 is named 111. The forgoing process is repeated until a predefined maximum number of subdivisions is reached. The number of symbols in the name defines the number of divisions. The names of all subdivision are stored in memory. FIGURE 5 - MINIMAL SUBDIVISION FOR A BOUNDING RECTANGLE Figures 5A and 5B each illustrate a conventional bounding volume, namely a bounding rectangle, in accordance with the teachings herein. As is well known in the art, a bounding rectangle for an object is a rectangule in two-dimensional space, with sides parallel to the coordinate planes, that contains (or surrounds) the object. Other types of bounding volumes, e.g., bounding sphere, may also be used. Figure 5 A illustrates a two-dimensional bounding rectangle 40 in unit square 20 surrounding an object 42. In Figure 5B there is shown two bounding rectangles abhe and abed contain part of the object 42. The boundary edges of bounding rectangles 40 (sides of rectangle 40 in Figure 5 A), abhe and abed, are parallel to the coordinate axes. A minimal subdivision for a bounding rectangle is defined as a subdivision containing a diagonal segment of the bounding box, which cannot be further divided in accordance with the mode of subdivision described herein without intersecting the bounding box. That is, minimal subdivisions for a bounding box are defined as subdivisions, which contain the entire bounding box. In order to determine, whether subdivision contains bounding box it is enough to determine if subdivision contains diagonal segment of the bounding box. The minimal subdivision for bounding box is defined as the minimal among subdivisions, which contains the entire bounding box. Minimal subdivision is determined for diagonal segment of bounding box. Figures 5 A and 5B illustrate this point. In Figure 5A bounding rectangle 40 encloses object 42. In Figure 5B bounding rectangles abed and abhe encloses certain parts of object 42. As shown in Figure 5A, left subdivision 44 of unit cube 20 contains object with bounding rectangle 40. Subdivision 44 contains diagonal segment 46 of bounding rectangle 40. Accordingly, in Figure 5 A and 5B subdivision 44 contains entire bounding rectangle 40 of object 42. Subdivision 44 is minimal subdivision for bounding rectangle 40. The next division line 48 (Figure 5B) of subdivision 44 intersects with bounding rectangle 40. In Figure 5B side ae of the bounding rectangle abhe and side ad of the bounding rectangle abed coincide with division line 48 of the bounding rectangle 44. Both boundmg rectangles abhe and abed are contained inside subdivision 52, which resulted from division of subdivision 44 by division line 48. Subdivision 52 is a minimal subdivision for bounding rectangle abed since the division line 50 of subdivision 52 intersects with bounding rectangle abed and its diagonal segment bd. Subdivision 52 is not minimal for bounding rectangle abhe since the division line 50 of subdivision 52 does not intersect with bounding rectangle abhe. FIGURE 6 - DETERMINING A MINIMAL SUBDIVISION USING DIAGONAL SEGMENT A minimal/smallest subdivision containing a bounding rectangle of an object is determined by processing the diagonal segment of the bounding rectangle in accordance with the teachings herein. Thus, the endpoints of the diagonal segment will be used to determine the name of the minimal subdivision containing the bounding box. Figure 6A and 6B illustrate a technique for determining a minimal subdivision for a line segment L (that is, a diagonal segment from an arbitrary bounding box) in normalized decimal two-dimensional space having as endpoints, endpoint 1 (xl, yl) and endpoint 2 (x2, y2) whose corresponding decimal values are endpoint 1 (0.55, 0.57) and endpoint 2 (0.69, 0.81) respectively. First, the coordinates of endpoint 1 (0.55, 0.57) and endpoint 2 (0.69, 0.81) are converted into binary strings or forms omitting the "decimal" point. (The term "decimal" point as used herein means the "." before the fractional part of the number). Thus, in this example, the coordinates of endpoint 1 (0.55, 0.57) are converted into endpoint 1 (100011000000, 100100010000) and the coordinates of endpoint 2 (0,69, 0.81) are converted into endpoint 2 (101100000000, 110011110000). Recall that the longest possible length of the name of a subdivision is determined by the size of the smallest subdivision, which in turn, is predefined according to the particular task. Next, an x-coordinate prefix and a y-coordinate prefix are determined. The vertical doted line in Figure 6 denotes this part. As shown, the equivalent initial part of the two binary strings for the two x-coordinates of the two endpoints is further defined as the x-coordinate prefix. The equivalent initial part of the two binary strings for the two y-coordinates of the two endpoints is further defined as the y-coordinate prefix. A name of a minimal subdivision is determined by combining the x-coordinate prefix and the y-coordinate prefix according to the following procedure. Specifically, if the x- coordinate prefix is empty then the name of minimal subdivision coincides with the name of initial subdivision, that is, EMPTY. Otherwise, the name of the minimal subdivision is constructed by copying in turn one symbol from the x-coordinate prefix and then one symbol from the y-coordinate prefix, repeating this process until there are no more binary symbols to copy in either of one of the x- or y-coordinate prefix. In this example, the binary name that is constructed is 110. The subdivision with name 110 is a minimal subdivision for the bounding rectangle having diagonal line segment L. In short, a subdivision is associated with one or more objects (and vice versa) by simply processing the diagonal segment of an object's bounding rectangle to determine the name of the minimal/smallest subdivision at least partially containing the bounding rectangle and storing this information in one or more data structures for subsequent processing. FIGURE 7 - CONSTRUCTING ARRAY 60 and 64 Figure 7 is an example of one or more practical data structures, which may be used in the present instance to store a minimum subdivision data and bounding rectangle data. ARRAY 60 After subdividing a region into a plurality of subdivisions, all subdivisions are stored in an array data structure, namely, an array of all subdivisions 60 ("array 60"). It is appreciated by those skilled in the art, however, that other types of data structures may also be used. The length of array 60, that is, the total number of elements in array 60, is based on a predefined size of the smallest subdivision. Generally, the smallest size of a subdivision is determined in accordance with the desired image quality or resolution. Typically, this occurs when the smallest size of a subdivision is an order of pixel size. However, the smallest subdivision may be defined according to the natural limitations of the task. For example, in certain instances the smallest predefined subdivision may be greater or less than a single pixel size. Accordingly, the length of the array(s) is equal to 2 N - 1, where N is maximum number of subdivisions of the smallest predefined size. ARRAY 64 Each element of array 60 references an array of bounding rectangles 64 (array 64). Each element 62 of array 64 references a bounding box, which is entirely contained in the subdivision. Array 60 is constructed in accordance with the following procedure. Each subdivision's array index is derived from its name. One technique for determining a given subdivision's array index follows, bearing in mind that what follows is merely exemplary as other techniques may also be used. First, the initial undivided area corresponding to the dimensions of a unit cube or square named/coded EMPTY is stored at index zero (0). For the two child subdivisions, which are created when a parent subdivision or the initial area is divided, the indices of these child subdivisions are determined as follows: For the child subdivision, which is nearest to the coordinate origin, its index is determined as follows: an offset equal to 1 is added to the index of the parent subdivision. For the remaining child subdivision, its index is determined as follows: an offset equal to the total number of possible subdivisions of the parent subdivision is added to the index of the parent subdivision. A second exemplary technique for determining a given subdivision's array index follows: First, the initial undivided area corresponding to the dimensions of a unit cube or square named/coded EMPTY is stored at index zero (0). For the two child subdivisions, which are created when a parent subdivision or the initial area is divided, the indices of these child subdivisions are determined as follows: For the nearest to the coordinate origin subdivision resulted from division, offset 1 is added to the index of subdivision, which was divided. For the farthest subdivision resulted from division, offset, which is equal to the number of possible subdivisions in the nearest subdivision, is added to the index of subdivision, which was divided. FIGURE 8 - ARRAY 60 INDICES Figures 8A and 8B graphically illustrate the above two techniques. Figure 8A depicts the first technique. Figure 8B depicts the second technique. In both, array indices are derived from the names of the subdivisions shown in Figures 4A, 4B, 4C and 4D. In this example, the total number of possible subdivisions is set to eight. FIGURE 9 - PHYSICAL CONFIGURATION OF GRAPHICS PROCESSING SYSTEM 1 Several functional elements are included in an exemplary graphics processing system of the present solution. These functional elements could be implemented by suitably programming a conventional programmable graphics processing system. Alternatively, the functional elements could be provided as separate hardwired circuits. In any event and referring more specifically to Figure 9, there is shown an exemplary graphics processing system 1 constructed in accordance with the teachings of the present invention. In a basic embodiment, the system 1 comprises a plurality of interconnecting components, namely, a pre-processing unit 72, a processing unit 76, a memory unit 78, and an index-memory unit 76. Processing unit 76 further comprises a plurality of interconnecting subcomponents, namely, a determining bounding rectangle component 80, a minimal subdivision unit 82, and an associating objects with subdivisions unit 84, and a index-memory unit 86. Furthermore, there is included in system 1 an input bus 70 and an output bus 79. Pre-processing unit 72 receives object data comprising surfaces and performs certain preprocessing activities on the object data, such as transformations, culling, etc. Thereafter, pre- processed surface data is transmitted to processmg unit 74 for further processing. Processing unit 74 receives the pre-processed data from pre-processing unit 72 and, together with memory unit 78 and index-memory unit 76, associates surfaces with subdivisions in accordance with the present solution. The specifics of each of the forgoing functional elements will become better understood with regard to the following description and accompanying drawings. INPUT BUS 70 Object data including associated surface data describing a scene in coordinate space is transferred via input bus 70 to preprocessing unit 72. PRE-PROCESSING UNIT 72 Pre-processing unit 72 defines a unit volume, (for example, square/cube in two/three- dimensional space, respectively) and transforms object data into normalized-coordinate data, and determines bounding volumes (in the present instance a bounding rectangles) for objects/surfaces/polygons or parts of these objects/surfaces/polygons comprising the scene according to conventional techniques. Next, preprocessing unit 72 transmits transformed object data and associated bounding rectangle data to processing unit 74 for subsequent processing. PROCESSING UNIT 74 Processing unit 74 associates objects with subdivisions by directly manipulating the bounding rectangles of the objects instead of the objects themselves. To perform these functions, processing unit 74 includes several interconnecting components, namely, processing bounding box unit 80, a minimal subdivision unit 82 ("Component 82"), an associating objects with subdivisions unit 84 ("Component 84"), and a stack-memory unit 86 ("Component 86"). 1. Component 80 Component 80 receives each bounding rectangle from unit 72 and determines which minimal subdivision to which it belongs. 2. Component 82 Next, Component 82 receives each bounding rectangle from unit 72 and determines which minimal subdivision to which it belongs. Specifically, Component 82 determines a minimal subdivision for each bounding box, that is, the smallest subdivision containing the bounding rectangle in accordance with the teachings herein. Recall that a minimal subdivision for a bounding rectangle is defined as a subdivision containing a diagonal segment of the bounding box, which cannot be further divided in accordance with the mode of subdivision described herein without intersecting the bounding box. In doing so, a diagonal of the current bounding rectangle is calculated and the endpoints of boundmg rectangle is used to determine the name of subdivision containing segment. After a minimal subdivision to which a bounding rectangle belongs is determined, the minimal subdivision for the current bounding box, the bounding rectangle and the object itself are transferred to Component 84 for subsequent processing. 3. Component 84 Component 84 associates objects with subdivisions using bounding rectangle information. That is, for each subdivision, Component 84 determines all bounding boxes, which are contained entirely inside the instant subdivision. In performing this function, Component 84 constructs and stores object, subdivision and bounding rectangle information in one or more data structures for subsequent processing. Specifically, Component 84 constructs and stores array 60 in index-memory unit 76 and constructs and stores the plurality of arrays 64 in memory unit 78. In a preferred embodiment of the present solution, processing unit 74 is capable of executing in parallel read/write operations from/to memory unit 78 and index-memory unit 76. 4. Component 86 Component 86 receives from and transmits to Component 80 of unit 74 current bounding box, object data and associated subdivision information for storage thereto during the operation of graphics processing system 1. INDEX-MEMORY UNIT 76 AND MEMORY UNIT 78 As was previously mentioned array 60 is stored in index-memory unit 76 and the plurality of arrays 64 are stored in memory unit 78. Processing unit 74 reads/writes from/to memory unit 78 and index-memory unit 76 in parallel. OUTPUT BUS 79 Finally, associated surface/subdivision information is transmitted via output bus 79 for further processing within the graphics pipeline. FIGURE 10 - PROCESSING ELEMENT 80 Because of the important role Component 80 plays herein, it is now desirable at this juncture to provide a detailed description of the same to facilitate the reader's overall comprehension of certain aspects of the present solution. Hence, Figure 10 illustrates an exemplary process flow diagram of Component 80 in accordance with the teachings herein. As is shown in Figure 10, a current bounding rectangle together with its object data is fed to block 90. Block 90 activates component 82 for determining a minimal subdivision for the current bounding rectangle. Next, execution passes to control block 92. At control block 92, depending on a particular defined task, one of two distinct paths process flow/execution is performed. Namely, execution either passes to block 94 or to block 96. Block 94 activates Component 84 for associating objects with subdivisions in accordance with the teachings herein. At block 96 the current object is broken up into parts and bounding rectangles for these parts are determined. These parts are considered as new objects and pushed to stack-memory (i.e., Component 86) together with their bounding rectangles. The first object in the stack-memory and its bounding rectangle data is set as the current object, popped from stack and transmitted for subsequent processing to block 90. The remaining objects and their bounding rectangles are stored in stack-memory. Finally, after all objects/object parts have been processed (that is, associated with subdivisions), execution passes to terminating block 98. At block 98, if the stack-memory is empty, then processing unit 74 finishes processmg the current object and its bounding rectangle data. Otherwise, block 98 pops, one by one, all object and bounding rectangle data that was previously pushed to (stored in) stack memory, from stack-memory and transmits each in turn to the block 90 for further processing. CONCLUSION Having now described a several embodiments of the present invention, it should be apparent to those skilled in the art that the foregoing is illustrative only and not limiting, having been presented by way of example only. All the features disclosed in this specification (including any accompanying claims, abstract, and drawings) may be replaced by alternative features serving the same purpose, and equivalents or similar purpose, unless expressly stated otherwise. Therefore, numerous other embodiments of the modifications thereof are contemplated as falling within the scope of the present invention as defined by the appended claims and equivalents thereto. Moreover, the techniques described herein may be implemented in hardware or software, or a combination of the two. The techniques may be implemented in control programs executing on programmable devices that each include at least a processor and a storage medium readable by the processor (including volatile and non- volatile memory and/or storage elements). Each program is may be implemented in a high level procedural or object oriented programming language to communicate with a computer system, however, the programs can be implemented in assembly or machine language, if desired. Each such computer program is may be stored on a storage medium or device (e.g., CD- ROM, hard disk or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform the procedures described in this document. The system may also be implemented as a computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer to operate in a specific and predefined manner. 23

Claims: CLAIMS What is claimed is: L A method for associating surface projections on an initial area in coordinate space with regions of said initial area; said coordinate space being defined by one or more coordinate axes; said method comprising the steps of: (a) generating a list of said surface projections; (b) determining a boundmg volume for at least some of said surface projections in said list; (c) subdividing said initial area into a plurality of minimal subdivisions in accordance with a predefined mode of subdivision having associated therewith a predefined naming convention; and (d) for a minimal subdivision: (i) determining whether one or more of said bounding volumes are at least partially contained within that minimal subdivision based upon said predefined naming convention associated with said mode of subdivision; and (ii) based on the results of said determination in said preceding step, associating said one or more bounding volumes with that minimal subdivision thereby associating with that minimal subdivision said surface projections contained within said associated one or more bounding volumes. 2. A method according to claim 1 wherein said predefined mode of subdivision includes progressively dividing said initial area into a finite number of parent and/or child subdivisions wherein a parent subdivision is divided into two equal first and second child subdivisions. 3. A method according to claim 1 , wherein said predefined naming convention used for associating a minimal subdivision with said bounding volume includes for each minimal subdivision associating a binary name with that minimal subdivision. 4. A method according to claim 3, wherein said binary name is constructed as follows: said binary name of said minimal subdivision corresponding to said initial area = EMPTY/NULL; said binary names of said first and second child minimal subdivisions resulting from subdividing a parent subdivision is constructed as follows: said binary name of said first child minimal subdivision which is nearest to an coordinate axis = adding zero (0) to the right hand side of the name of said parent subdivision or to the binary name of said minimal subdivision corresponding to said image plane; and said name of said second child minimal subdivision which is farthest away from an coordinate axis = adding one (1) to the right hand side of the name of said parent subdivision or to the name of said minimal subdivision corresponding to said image plane. 5. A method according to claim 4, wherein said step of associating a minimal subdivision with one or more bounding volume comprises: for a bounding volume : (a) determining a diagonal segment for that bounding volume; said diagonal segment having first and second endpoint coordinates; (b) representing said first and second endpoint coordinates in binary form; (c) determining a first and second coordinate prefix having binary symbols, the length of which is based on the total number of subdivisions; and (d) copying in turn one binary symbol from said first coordinate prefix and one binary symbol from said second coordinate prefix; and (e) repeating the preceding step until there are no more binary symbols to copy in either of said first or said second prefix thereby constructing a binary name of a minimal subdivision to which that bounding volume is associated therewith. 6. A method according to claim 1 wherein said bounding volume is determined only for those parts of said surfaces/polygons which are located entirely inside a minimal subdivision. 7. A method according to claim 1, wherein said coordinate space is three-dimensional space. 8. A method according to claim 7, wherein said initial area is a unit cube and said minimal subdivisions and said bounding volumes are rectangular boxes. 9. A method according to claim 1, wherein said coordinate space is two-dimensional space. 10. A method according to claim 9, wherein said initial area is a unit square and said minimal subdivisions and said bounding volumes are rectangles. 11. A method according to claim 2 further comprising the step of: constructing an array data structure for storing each of said minimal subdivisions; said array data structure having a plurality of indices wherem said minimal subdivisions is stored in said array data structure as follows: (a) said initial area is stored at array index zero (0); and (b) for said first and second child minimal subdivisions which result when a parent subdivision or said initial area is divided: (i). said first child subdivision which is nearest to an coordinate axis is stored at array index = 1 + said index of said parent subdivision; and (ii). said second child subdivision which is farthest from an coordinate axis is stored at array index = the total number of possible subdivisions of said parent subdivision + said index of said parent subdivision. L A method for associating objects with regions in a scene space; said scene space being defined by one or more coordinate axes; said method comprising the steps: (a) subdividing said scene space into regions according to a predefined mode of subdivision having associated therewith a predefined naming convention; and (b) for each region including said scene space, associating a list of objects that appear in that region or scene space with that region or scene space based upon said predefined naming convention associated with said mode of subdivision. 2. A method according to claim 1 wherein said predefined mode of subdivision includes progressively dividing said scene space into a finite number of parent and/or child regions wherem a parent region is divided into two equal first and second child regions. 3. A method according to claim 2, wherein said predefined naming convention used in associating a region with a list of objects that appear in that region includes determining and associating a binary name with that region. 4. A method according to claim 3, wherein said step of determining said binary name includes constructing a binary name for a region as follows: (a) said binary name of said region corresponding to said scene space = EMPTY/NULL; (b) said binary names of said first and second child regions resulting from subdividing a parent region is constructed as follows: (i). said binary name of said first child region which is nearest to an coordinate axis = adding zero (0) to the right hand side of the name of said parent subdivision or to the binary name of said region corresponding to said scene space; and (ii). said name of said second child region which is farthest away from an coordinate axis = adding one (1) to the right hand side of the name of said parent region or to the name of said region corresponding to said scene space. 5. A method according to claim 1, further comprising determining a bounding volume for each object in scene space. 6. A method according to claim 5 wherein said step of associating a list of objects that appear in that region or scene space with that region or scene space based on a binary naming convention includes associating a list of bounding volumes that appear in that region that region or scene space with that region or scene space. 7. A method according to claim 6, wherem said step of associating a list of bounding volumes includes for each bounding volume : (a) determining a diagonal segment for that bounding volume; said diagonal segment having first and second endpoint coordinates; (b) representing said first and second endpoint coordinates in binary form, the length of which is based on the total number of subdivisions; (c) determming a first and second coordinate prefix having common binary symbols; and (d) copying in turn one binary symbol from said first coordinate prefix and one binary symbol from said second coordinate prefix; and (e) repeating the preceding step until there are no more binary symbols to copy in either of said first or said second prefix thereby constructing a binary name of said region to which that bounding volume is associated therewith. 8. A method according to claim 5, wherein said bounding volume is determined only for those parts of said surfaces/polygons which are located entirely inside a minimal subdivision. 9. A method according to claim 1, wherein said scene space is three-dimensional space. 10. A method according to claim 9, wherein said scene space is a unit cube and said regions and said bounding volumes are rectangular boxes. 11. A method accordmg to claim 1, wherein said scene space is two-dimensional space. 12. A method according to claim 11, wherein said scene space is a unit square and said regions and said bounding volumes are rectangles. 11. A method according to claim 2 further comprising the step of: constructing an array data structure for storing each of said regions; said array data structure having a plurality of indices wherein said regions are stored in said array data structure as follows: (a) said scene space is stored at array index zero (0); and (b) for said first and second child regions which result when a parent region or said scene space is divided: (i). said first child region which is nearest to an coordinate axis is stored at array index = 1 + said index of said parent region; and (ii). said second child region which is farthest from an coordinate axis is stored at array index = the total number of possible subdivisions of said parent region + said index of said parent region. 1. An apparatus for associating surfaces/polygons projected on an initial area in coordinate space with a region of said initial area; said coordinate space being defined by one or more coordinate axes; said apparatus comprising: (a) a first component for generating a list of said surfaces/polygon projections; (b) a second component for determining a bounding volume for each of said surface/polygon projections in said list; (c) a third component for subdividing said initial area into a plurality of minimal subdivisions in accordance with a predefined mode of subdivision; and (d) a fourth component for performing the following: for each minimal subdivision: (i) determine whether one or more of said bounding volumes are at least partially contained within that minimal subdivision based on a predefined naming convention; and (ii) based on the results of said determination in said preceding step, associate said one or more bounding volumes with that minimal subdivision thereby associating surface/polygon projections contained within said associated one ( or more bounding volumes with that minimal subdivision. 2. An apparatus according to claim 1 wherein said third component progressively divides said initial area into a finite number of parent and/or child subdivisions wherein a parent subdivision is divided into two equal first and second child subdivisions. 3. An apparatus according to claim 1, wherein said fourth component determines and constructs a binary name for each minimal subdivision. 4. An apparatus according to claim 3, wherein said fourth component constructs said binary name as follows: said binary name of said minimal subdivision corresponding to said initial area = EMPTY/NULL; said binary names of said first and second child mmimal subdivisions resulting from subdividing a parent subdivision is constructed as follows: said binary name of said first child minimal subdivision which is nearest to an coordinate axis = adding zero (0) to the right hand side of the name of said parent subdivision or to the binary name of said minimal subdivision corresponding to said image plane; and said name of said second child minimal subdivision which is farthest away from an coordinate axis = adding one (1) to the right hand side of the name of said parent subdivision or to the name of said minimal subdivision corresponding to said image plane. 5: An apparatus according to claim 4, wherein said fourth associates a minimal subdivision with one or more bounding volumes as follows: for each bounding volume : (a) determine a diagonal segment for that bounding volume; said diagonal segment having first and second endpoint coordinates; (b) represent said first and second endpoint coordinates in binary form; (c) determine a first and second coordinate prefix having binary symbols, the length of which is based on the total number of subdivisions; and (d) copy in turn one binary symbol from said first coordinate prefix and one binary symbol from said second coordinate prefix; and (e) repeat the preceding step until there are no more binary symbols to copy in either of said first or said second prefix thereby constructing a binary name of a minimal subdivision to which that bounding volume is associated therewith. 6. An apparatus according to claim 1 wherein said fourth component determines a bounding volume only for those parts of said surfaces/polygons which are located entirely inside a minimal subdivision. 7. An apparatus according to claim 1, wherein said coordinate space is three-dimensional space. 8. An apparatus according to claim 7, wherein said initial area is a unit cube and said minimal subdivisions and said bounding volumes are rectangular boxes. 9. An apparatus according to claim 1, wherein said coordinate space is two-dimensional space. 10. An apparatus according to claim 9, wherem said initial area is a unit square and said minimal subdivisions and said bounding volumes are rectangles. 11. An apparatus according to claim 2 further comprising a fifth component for constructing an array data structure for storing each of said minimal subdivisions; said array data structure having a plurality of indices wherein said minimal subdivisions is stored in said array data structure as follows: (a) said initial area is stored at array index zero (0); and (b) for said first and second child minimal subdivisions which result when a parent subdivision or said initial area is divided: (i). said first child subdivision which is nearest to an coordinate axis is stored at aπay index = 1 + said index of said parent subdivision; and (ii). said second child subdivision which is farthest from an coordinate axis is stored at array index = the total number of possible subdivisions of said parent subdivision + said index of said parent subdivision. 12. An apparatus according to either one of the preceding claims said apparatus is provided on a single integrated circuit. 1. An apparatus for associating objects with regions in a scene space; said scene space being defined by one or more coordinate axes; said apparatus comprising: (a) an input unit for providing data representing one or more objects; (b) a processing unit associated with said input unit and configured to: (a) subdivide said scene space into regions according to a predefined mode of subdivision; and (b) for each region including said scene space, associate a list of objects that appear in that region or scene space with that region or scene space based on a binary naming convention. 2. An apparatus according to claim 1 further comprising a storage medium for storing object data and associated region information. 3. An apparatus according to claim 1, wherein said processor associates a region with a list of objects that appear in that region by determining and associating a binary name with that region. 4. An apparatus according to claim 3, wherein processor determines said binary name by constructing a binary name for each region as follows: (a) said binary name of said region coπesponding to said scene space = EMPTY/NULL; (b) said binary names of said first and second child regions resulting from subdividing a parent region is constructed as follows: (i). said binary name of said first child region which is nearest to an coordinate axis = adding zero (0) to the right hand side of the name of said parent subdivision or to the binary name of said region corresponding to said scene space; and (ii). said name of said second child region which is farthest away from an coordinate axis = adding one (1) to the right hand side of the name of said parent region or to the name of said region coπesponding to said scene space. 5. An apparatus according to claim 1, further said processor is further configured to determine a bounding volume for each object in scene space. 6. An apparatus according to claim 5 wherein said processor associates a list of objects that appear in that region or scene space with that region or scene space by associating a list of bounding volumes that appear in that region that region or scene space with that region or scene space. 7. An apparatus according to claim 6, wherein said processor associates a list of bounding volumes with a region as follows: for each bounding volume: (a) determine a diagonal segment for that boundmg volume; said diagonal segment having first and second endpoint coordinates; (b) represent said first and second endpoint coordinates in binary form; (c) determine a first and second coordinate prefix having binary symbols, the length of which is based on the total number of subdivisions; and (d) copy in turn one binary symbol from said first coordinate prefix and one binary symbol from said second coordinate prefix; and (e) repeat the preceding step until there are no more binary symbols to copy in either of said first or said second prefix thereby constructing a binary name of a region to which that bounding volume is associated therewith. 8. An apparatus according to claim 5, wherein processor is configured to determine a bounding volume only for those parts of said objects which are located entirely inside a region. 9. An apparatus according to claim 1 , wherein said scene space is three-dimensional space. 10. An apparatus accordmg to claim 9, wherein said scene space is a unit cube and said regions and said bounding volumes are rectangular boxes. 11. An apparatus according to claim 1, wherein said scene space is two-dimensional space. 12. A method according to claim 11, wherein said scene space is a unit square and said regions and said bounding volumes are rectangles. 13. An apparatus according to claim 2 wherein said processor is further configured to construct an aπay data structure for storing each of said minimal subdivisions; said aπay data structure having a plurality of indices wherein said minimal subdivisions is stored in said array data structure as follows: (a) said initial area is stored at aπay index zero (0); and (b) for said first and second child minimal subdivisions which result when a parent subdivision or said initial area is divided: (i). said first child subdivision which is nearest to an coordinate axis is stored at aπay index = 1 + said index of said parent subdivision; and (ii). said second child subdivision which is farthest from an coordinate axis is stored at aπay index = the total number of possible subdivisions of said parent subdivision + said index of said parent subdivision. 14. An apparatus according to either one of the preceding claims said apparatus is provided on a single integrated circuit. L A method for associating one or more objects with a region in coordinate space comprising the steps of: e defining an orthogonal coordinate system in said coordinate space; e determining coordinate transformation, which transforms the region in coordinate space into unit cube with one of its vertices located at the origin of coordinate system and all edges belonging to this vertex coinciding with coordinate axes in positive direction, e transforming coordinates of the objects with help of said coordinate transformation, e dividing the unit cube into the finite number of rectangular subdivisions with the help of dividing linear subspace parallel to coordinate axes, wherein unit cube is progressively divided, into two equal rectangular subdivisions and each of the resulting rectangular subdivisions is further divided into two equal rectangular subdivisions with the help of the dividing linear subspace orthogonal to the last dividing linear subspace, which closes the volume of this rectangular subdivision, e determining bounding rectangular box with edges parallel to axes of the coordinate system for each object or part of the object, said box contains the entire object or entire part of the object, e determining for said bounding box minimal subdivision, i.e. subdivision containing the bounding box, while said box is not contained entirely in any subdivision inside this subdivision, e associating with each said subdivision the plurality of objects, bounding boxes of which are located at least partially inside this subdivision. 2. The method according to claim 1, wherein said determming minimal subdivision for said boundmg box is executed by means of associating name with each subdivision, wherein said name is a binary string which is constructed in the following way: e for unit cube name is defined as empty, e after each division of unit cube the nearest of the two resulting subdivisions to the coordinate origin is chosen, e the name of the nearest subdivision is set by adding zero symbol to the right hand side of the name of divided subdivision or to the name of unit cube, e the name of the farthest of the two subdivisions is set by adding unit symbol to the right hand side of the name of divided subdivision or to the name of unit cube. 3. The method according to claim 2, wherem said determining minimal subdivisions for said bounding boxes is executed with the help of determining minimal subdivisions for diagonal segment of said bounding boxes in the following way: e representing all coordinates of end points of diagonal segment in binary form, e determining for each pair of coπesponding coordinates coordinate prefix i.e. maximal > initial coinciding part of their binary forms, e reducing the number of binary symbols in coordinate prefix to the maximal length of the name of subdivision, e constructing the binary string for the name of minimal subdivision from left to right by sequential copying symbols from each of the coordinate prefixes in turn, e stopping the name construction if symbols in at least one of the coordinate prefixes have been copied entirely, e defining the minimal subdivision from the constructed name. A. The method according to claim 1, wherein said bounding box is determined only for those parts of said objects, which are located entirely inside the region. 5. The method according to claim 1, wherein said coordinate space is three-dimensional space. 6. The method according to claim 5, wherein said linear subspace is a flat plane, said rectangular subdivision and said bounding rectangular box are rectangular boxes. 7. The method according to claim 1, wherein said coordinate space is two-dimensional space. 8. The method according to claim 7, wherein said linear subspace is a straight line, said rectangular subdivision and said bounding rectangular box are rectangles. 9. The system for associating objects with subdivisions of region in coordinate space comprising the following functional units: e preprocessing unit including: means for transforming coordinates of the objects with help of said coordinate transformation and means for determining of said bounding rectangular box with edges parallel to axes of the coordinate system, β processing unit including: means for determining for each said bounding box minimal subdivision and means for associating with each said subdivision the plurality of objects, bounding boxes of which are located at least partially inside this subdivision, e memory unit including means for storing of data of objects associated with each subdivision, β index-memory unit including means for storing addresses of arrays of data of objects associated with each subdivision. 10. The system according to claim 9, wherein said means for determining minimal subdivisions for said bounding boxes comprises the following means: e means for representing all coordinates of end points of segment in binary form, e means for determining for each pair of coπesponding coordinates coordinate prefix i.e. maximal initial coinciding part of their binary forms, β means for reducing the number of binary symbols in coordinate prefix to the maximal length of the name of subdivision, e means for constructing the binary string for the name of minimal subdivision from left to right by sequential copying symbols from each of the coordinate prefixes in turn, e means for stopping the name construction if symbols in at least one of the coordinate prefixes have been copied entirely, e means for calculating the address of the minimal subdivision in said index-memory unit from the constructed name. 11. The system accordmg to claim 9, wherein said processing unit comprises means for determining bounding box for part of transformed object, and stack-memory means for storing data concerning this bounding box. 12. The system according to claim 9, wherein said processing unit is capable of executing read/write operations from/to the memory unit and the index-memory unit in parallel. 13. The system accordmg to claim 9, wherein said preprocessing unit comprises means for determining only those parts of said objects, which are located entirely inside the region.

Inventors: MAKAROV IGOR, ZVIAGUINA NATALIA, MAKAROV, IGOR, ZVIAGUINA, NATALIA
Applicants: MAKAROV IGOR, ZVIAGUINA NATALIA, MAKAROV, IGOR, ZVIAGUINA, NATALIA
Application year: 2001
Main classification: G06T17
IPC codes: G06T15, G06T17