USRE42406E1 - Multi-resolution geometry - Google Patents

Multi-resolution geometry Download PDF

Info

Publication number
USRE42406E1
USRE42406E1 US11/091,003 US9100305A USRE42406E US RE42406 E1 USRE42406 E1 US RE42406E1 US 9100305 A US9100305 A US 9100305A US RE42406 E USRE42406 E US RE42406E
Authority
US
United States
Prior art keywords
vertex
collapse
list
vertices
level
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.)
Expired - Lifetime
Application number
US11/091,003
Inventor
Saul S. Kato
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hanger Solutions LLC
Original Assignee
Sugarloaf Acquisitions LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sugarloaf Acquisitions LLC filed Critical Sugarloaf Acquisitions LLC
Priority to US11/091,003 priority Critical patent/USRE42406E1/en
Assigned to SUGARLOAF ACQUISITIONS, LLC reassignment SUGARLOAF ACQUISITIONS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SPATIAL CORPORATION
Assigned to SPATIAL CORPORATION reassignment SPATIAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SVEN TECHNOLOGIES, INC.
Assigned to SVEN TECHNOLOGIES, INC. reassignment SVEN TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KATO, SAUL S.
Application granted granted Critical
Publication of USRE42406E1 publication Critical patent/USRE42406E1/en
Assigned to RATEZE REMOTE MGMT. L.L.C. reassignment RATEZE REMOTE MGMT. L.L.C. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: SUGARLOAF ACQUISITIONS LLC
Anticipated expiration legal-status Critical
Assigned to HANGER SOLUTIONS, LLC reassignment HANGER SOLUTIONS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTELLECTUAL VENTURES ASSETS 161 LLC
Assigned to INTELLECTUAL VENTURES ASSETS 161 LLC reassignment INTELLECTUAL VENTURES ASSETS 161 LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RATEZE REMOTE MGMT. L.L.C.
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Definitions

  • This invention relates to the field of generating three-dimensional graphics; more specifically, to the field of generating multiple resolutions of an object in a three-dimensional environment.
  • Three-dimensional graphics use polygons to create the object to be rendered. These polygons are created and manipulated to portray curvature and details of the object. The more polygons used to create an object, the more detailed and realistic an object will appear. However, the more polygons used to create an object, the more computations required to render the object, thus slowing down the speed at which the object is rendered. Thus, there is a tradeoff from the developer's standpoint between speed and realism.
  • the user with the low-end computer will most likely still have images which are slow and choppy, because the developers are unwilling to completely sacrifice realism, and the user with a high-end computer will have images which appear artificial and robotic because the application is not designed to take advantage of the high-end machine's greater processing power. In fact, on some high-end systems, the application will be too fast to play or interact with because the polygon count is too low.
  • Level of Detail mapping provides different levels of resolutions of an object based upon the distance of the object to the screen.
  • the developer In order to create the different levels of detail, the developer must create different versions of the object for each level required. Typically, only three or four levels are used because storage of multiple versions of each object to be rendered can consume too much of the user's system resources.
  • the highest level of detail of each object must be created in consideration of the user with an inefficient computer who will be using the application. Thus, the highest level of detail cannot contain too many polygons or the image will appear slow and choppy on the low-end user's computer. Again, this image will also appear angular and robotic on the high-end user's computer, as it does not take advantage of the high-end computer's greater processing power.
  • an apparatus, system, and method for producing realistic rendering of a 3D object while minimizing the use of user system resources and maximizing fidelity without sacrificing speed.
  • the invention produces a continuous level of detail of an object using vertex merging responsive to the location of the object on the screen and other factors, thus eliminating the object popping effect.
  • vertex merging responsive to the location of the object on the screen and other factors, thus eliminating the object popping effect.
  • vertices of the object are merged together in a manner designed to cause the least visual distortion.
  • polygons within the object are eliminated, thus lowering the polygon count of the object continuously as it moves farther and farther away from the screen.
  • the invention requires only one version of the object to be authored and stored on the user's system, thus minimizing the impact on system resources.
  • One vertex list is used which preferably specifies the highest level of detail, and the system in accordance with the present invention is able to then generate the continuous level of detail of the object for display on the screen.
  • the system advantageously increases and decreases the resolution of the objects on the fly. Thus, as only the current level of detail being displayed is stored, minimal use of memory is required. By storing certain minimum information which is determined prior to run-time to guide the resolution changes, the resolution changing is performed at run time at optimal speed.
  • Another benefit of the present invention is its ability to allow a developer to tweak the vertex merging in accordance with the developer's own preferences.
  • the invention automatically adjusts the amount of polygons in a screen responsive to the capabilities of a user's system, providing an optimal image for every user.
  • the invention monitors the system to determine the frame rate at which the frames are being rendered, and adjusts the total amount of polygons allowable on the screen at one time accordingly.
  • a target frame rate may be set, which allows the user to specify the speed at which the scenes should be rendered.
  • the present invention then dynamically adjusts the total amount of polygons to ensure the frame rate is maintained.
  • the invention allows a polygon count to be specified, and then ensures that this amount of polygons is always on the screen, regardless of the frame rate.
  • a three-dimensional visual representation of an object having multiple resolutions is created by retrieving a vertex list for the object, determining a collapse order for the vertices identified in the vertex list, reordering the vertices identified in the vertex list responsive to the determined collapse order, and creating a vertex collapse list responsive to the collapse order, where the vertex collapse list specifies, for a target vertex, a neighbor vertex to collapse to.
  • the vertex list may comprise 3D coordinates of vertices without referring to other vertex attributes or, in alternate embodiments, the vertex list may refer to other vertex attributes such as colors or normals.
  • the collapse order of the object is determined by determining an optimal collapse path from the set of collapse paths, computing visual distortion factors for the selected collapse path, determining a collapse value for the selected collapse path, repeating for each path in the set of collapse paths, comparing the collapse values to determine a collapse path causing a least visual distortion to the object, selecting a next vertex to be collapsed, collapsing the object along the selected path, and repeating until a minimum resolution level is attained.
  • FIG. 1a is a block diagram of a preferred embodiment of a computer system in accordance with the present invention.
  • FIG. 1b is a block diagram of a preferred embodiment of a modular distributed architecture computer system in accordance with the present invention.
  • FIG. 2a illustrates an overview of a preferred embodiment as of creating a collapse order list in accordance with the present invention.
  • FIG. 2b illustrates a first instance of an object prior to having a vertex collapsed.
  • FIG. 2c illustrates the object of FIG. 2b after having a vertex collapsed in accordance with the present invention.
  • FIG. 2d illustrates an object at a lower resolution.
  • FIG. 2e illustrates the object of FIG. 2d with a vertex added.
  • FIG. 3 is a more detailed diagram of a preferred embodiment of determining a collapse order in accordance with the present invention.
  • FIG. 4 is a more detailed diagram of a preferred embodiment of determining a set of collapse paths in accordance with the present invention.
  • FIG. 5 is a more detailed diagram of a preferred embodiment of selecting a collapse path in accordance with the present invention.
  • FIG. 6 is a more detailed diagram of a preferred embodiment of computing visual distribution factors in accordance with the present invention.
  • FIG. 7 is a more detailed diagram of a preferred embodiment of determining a collapse value for a selected collapse path in accordance with the present invention.
  • FIG. 8 illustrates an alternate embodiment of a preferred embodiment of determining a collapse order in accordance with the present invention.
  • FIG. 9 illustrates an alternate embodiment of determining a set of collapse paths in accordance with the present invention.
  • FIG. 10 is a flow chart illustrating a preferred embodiment of the runtime manager in accordance with the present invention.
  • FIG. 11 is an alternate embodiment of the runtime manager in accordance with the present invention.
  • FIG. 12 illustrates embodiments of analyzing the optimal collapse level of an object in accordance with the present invention.
  • FIG. 13 illustrates an embodiment of the present invention for use in the remote transfer of data.
  • FIG. 1 a illustrates a preferred embodiment of a computer system 100 in accordance with the present invention.
  • System 100 is typically implemented on a computer system 100 such as a personal computer having an Intel PentiumTM processor and running the WindowsTM 95 operating system from Microsoft Corporation.
  • ROM 112 is read-only memory for storing data having unvarying functionality.
  • Disk 124 stores data of which immediate access is not required, for example, the operating system module, databases, and other modules.
  • disk 124 stores a vertex list generator module 138 , a collapse path determiner module 142 , a collapse value analyzer module 146 , a collapse path selector module 150 , vertex lists 158 and a collapse list 154 .
  • disk 124 stores applications, run time manager 162 , and collapse lists 154 .
  • the modules are moved to RAM 108 , which stores data of which more immediate access is required.
  • a display 120 and input device 116 are connected to the processor 104 through bus 118 and allow a user 170 or a developer 166 to interact with the modules stored in disk 124 .
  • a vertex list generator 180 comprising an application specific integrated circuit (ASIC) coupled to a memory, generates vertex lists 158 .
  • the vertex lists 158 are transmitted to a collapse path determiner 184 which determines collapse paths from the received vertex lists 158 .
  • the collapse path data is transmitted to a collapse value analyzer 188 , which analyzes the collapse path data to determine collapse values for each collapse path.
  • These values, along with the paths themselves, are transmitted to the collapse path selector 192 , which selects a collapse path from the list of vertices which, if the object is collapsed along the selected path, causes the least visual distortion to a viewer watching the collapse.
  • This selected path is stored in the collapse list memory 194 , and the new set of vertices is generated by the vertex list generator 138 responsive to the selected collapse path.
  • the system continues to generate and select collapse paths until the vertex list generator no longer has any vertices remaining from which to generate a list, and the processing of the system is thus complete.
  • the final collapse list is transmitted from the collapse list memory to the processor 104 of the developer's computer 100 .
  • the data source 196 stores the original vertex list for processing.
  • Data sources include the application requesting the object modeling, or a secondary source which stores objects requiring modeling in accordance with the present invention.
  • the modules 138 , 142 , 146 , 150 are implemented as a set of Field Programmable Gate Arrays, and are programmed to perform the separate functions described above. By compartmentalizing the separate functions in a distributed architecture, faster and more robust processing is achieved.
  • FIG. 2a illustrates the processing of a preferred embodiment of the present invention for generating collapse orders.
  • a vertex list 158 is retrieved 200 .
  • vertex lists 158 are provided by the developer 166 for each object the developer 166 would like to have modeled.
  • the vertex list 158 may contain indices into a 3D coordinate map, or the vertex list 158 may index into other maps, such as texture maps, or normal maps.
  • the vertex list 158 is usually “cleaned” prior to being processed.
  • vertex lists 158 may specify triangles having edges close to one another but which do not actually overlap.
  • the vertex list 158 may specify a maximum set of vertices used in the object, or a maximum and a minimum set of vertices in the object.
  • the minimum set of vertices is specified by the developer 166 to define a minimum quality level the object may not be collapsed beyond. As more vertices are collapsed in an object, the less realistic the object appears if examined closely. Therefore, for some objects the developer 166 may decide that there is a point beyond which the object is no longer recognizable as its true shape, even though the object at that point is very small on the screen and therefore does not require many polygons to specify sufficient detail. For these objects, the developer 166 specifies a minimum set of vertices to which the object may be collapsed.
  • the system identifies these vertices during its processing, and does not collapse those vertices in the object.
  • the vertex list 158 may also specify a nested set of vertex sets that represent progressively lower resolutions of the object. In this case the system generates a collapse list that interpolates between the nested vertex sets.
  • the system proceeds to determine 204 a collapse order.
  • the collapse order of an object is specifies the order in which individual vertices are merged into other vertices. Vertices are collapsed along collapse paths, with the goal of causing the least visual distortion possible for the object. For example, as shown in FIG. 2b , an object is shown having multiple vertices, three of which are specified as V 1 , V 2 , and V 3 . If the system in accordance with the present invention determines that the first collapse path is to collapse V 1 to V 2 , the object as shown in FIG. 2c results. The object in FIG. 2c has less polygons to render than the object in FIG. 2b . Thus, the object in FIG.
  • 2c is of lower resolution than the object in FIG. 2b , and should be displayed when the object is located closer to the background or due to other factors described in greater detail below, when added resolution is most likely to go unnoticed by the user 170 .
  • the processor is able to devote more time to process objects which are closer to the foreground. This allows the objects in the foreground to have higher polygon counts without impacting on the frame rate.
  • the vertex list 158 is reordered 208 into the order specified by the collapse order.
  • the vertex to be collapsed first is identified and the other vertices are sequenced accordingly based on their collapse priority.
  • the system advantageously minimizes its footprint in memory by using the existing vertex list 158 , instead of using another construct to store this information.
  • the system creates 212 a vertex collapse list 154 . This list specifies the vertex to which the target vertex is to be collapsed; alternatively, the list specifies the vertices to which to connect an added vertex.
  • the system may simply eliminate vertices as ordered in the vertex list until the desired resolution is obtained.
  • a correct triangle list must be generated by the system at the desired resolution.
  • the triangle list specifies connectivity information regarding all of the triangles which must be rendered to achieve a given resolution.
  • an object is in a first, lower resolution state.
  • a vertex is added to the object to increase the number of polygons and thereby increase the resolution of the object.
  • the system does not know which vertices to connect to the new vertex.
  • more information is stored in a vertex collapse list 154 .
  • the vertex collapse list 154 stores the connectivity information for the neighbor vertices to which each vertex is connected.
  • the vertices to which to connect V 1 are also specified in the vertex collapse list 154 , and thus the system knows the correct edges to draw.
  • a correct triangle list is generated for each resolution.
  • the information regarding the two lists 154 , 158 are stored in the same location to optimize processing.
  • the term list is used descriptively, as arrays and other data structures are preferably used to store the collapse information.
  • FIG. 3 is a more detailed diagram of a preferred embodiment of determining a collapse order in accordance with the present invention.
  • a set of collapse paths is determined 300 .
  • a set of collapse paths identifies every possible collapse path between each vertex and every other vertex to which it is connected, at the current resolution of the object.
  • there are 11 vertices V 1 -V 11 ).
  • four potential collapse paths C 1 , C 2 , C 3 , C 4 ) may be identified.
  • a collapse path from the set of collapse paths is selected 304 .
  • Visual distortion factors are computed 308 for the selected collapse path.
  • Visual distortion factors are measurements of the effect of a given collapse on the object. Some collapse paths will have a much greater visual effect on the user than others. For example, if V 1 is collapsed to V 2 , the object will appear to shrink noticeably in width. However, if V 8 is collapsed to V 11 , the object will not appear as distorted to the user.
  • the system preferably captures these distinctions by computing several visual distortion factors, including area change, angular deviation, and local volume change, described in greater detail below.
  • Each collapse path is given 312 a collapse value as a function of the computed visual distortion factors for that path.
  • the collapse value is preferably a weighted combination of the visual distortion factors for the path. Weighting the different factors allows the developer 166 to specify the importance of the factors as applied in the particular application being developed.
  • the system determines 316 whether there are more collapse paths. If there are more collapse paths, a next path is selected 304 and the process described above is repeated. If there are no more collapse paths, the system compares the collapse values of the collapse paths to determine 220 a collapse path which causes the least visual distortion to the object.
  • the vertex to be collapsed is identified 324 responsive to the determined collapse path, and a collapse priority is assigned 326 to the vertex to be used upon reordering the vertex list.
  • the object is collapsed 328 along the collapse path.
  • the system determines 332 if there are more than one vertex not in the minimum point set remaining. If there are not, the system then moves to reordering the vertex list 158 . If there are more than.one vertex remaining, the system repeats the above process, treating the collapsed object as a new object to be processed.
  • the system processes the object until a set of collapse paths are determined which cause the least visual distortion to the object, and reduce the object from a maximum resolution to a minimum resolution.
  • the vertices to which the target vertex is connected, and the change in connectivity as expressed by the triangle list are stored.
  • this allows the system to know which other vertices are connected to the added vertex by which triangles. This information is stored in the vertex collapse list 154 , as described above.
  • FIG. 4 illustrates an alternate embodiment of the method of determining a set of collapse paths.
  • a target vertex is selected 400 . Any one of the existing vertices of the object may be selected; order does not matter.
  • an input is received 404 which specifies the maximum of neighbor vertices to examine for each vertex. This allows a developer 166 to control the processing time of the system. By limiting the number of neighbor vertices which may be examined by the system for each vertex, the system does not have to perform as many calculations.
  • a neighbor vertex is a vertex connected along an edge to the target vertex.
  • a neighbor vertex would include any vertex directly connected to the target vertex, as well as any vertex which is connected to the target vertex through another vertex or vertices. As can be imagined, this list may grow very large if every vertex is processed. However, as described above, a maximum number of neighbor vertices may be specified to minimize processing.
  • a collapse path is determined 412 between the target vertex and the neighbor vertex.
  • the system determines 416 whether the maximum number of collapse paths have been reached. If it has, the system determines 420 whether there are more vertices. If there are more vertices, the collapse paths for the other vertices are computed as described above. If there are no more vertices, the system selects 304 a collapse path from the set of collapse paths.
  • FIG. 5 illustrates one embodiment of selecting a collapse path.
  • processor computations are minimized by limiting the number of collapse paths which are to have collapse values.
  • collapse values are computed for every collapse path. After collapse path is selected, the object is collapsed along the path. A new set of collapse paths are generated as described above. However, in this iteration, collapse values are generated for those collapse paths which are within a predefined distance from the collapse path which was previously used to collapse the object. Many collapse paths will remain the same after the previous collapse, and their collapse values, i.e., the objective measurement of the visual impact of their collapse on the object, will also remain the same.
  • FIG. 2b if C 1 is chosen to be the collapse path, the FIG. in 2 c results.
  • the collapse value for the path between V 8 and V 11 may remain the same in the two versions of the object because the vertices around V 8 and V 1 V11 are not affected by the collapse of C 1 . Therefore, there is no need to recompute the collapse value for the V 8 -V 11 path.
  • the computations of the system are greatly minimized, and the processing becomes much faster.
  • the system determines 500 whether a collapse path is within a threshold distance from the previous collapse path.
  • the threshold may be preset or defined by the developer 166 .
  • the developer 166 may experiment with different thresholds to maximize accuracy while minimizing computations. If the collapse path is within the threshold, the system computes 308 visual distortion factors for the collapse path. If the collapse path is not within the threshold, the existing collapse value is continued to be used as the value for that path, and a next path is selected.
  • FIG. 6 illustrates three visual distortion factors preferably computed in accordance with the preferred embodiment of the present invention.
  • the area change of the object is computed 600 in response to collapsing the object along the selected collapse path.
  • the area change of the object is computed by computing the surface area of the object prior to the collapse, and then computing the surface area of the object after the collapse. Subtracting the difference between the two areas indicates the effect on the surface area of the object performing the collapse will have.
  • the angular deviation is computed 604 in response to collapsing the object along the collapse path. Angular deviation measures the effect on the local curvature of the object the collapse will have.
  • the system calculates normals of the triangles of which the vertex is a part.
  • Points which represent high curvature are more important to the visual appearance of an object. Thus, these points are assigned a measure which lowers their collapse priority.
  • the local volume change is computed 608 in response to the collapse.
  • a pyramid is created from the target vertex, using the target vertex as the apex of the pyramid.
  • the base of the pyramid is the triangle formed by three consecutive neighbor vertices.
  • a sequence of these pyramids is constructed from successive triples of neighbor vertices, and their volume is summed.
  • the volume of the object is determined, the target vertex is collapsed along the collapse path, and the volume is computed again.
  • the change in volume is used as an indication of the affect on the visual appearance of the object.
  • Calculating pyramidal “local volume” change is much faster than calculating the “true” volume of an object, and more accurately accounts for the topology of an object.
  • Other measures of visual distortion known to those of ordinary skill in the art may also be used in accordance with the present invention.
  • Statistical measures of error such as surface deviation can also be used to compute visual distortion.
  • FIG. 7 illustrates an alternate embodiment of determining a collapse value for the selected collapse path.
  • the system receives 700 an input from the developer 166 specifying a priority weight for the different factors.
  • the system multiplies 704 the factors by the specified priority weights, and then combines 708 the factors to obtain a collapse value. Allowing the developer 166 to specify the weights allows more creative control for the developer 166 .
  • the developer 166 may decide that the object is very spiky, and therefore the angular deviation factor should be given the highest priority.
  • the developer 166 would then specify a high weight for the angular deviation factor. Those collapses which have a large angular deviation factor would be prioritized lower for collapsing. If an object represents an organic shape, the local volume factor becomes more important.
  • a developer 166 would specify a higher weight for the local volume factor, and those collapse having a great effect on local volume would be prioritized lower. If the developer 166 does not specify weights, default values which evenly weight the factors are used. In one embodiment, the developer 166 is able to increase the speed of the processing of the system by eliminating factors from consideration. For example, the developer 166 may determine that local volume change is not relevant to a specific object. The developer 166 then specifies that local volume change should not be computed for this object. The system is then able to process the object much faster.
  • FIG. 8 illustrates an alternate embodiment of the determining a collapse order step 204 .
  • This embodiment allows the developer 166 to “tweak” the collapse order interactively.
  • the present invention beneficially allows the developer 166 to introduce their subjective preferences into how the object is collapsed.
  • the set of collapse paths is determined 800 as described above.
  • the object is displayed to the user at the current resolution level. If this was the first iteration, the object would be at the maximum resolution level.
  • the system selects a collapse path randomly from the set of collapse paths, and the object is collapsed.
  • the system displays the collapsed object to the developer 166 , and the developer 166 can see the effect of the collapse on the object.
  • the developer 166 approves of the collapse, the developer 166 selects the path. If the system receives 820 an input selecting the path, the system associates a collapse priority for the path based on the number of paths which have already been selected. If the developer 166 does not approve of the collapse, a next collapse path is selected and the process is repeated.
  • collapse values are calculated for each path and the paths are prioritized as described above.
  • the path designated to be collapsed first is chosen as the first path to be collapsed and displayed to the developer 166 . If the developer 166 selects this path, the path retains its priority. A new set of collapse paths is generated and the highest prioritized path from the new set selected for display to the developer 166 . If the developer 166 does not select the path, the next highest prioritized path is selected and displayed to the developer 166 .
  • the developer 166 may specify at any time a particular path the developer 166 sees in the object the developer 166 wants collapsed. Such a selection by the developer 166 overrides any previous prioritization by the system.
  • FIG. 9 illustrates an embodiment of the present invention in which a minimum vertex set is specified by the developer 166 prior to computing collapse paths.
  • a minimum vertex set as described above, is a set of vertices which the developer 166 does not want collapsed.
  • the system determines whether the collapse path collapses a vertex specified in the minimum vertex set. If the vertex is on the minimum vertex set, the collapse path is not selected.
  • texture maps are indexed by the vertices.
  • Texture maps provide texture for the mapped area, giving an object a realistic appearance. Textures for different triangles may be quite different. Therefore, when a triangle is collapsed, the system must determine the affect of the loss of the texture of the triangle on the appearance of the object. Vertices which are on the edges of texture discontinuities are not collapsed, because of the affect the collapse will have on the appearance of the object. Thus, when collapse paths are selected, the vertices in the path are examined to determine if they are located on the edge of a texture discontinuity. If they are, the collapse path is not selected.
  • FIG. 10 illustrates the run-time manager of the present invention.
  • the run-time manager performs the adding and subtracting of polygons to and from the object as required during the real-time execution of the application.
  • the run-time manager works in conjunction with the graphics system of the computer and the application program for which the objects have been processed.
  • the manager collapses 1000 the objects referenced in the application.
  • the manager stores 1004 extended vertex collapse information for each collapse level of the objects in a table.
  • Extended vertex collapse information is the information stored in the vertex collapse list 154 specifying what vertex the each collapsing vertex will collapse to, as well as which triangles need to be eliminated from the model.
  • the processor By storing the extended vertex collapse information in the table, the processor is able to more quickly add and subtract polygons because the processor simply has to access the table to determine which vertices and triangles to add, subtract, or re-index and does not have to perform any demanding computations.
  • the extended tables for each object are already created in the development stage, and the tables are simply loaded into data memory for easy access when the application is initiated.
  • the runtime manager awaits a request from the application for a collapse level from an object. The original appearances of each object are represented in a default resolution.
  • the runtime manager determines 1012 whether the requested resolution requires a collapse level greater than the current collapse level of the object.
  • the current collapse level is known because the current collapse level of the object is the only version of the object which is stored in memory. If the requested resolution requires a greater collapse level for the object, vertices are added to the object in accordance with the vertex collapse information in the table until the requested collapse level is met.
  • FIG. 11 illustrates an alternate embodiment of the runtime manager in which objects are analyzed to determine a collapse level.
  • the object is collapsed 1100 and vertex information is stored 1104 for each collapse level, as described above.
  • the object is analyzed 1108 to determine an optimal collapse level. If the manager determines 1112 the optimal collapse level requires a higher resolution, vertices are added 1120 to the object. If the optimal level requires a lower resolution than the current resolution, vertices are collapsed 1116 .
  • FIG. 12 illustrates several methods for analyzing the optimal collapse level of an object.
  • One or all of these methods can be used in accordance with the present invention to determine an optimal collapse level.
  • the velocity of the object is determined 1200 .
  • the velocity of an object is determined by measuring the distance an object moved between the current frame and the last frame, and dividing by the time elapsed between frames. Alternatively, velocity is calculated by measuring distance traveled over several of the most recently rendered frames and dividing by the total elapsed time of the rendering of the whole recent frame sequence.
  • the determined velocity is compared to a table which maps velocities of the object to collapse levels. This table may be specifically designed for a given object, or may be a global table which provides general correlations between velocity and collapse level.
  • the runtime manager dynamically manages the resolution of the object to provide optimal fidelity while minimizing the use of processing power.
  • the projected area of an object is another factor which is used by the runtime manager to determine an optimal collapse level for an object.
  • the projected area of an object is the area which the object will occupy as rendered on the display. The greater the projected area of an object, the higher the resolution that is required.
  • the system determines 1208 the current projected area of the object, and compares 1212 the projected area to a table which correlates projected area and collapse levels. The polygon count is then adjusted 1232 accordingly.
  • the present invention also provides for global polygon count management.
  • the user selects a target polygon count for each frame.
  • the system determines 1216 the number of polygons currently being displayed in a frame.
  • the total number of polygons displayed in a frame may be calculated by determining which objects are on screen and totaling the number of polygons in each object, or by having the renderer keep an internal tally of how many triangles it drew on screen in one frame. This number is compared 1220 to the predefined target polygon count. If the runtime manager determines 1232 that the current polygon count is less than the target polygon count, more polygons are added 1236 .
  • polygons are subtracted 1240 away.
  • the determination of which objects to add and subtract polygons to and from may be made in a number of ways. Polygons may be added and removed uniformly to and from all polygons. Alternatively, objects may be individually analyzed and polygons added and subtracted on an individual basis.
  • the user 170 is able to select a target frame rate.
  • the manager determines 1224 a current frame rate by monitoring the processor clock and determining how long it is taking to render frames.
  • the current frame rate is then compared 1228 to the target frame rate. If runtime manager determines 1232 that the current frame rate is faster than the target frame rate, polygons are added 1236 to the frame to slow the frame rate down. If the current frame rate is slower than the target frame rate, polygons are subtracted 1240 from the frame to speed the frame rate up.
  • the runtime manager allows for dynamic global polygon management requiring minimal input from the user 170 .
  • This management process allows the present invention to be platform universal, as if the invention is used on a system with a slower processor, the target frame rate or polygon count may be set lower, and the benefits described above are still provided.
  • a system with a faster processor can be set to have a higher frame rate or polygon count, and the higher processing power of the system is maximized by the present invention.
  • the present invention may also be used to transmit data through remote connections, as illustrated in FIG. 13 .
  • a remote connection for example, the Internet
  • a user 170 is often waiting for data to download before a requested object may be displayed.
  • the minimum vertex set, or the lowest collapse level of an object is transmitted to the user 170 .
  • This minimal resolution version of the object requires less data to represent, and therefore is transmitted much faster to the user 170 .
  • the additional collapse levels are sent serially to the user 170 to increase the resolution of the object to its maximum resolution. As each collapse level typically adds only a few polygons, each collapse level is also transmitted very quickly.
  • This method allows the user to receive a minimal version of the object very quickly, and then a full resolution later in time. If the user 170 does not require a full resolution of an object, the user 170 does not have to wait for unnecessary data (higher resolution data) to be transmitted before the user 170 can see the object. Even if the user 170 requires a higher resolution short of the maximum resolution, the present invention transmits the higher resolutions in packets which allows the user 170 to view the object in a shorter period of time than it would take to wait for the entire maximum resolution version of the object to download.
  • a request is received 1300 for an object across a remote connection. Responsive to this request, a minimal resolution of the object is sent 1304 to the requester. This minimal resolution of the object is the lowest resolution of the object which may be displayed and still accurately describe the object. If a minimal vertex set of the object has been specified by the developer 166 , this set is used as the minimal resolution to be sent.
  • a packet of information which comprises the vertices required to increase the collapse level of the object to a next higher resolution is sent 1308 . This information comprises the vertices and the connections required to increase the resolution of the object, as described in detail above. Then, the system determines 1312 whether a maximum resolution or target resolution has been sent.
  • a target resolution may be specified by the user 170 in requesting the download of the object.
  • the target resolution option allows the user to optimize the time required for the data transfer to meet the user's fidelity needs. If the user 170 does not require a maximum resolution of an object, the user can so specify, and only an intermediate resolution of the object is sent. This option is beneficial if, for example, the user 170 is in a hurry to view objects other than the one being downloaded, or the user 170 has a computer which is not capable of viewing high resolutions. If the target or maximum resolution has not been met, another packet is sent to the user 170 . Once the target is met, the data transmission is complete.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

A system, method, and apparatus is disclosed for creating a three-dimensional visual representation of an object having multiple resolutions by retrieving a vertex list for the object, determining a collapse order for the vertices identified in the vertex list, reordering the vertices identified in the vertex list responsive to the determined collapse, order, and creating a vertex collapse list responsive to the collapse order, where the vertex collapse list specifies, for a target vertex, a neighbor vertex to collapse to. The vertex list may comprise 3D coordinates of vertices without referring to other vertex attributes or, in alternate embodiments, the vertex list may refer to other vertex attributes such as colors or normals. A runtime manager is disclosed which dynamically manages the polygon counts for objects and frames based upon the location, velocity, and area of the object. Polygon counts are also adjusted based upon a target frame rate and a target polygon count. A system is also disclosed for continuous transfer of data across a remote connection in which different levels of resolution are transmitted individually.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 09/243,099, filed on Feb. 2, 1999, which claims priority under 35 U.S.C. §119(e) from U.S. provisional patent application serial No. 60/089,794, filed on Jun. 18, 1998.
DESCRIPTION OF THE RELATED ART
1. Field of the Invention
This invention relates to the field of generating three-dimensional graphics; more specifically, to the field of generating multiple resolutions of an object in a three-dimensional environment.
2. Background of the Invention
Realistic three-dimensional object rendering for use in games and other software applications has been the goal for software and hardware makers in the computer industry for years. However, numerous problems prevent the achievement of realistic three-dimensional object rendering on a typical user's home computer.
Three-dimensional graphics use polygons to create the object to be rendered. These polygons are created and manipulated to portray curvature and details of the object. The more polygons used to create an object, the more detailed and realistic an object will appear. However, the more polygons used to create an object, the more computations required to render the object, thus slowing down the speed at which the object is rendered. Thus, there is a tradeoff from the developer's standpoint between speed and realism.
The resolution of this problem is not easy. As most users do not have the latest, most powerful personal computer, the developer must design the objects for the lowest common denominator if the developer wants to reach the greatest number of potential users for the product. Thus, the developer must assume the user's processor is slow and is therefore capable of only rendering a small number of triangles per second. Therefore, the developer, when making the tradeoff described above, must favor the speed side of the equation, and design objects with fewer triangles than if faster machines were being used by all users. This solution, however, pleases neither the user with a low-end computer nor the user with the high-end computer. The user with the low-end computer will most likely still have images which are slow and choppy, because the developers are unwilling to completely sacrifice realism, and the user with a high-end computer will have images which appear artificial and robotic because the application is not designed to take advantage of the high-end machine's greater processing power. In fact, on some high-end systems, the application will be too fast to play or interact with because the polygon count is too low.
Another problem facing the developer is the fact that the same object requires more detail when closer to the screen than it requires if it is in the background. When an object is closer to the screen, the angles and straight edges of the polygons comprising the object can be seen more clearly. At this point, more polygons are needed to smooth the angles and continue the realistic rendering of the object. However, the most detailed version of the object cannot always be used to render the object because the application will require too much computing power to quickly and smoothly render images on the screen. In order to achieve smooth 3D animation, the processor must render 3D objects at 20 to 60 frames per second. If too many polygons are used for each object, thus providing the necessary realism for the object when it is close to the screen, then the processor will not be able to achieve the above minimum frame rate required for smooth rendering.
One solution to allow realistic rendering of three-dimensional objects while also limiting the number of polygons on the screen is to use Level of Detail mapping. Level of Detail mapping provides different levels of resolutions of an object based upon the distance of the object to the screen. In order to create the different levels of detail, the developer must create different versions of the object for each level required. Typically, only three or four levels are used because storage of multiple versions of each object to be rendered can consume too much of the user's system resources.
There are several drawbacks to the level of detail methodology. First, this method has a large impact on system resources, as described above. Each object now requires three or four times more storage space than previously required to store each version of the object. Each level requires a separate vertex list as well as a separate data structure. Second, when transitioning from one level to another, an effect known as object popping occurs. The higher detailed version of an object is abruptly rendered as the object moves towards the screen, and “pops” out at the viewer, ruining the 3D immersive qualities of the application. The level of detail method also requires extra authoring of each version of the object, requiring more time from the developer. Level of Detail also does not address the lowest common denominator problem described above. The highest level of detail of each object must be created in consideration of the user with an inefficient computer who will be using the application. Thus, the highest level of detail cannot contain too many polygons or the image will appear slow and choppy on the low-end user's computer. Again, this image will also appear angular and robotic on the high-end user's computer, as it does not take advantage of the high-end computer's greater processing power.
SUMMARY OF THE INVENTION
In accordance with the present invention, an apparatus, system, and method is disclosed for producing realistic rendering of a 3D object while minimizing the use of user system resources and maximizing fidelity without sacrificing speed. The invention produces a continuous level of detail of an object using vertex merging responsive to the location of the object on the screen and other factors, thus eliminating the object popping effect. As the object moves towards the background, and therefore requires less polygons in order to provide a realistic rendering, vertices of the object are merged together in a manner designed to cause the least visual distortion. As the vertices are merged, polygons within the object are eliminated, thus lowering the polygon count of the object continuously as it moves farther and farther away from the screen. As an object moves towards the screen, vertices are added to the object, adding polygons to the object and thus providing a more realistic representation of the object as it grows close to the user and fine details become necessary. Thus, at any given moment, every object on the screen only has as many polygons as is required to provide a realistic rendering of the object. No polygons are being unnecessarily drawn, and thus optimum use is being made of the user's system. No object-popping effects are created as polygons are added or removed from the object on a continual basis based on the object's movement in the 3D environment.
Additionally, the invention requires only one version of the object to be authored and stored on the user's system, thus minimizing the impact on system resources. One vertex list is used which preferably specifies the highest level of detail, and the system in accordance with the present invention is able to then generate the continuous level of detail of the object for display on the screen. Also, the system advantageously increases and decreases the resolution of the objects on the fly. Thus, as only the current level of detail being displayed is stored, minimal use of memory is required. By storing certain minimum information which is determined prior to run-time to guide the resolution changes, the resolution changing is performed at run time at optimal speed. Another benefit of the present invention is its ability to allow a developer to tweak the vertex merging in accordance with the developer's own preferences. Finally, the invention automatically adjusts the amount of polygons in a screen responsive to the capabilities of a user's system, providing an optimal image for every user. In one embodiment, the invention monitors the system to determine the frame rate at which the frames are being rendered, and adjusts the total amount of polygons allowable on the screen at one time accordingly.
Additionally, a target frame rate may be set, which allows the user to specify the speed at which the scenes should be rendered. The present invention then dynamically adjusts the total amount of polygons to ensure the frame rate is maintained. Alternatively, the invention allows a polygon count to be specified, and then ensures that this amount of polygons is always on the screen, regardless of the frame rate.
In a preferred embodiment, a three-dimensional visual representation of an object having multiple resolutions is created by retrieving a vertex list for the object, determining a collapse order for the vertices identified in the vertex list, reordering the vertices identified in the vertex list responsive to the determined collapse order, and creating a vertex collapse list responsive to the collapse order, where the vertex collapse list specifies, for a target vertex, a neighbor vertex to collapse to. The vertex list may comprise 3D coordinates of vertices without referring to other vertex attributes or, in alternate embodiments, the vertex list may refer to other vertex attributes such as colors or normals.
More specifically, in a preferred embodiment, the collapse order of the object is determined by determining an optimal collapse path from the set of collapse paths, computing visual distortion factors for the selected collapse path, determining a collapse value for the selected collapse path, repeating for each path in the set of collapse paths, comparing the collapse values to determine a collapse path causing a least visual distortion to the object, selecting a next vertex to be collapsed, collapsing the object along the selected path, and repeating until a minimum resolution level is attained.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1a is a block diagram of a preferred embodiment of a computer system in accordance with the present invention.
FIG. 1b is a block diagram of a preferred embodiment of a modular distributed architecture computer system in accordance with the present invention.
FIG. 2a illustrates an overview of a preferred embodiment as of creating a collapse order list in accordance with the present invention.
FIG. 2b illustrates a first instance of an object prior to having a vertex collapsed.
FIG. 2c illustrates the object of FIG. 2b after having a vertex collapsed in accordance with the present invention.
FIG. 2d illustrates an object at a lower resolution.
FIG. 2e illustrates the object of FIG. 2d with a vertex added.
FIG. 3 is a more detailed diagram of a preferred embodiment of determining a collapse order in accordance with the present invention.
FIG. 4 is a more detailed diagram of a preferred embodiment of determining a set of collapse paths in accordance with the present invention.
FIG. 5 is a more detailed diagram of a preferred embodiment of selecting a collapse path in accordance with the present invention.
FIG. 6 is a more detailed diagram of a preferred embodiment of computing visual distribution factors in accordance with the present invention.
FIG. 7 is a more detailed diagram of a preferred embodiment of determining a collapse value for a selected collapse path in accordance with the present invention.
FIG. 8 illustrates an alternate embodiment of a preferred embodiment of determining a collapse order in accordance with the present invention.
FIG. 9 illustrates an alternate embodiment of determining a set of collapse paths in accordance with the present invention.
FIG. 10 is a flow chart illustrating a preferred embodiment of the runtime manager in accordance with the present invention.
FIG. 11 is an alternate embodiment of the runtime manager in accordance with the present invention.
FIG. 12 illustrates embodiments of analyzing the optimal collapse level of an object in accordance with the present invention.
FIG. 13 illustrates an embodiment of the present invention for use in the remote transfer of data.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 a illustrates a preferred embodiment of a computer system 100 in accordance with the present invention. System 100 is typically implemented on a computer system 100 such as a personal computer having an Intel Pentium™ processor and running the Windows™ 95 operating system from Microsoft Corporation. ROM 112 is read-only memory for storing data having unvarying functionality. Disk 124 stores data of which immediate access is not required, for example, the operating system module, databases, and other modules. In a one embodiment, as used by a developer 166, disk 124 stores a vertex list generator module 138, a collapse path determiner module 142, a collapse value analyzer module 146, a collapse path selector module 150, vertex lists 158 and a collapse list 154. In an embodiment used by a user 170, disk 124 stores applications, run time manager 162, and collapse lists 154. When access to the stored modules is required, the modules are moved to RAM 108, which stores data of which more immediate access is required. A display 120 and input device 116 are connected to the processor 104 through bus 118 and allow a user 170 or a developer 166 to interact with the modules stored in disk 124.
In FIG. 1b, a distributed architecture implementing a preferred embodiment of the present invention is illustrated. A vertex list generator 180, comprising an application specific integrated circuit (ASIC) coupled to a memory, generates vertex lists 158. The vertex lists 158 are transmitted to a collapse path determiner 184 which determines collapse paths from the received vertex lists 158. The collapse path data is transmitted to a collapse value analyzer 188, which analyzes the collapse path data to determine collapse values for each collapse path. These values, along with the paths themselves, are transmitted to the collapse path selector 192, which selects a collapse path from the list of vertices which, if the object is collapsed along the selected path, causes the least visual distortion to a viewer watching the collapse. This selected path is stored in the collapse list memory 194, and the new set of vertices is generated by the vertex list generator 138 responsive to the selected collapse path. The system continues to generate and select collapse paths until the vertex list generator no longer has any vertices remaining from which to generate a list, and the processing of the system is thus complete. The final collapse list is transmitted from the collapse list memory to the processor 104 of the developer's computer 100.
The data source 196 stores the original vertex list for processing. Data sources include the application requesting the object modeling, or a secondary source which stores objects requiring modeling in accordance with the present invention. In one embodiment, the modules 138, 142, 146, 150 are implemented as a set of Field Programmable Gate Arrays, and are programmed to perform the separate functions described above. By compartmentalizing the separate functions in a distributed architecture, faster and more robust processing is achieved.
FIG. 2a illustrates the processing of a preferred embodiment of the present invention for generating collapse orders. A vertex list 158 is retrieved 200. Typically, vertex lists 158 are provided by the developer 166 for each object the developer 166 would like to have modeled. The vertex list 158 may contain indices into a 3D coordinate map, or the vertex list 158 may index into other maps, such as texture maps, or normal maps. The vertex list 158 is usually “cleaned” prior to being processed. Typically, vertex lists 158 may specify triangles having edges close to one another but which do not actually overlap. Without performing any cleaning operations, these close edges cause the triangles they are a part of to be considered as two separate polygons, which may cause holes or cracks to appear at lower resolutions of the model. Thus, the system looks for redundant vertex data in the vertex list and eliminates the redundancies.
The vertex list 158 may specify a maximum set of vertices used in the object, or a maximum and a minimum set of vertices in the object. The minimum set of vertices is specified by the developer 166 to define a minimum quality level the object may not be collapsed beyond. As more vertices are collapsed in an object, the less realistic the object appears if examined closely. Therefore, for some objects the developer 166 may decide that there is a point beyond which the object is no longer recognizable as its true shape, even though the object at that point is very small on the screen and therefore does not require many polygons to specify sufficient detail. For these objects, the developer 166 specifies a minimum set of vertices to which the object may be collapsed. The system identifies these vertices during its processing, and does not collapse those vertices in the object. The vertex list 158 may also specify a nested set of vertex sets that represent progressively lower resolutions of the object. In this case the system generates a collapse list that interpolates between the nested vertex sets.
After the vertex list has been retrieved, the system proceeds to determine 204 a collapse order. The collapse order of an object is specifies the order in which individual vertices are merged into other vertices. Vertices are collapsed along collapse paths, with the goal of causing the least visual distortion possible for the object. For example, as shown in FIG. 2b, an object is shown having multiple vertices, three of which are specified as V1, V2, and V3. If the system in accordance with the present invention determines that the first collapse path is to collapse V1 to V2, the object as shown in FIG. 2c results. The object in FIG. 2c has less polygons to render than the object in FIG. 2b. Thus, the object in FIG. 2c is of lower resolution than the object in FIG. 2b, and should be displayed when the object is located closer to the background or due to other factors described in greater detail below, when added resolution is most likely to go unnoticed by the user 170. By displaying a version of the object which contains less polygons while it is closer to the background, the processor is able to devote more time to process objects which are closer to the foreground. This allows the objects in the foreground to have higher polygon counts without impacting on the frame rate.
After determining a collapse order for the object, the vertex list 158 is reordered 208 into the order specified by the collapse order. The vertex to be collapsed first is identified and the other vertices are sequenced accordingly based on their collapse priority. The system advantageously minimizes its footprint in memory by using the existing vertex list 158, instead of using another construct to store this information. Next, the system creates 212 a vertex collapse list 154. This list specifies the vertex to which the target vertex is to be collapsed; alternatively, the list specifies the vertices to which to connect an added vertex. When collapsing vertices in an object to achieve a lower resolution, the system may simply eliminate vertices as ordered in the vertex list until the desired resolution is obtained. However, in order to increase the resolution of the object by adding vertices, more information is needed. In each case, a correct triangle list must be generated by the system at the desired resolution. The triangle list specifies connectivity information regarding all of the triangles which must be rendered to achieve a given resolution.
For example, as shown in FIG. 2d, an object is in a first, lower resolution state. In FIG. 2e, a vertex is added to the object to increase the number of polygons and thereby increase the resolution of the object. However, as is shown, without more information, the system does not know which vertices to connect to the new vertex. Thus, more information is stored in a vertex collapse list 154. The vertex collapse list 154 stores the connectivity information for the neighbor vertices to which each vertex is connected. In the example of FIGS. 2d and 2e, the vertices to which to connect V1 are also specified in the vertex collapse list 154, and thus the system knows the correct edges to draw. Using the connectivity information, a correct triangle list is generated for each resolution. In a preferred embodiment, the information regarding the two lists 154, 158 are stored in the same location to optimize processing. The term list is used descriptively, as arrays and other data structures are preferably used to store the collapse information.
FIG. 3 is a more detailed diagram of a preferred embodiment of determining a collapse order in accordance with the present invention. First, a set of collapse paths is determined 300. A set of collapse paths identifies every possible collapse path between each vertex and every other vertex to which it is connected, at the current resolution of the object. Thus, in the object of FIG. 2b, there are 11 vertices (V1-V11). For V2, four potential collapse paths (C1, C2, C3, C4) may be identified.
Next, a collapse path from the set of collapse paths is selected 304. Visual distortion factors are computed 308 for the selected collapse path. Visual distortion factors are measurements of the effect of a given collapse on the object. Some collapse paths will have a much greater visual effect on the user than others. For example, if V1 is collapsed to V2, the object will appear to shrink noticeably in width. However, if V8 is collapsed to V11, the object will not appear as distorted to the user. The system preferably captures these distinctions by computing several visual distortion factors, including area change, angular deviation, and local volume change, described in greater detail below.
Each collapse path is given 312 a collapse value as a function of the computed visual distortion factors for that path. The collapse value is preferably a weighted combination of the visual distortion factors for the path. Weighting the different factors allows the developer 166 to specify the importance of the factors as applied in the particular application being developed.
The system determines 316 whether there are more collapse paths. If there are more collapse paths, a next path is selected 304 and the process described above is repeated. If there are no more collapse paths, the system compares the collapse values of the collapse paths to determine 220 a collapse path which causes the least visual distortion to the object.
The vertex to be collapsed is identified 324 responsive to the determined collapse path, and a collapse priority is assigned 326 to the vertex to be used upon reordering the vertex list. The object is collapsed 328 along the collapse path. The system determines 332 if there are more than one vertex not in the minimum point set remaining. If there are not, the system then moves to reordering the vertex list 158. If there are more than.one vertex remaining, the system repeats the above process, treating the collapsed object as a new object to be processed. The system processes the object until a set of collapse paths are determined which cause the least visual distortion to the object, and reduce the object from a maximum resolution to a minimum resolution. For each collapse path stored, the vertices to which the target vertex is connected, and the change in connectivity as expressed by the triangle list are stored. When the vertex is added to the object, this allows the system to know which other vertices are connected to the added vertex by which triangles. This information is stored in the vertex collapse list 154, as described above.
FIG. 4 illustrates an alternate embodiment of the method of determining a set of collapse paths. A target vertex is selected 400. Any one of the existing vertices of the object may be selected; order does not matter. Next, an input is received 404 which specifies the maximum of neighbor vertices to examine for each vertex. This allows a developer 166 to control the processing time of the system. By limiting the number of neighbor vertices which may be examined by the system for each vertex, the system does not have to perform as many calculations.
Next, a neighbor vertex is identified 408. A neighbor vertex is a vertex connected along an edge to the target vertex. A neighbor vertex would include any vertex directly connected to the target vertex, as well as any vertex which is connected to the target vertex through another vertex or vertices. As can be imagined, this list may grow very large if every vertex is processed. However, as described above, a maximum number of neighbor vertices may be specified to minimize processing.
After identifying a neighbor vertex, a collapse path is determined 412 between the target vertex and the neighbor vertex. The system determines 416 whether the maximum number of collapse paths have been reached. If it has, the system determines 420 whether there are more vertices. If there are more vertices, the collapse paths for the other vertices are computed as described above. If there are no more vertices, the system selects 304 a collapse path from the set of collapse paths.
FIG. 5 illustrates one embodiment of selecting a collapse path. In this embodiment, processor computations are minimized by limiting the number of collapse paths which are to have collapse values. For the first iteration through the object, collapse values are computed for every collapse path. After collapse path is selected, the object is collapsed along the path. A new set of collapse paths are generated as described above. However, in this iteration, collapse values are generated for those collapse paths which are within a predefined distance from the collapse path which was previously used to collapse the object. Many collapse paths will remain the same after the previous collapse, and their collapse values, i.e., the objective measurement of the visual impact of their collapse on the object, will also remain the same.
For example, in FIG. 2b, if C1 is chosen to be the collapse path, the FIG. in 2c results. The collapse value for the path between V8 and V11 may remain the same in the two versions of the object because the vertices around V8 and V1 V11 are not affected by the collapse of C1. Therefore, there is no need to recompute the collapse value for the V8-V11 path. By not computing the visual distortion factors for every collapse path after very every collapse, the computations of the system are greatly minimized, and the processing becomes much faster.
Thus, as shown in FIG. 5, the system determines 500 whether a collapse path is within a threshold distance from the previous collapse path. The threshold may be preset or defined by the developer 166. The developer 166 may experiment with different thresholds to maximize accuracy while minimizing computations. If the collapse path is within the threshold, the system computes 308 visual distortion factors for the collapse path. If the collapse path is not within the threshold, the existing collapse value is continued to be used as the value for that path, and a next path is selected.
FIG. 6 illustrates three visual distortion factors preferably computed in accordance with the preferred embodiment of the present invention. First, the area change of the object is computed 600 in response to collapsing the object along the selected collapse path. The area change of the object is computed by computing the surface area of the object prior to the collapse, and then computing the surface area of the object after the collapse. Subtracting the difference between the two areas indicates the effect on the surface area of the object performing the collapse will have. Next, the angular deviation is computed 604 in response to collapsing the object along the collapse path. Angular deviation measures the effect on the local curvature of the object the collapse will have. The system calculates normals of the triangles of which the vertex is a part. Points which represent high curvature are more important to the visual appearance of an object. Thus, these points are assigned a measure which lowers their collapse priority. Third, the local volume change is computed 608 in response to the collapse. A pyramid is created from the target vertex, using the target vertex as the apex of the pyramid. The base of the pyramid is the triangle formed by three consecutive neighbor vertices. A sequence of these pyramids is constructed from successive triples of neighbor vertices, and their volume is summed. The volume of the object is determined, the target vertex is collapsed along the collapse path, and the volume is computed again. The change in volume is used as an indication of the affect on the visual appearance of the object. Calculating pyramidal “local volume” change is much faster than calculating the “true” volume of an object, and more accurately accounts for the topology of an object. Other measures of visual distortion known to those of ordinary skill in the art may also be used in accordance with the present invention. Statistical measures of error such as surface deviation can also be used to compute visual distortion.
FIG. 7 illustrates an alternate embodiment of determining a collapse value for the selected collapse path. In this embodiment, the system receives 700 an input from the developer 166 specifying a priority weight for the different factors. The system multiplies 704 the factors by the specified priority weights, and then combines 708 the factors to obtain a collapse value. Allowing the developer 166 to specify the weights allows more creative control for the developer 166. The developer 166 may decide that the object is very spiky, and therefore the angular deviation factor should be given the highest priority. The developer 166 would then specify a high weight for the angular deviation factor. Those collapses which have a large angular deviation factor would be prioritized lower for collapsing. If an object represents an organic shape, the local volume factor becomes more important. A developer 166 would specify a higher weight for the local volume factor, and those collapse having a great effect on local volume would be prioritized lower. If the developer 166 does not specify weights, default values which evenly weight the factors are used. In one embodiment, the developer 166 is able to increase the speed of the processing of the system by eliminating factors from consideration. For example, the developer 166 may determine that local volume change is not relevant to a specific object. The developer 166 then specifies that local volume change should not be computed for this object. The system is then able to process the object much faster.
FIG. 8 illustrates an alternate embodiment of the determining a collapse order step 204. This embodiment allows the developer 166 to “tweak” the collapse order interactively. As the visual distortion of an object is essentially a subjective determination, the present invention beneficially allows the developer 166 to introduce their subjective preferences into how the object is collapsed. First, the set of collapse paths is determined 800 as described above. Then, the object is displayed to the user at the current resolution level. If this was the first iteration, the object would be at the maximum resolution level. The system selects a collapse path randomly from the set of collapse paths, and the object is collapsed. The system displays the collapsed object to the developer 166, and the developer 166 can see the effect of the collapse on the object. If the developer 166 approves of the collapse, the developer 166 selects the path. If the system receives 820 an input selecting the path, the system associates a collapse priority for the path based on the number of paths which have already been selected. If the developer 166 does not approve of the collapse, a next collapse path is selected and the process is repeated.
In one embodiment, collapse values are calculated for each path and the paths are prioritized as described above. The path designated to be collapsed first is chosen as the first path to be collapsed and displayed to the developer 166. If the developer 166 selects this path, the path retains its priority. A new set of collapse paths is generated and the highest prioritized path from the new set selected for display to the developer 166. If the developer 166 does not select the path, the next highest prioritized path is selected and displayed to the developer 166. Of course, the developer 166 may specify at any time a particular path the developer 166 sees in the object the developer 166 wants collapsed. Such a selection by the developer 166 overrides any previous prioritization by the system.
FIG. 9 illustrates an embodiment of the present invention in which a minimum vertex set is specified by the developer 166 prior to computing collapse paths. A minimum vertex set, as described above, is a set of vertices which the developer 166 does not want collapsed. Thus, as shown in FIG. 9, after a collapse path is selected 900, the system determines whether the collapse path collapses a vertex specified in the minimum vertex set. If the vertex is on the minimum vertex set, the collapse path is not selected.
In another embodiment, texture maps are indexed by the vertices. Texture maps provide texture for the mapped area, giving an object a realistic appearance. Textures for different triangles may be quite different. Therefore, when a triangle is collapsed, the system must determine the affect of the loss of the texture of the triangle on the appearance of the object. Vertices which are on the edges of texture discontinuities are not collapsed, because of the affect the collapse will have on the appearance of the object. Thus, when collapse paths are selected, the vertices in the path are examined to determine if they are located on the edge of a texture discontinuity. If they are, the collapse path is not selected.
FIG. 10 illustrates the run-time manager of the present invention. The run-time manager performs the adding and subtracting of polygons to and from the object as required during the real-time execution of the application. The run-time manager works in conjunction with the graphics system of the computer and the application program for which the objects have been processed. Upon initiating the application, the manager collapses 1000 the objects referenced in the application. The manager stores 1004 extended vertex collapse information for each collapse level of the objects in a table. Extended vertex collapse information is the information stored in the vertex collapse list 154 specifying what vertex the each collapsing vertex will collapse to, as well as which triangles need to be eliminated from the model. By storing the extended vertex collapse information in the table, the processor is able to more quickly add and subtract polygons because the processor simply has to access the table to determine which vertices and triangles to add, subtract, or re-index and does not have to perform any demanding computations.
In one embodiment, the extended tables for each object are already created in the development stage, and the tables are simply loaded into data memory for easy access when the application is initiated. The runtime manager awaits a request from the application for a collapse level from an object. The original appearances of each object are represented in a default resolution. When the application or the graphics program requests 1008 an increased or decreased resolution from the runtime manager, the runtime manager determines 1012 whether the requested resolution requires a collapse level greater than the current collapse level of the object. The current collapse level is known because the current collapse level of the object is the only version of the object which is stored in memory. If the requested resolution requires a greater collapse level for the object, vertices are added to the object in accordance with the vertex collapse information in the table until the requested collapse level is met. This continuous addition of vertices provides for a smooth rendering of the object, and eliminates the object-popping problem discussed above. Similarly, if the requested resolution requires a collapse level which is less than the current collapse level, vertices are collapsed 1016 until the proper resolution of the object is achieved. The table allows for instantaneous addition and subtraction of polygons to the object upon request. The table also allows for a minimal memory footprint by the present invention as entire versions of the objects are not required to be stored. The continual addition or subtraction of polygons to an object eliminates the object-popping artifacts. Thus, in accordance with the present invention, an efficient, high-speed object modeling process is disclosed which provides multiple levels of resolution while minimizing resource use.
FIG. 11 illustrates an alternate embodiment of the runtime manager in which objects are analyzed to determine a collapse level. In this embodiment, the object is collapsed 1100 and vertex information is stored 1104 for each collapse level, as described above. However, in this embodiment, the object is analyzed 1108 to determine an optimal collapse level. If the manager determines 1112 the optimal collapse level requires a higher resolution, vertices are added 1120 to the object. If the optimal level requires a lower resolution than the current resolution, vertices are collapsed 1116.
FIG. 12 illustrates several methods for analyzing the optimal collapse level of an object. One or all of these methods can be used in accordance with the present invention to determine an optimal collapse level. First, the velocity of the object is determined 1200. The velocity of an object is determined by measuring the distance an object moved between the current frame and the last frame, and dividing by the time elapsed between frames. Alternatively, velocity is calculated by measuring distance traveled over several of the most recently rendered frames and dividing by the total elapsed time of the rendering of the whole recent frame sequence. Next, the determined velocity is compared to a table which maps velocities of the object to collapse levels. This table may be specifically designed for a given object, or may be a global table which provides general correlations between velocity and collapse level. As an object increases in speed, it requires less resolution to render it realistically, as motion tends to blur the finer details in an object. Therefore, the object's current velocity is compared to the table to determine what resolution it requires at that speed. If the manager determines 1232 that the resolution required is a collapse level greater than its current collapse level, more polygons are added 1236 as described above. If the resolution the object requires is less than the resolution provided by the current collapse level, polygons are subtracted 1240 away. Thus, the runtime manager dynamically manages the resolution of the object to provide optimal fidelity while minimizing the use of processing power.
The projected area of an object is another factor which is used by the runtime manager to determine an optimal collapse level for an object. The projected area of an object is the area which the object will occupy as rendered on the display. The greater the projected area of an object, the higher the resolution that is required. The system determines 1208 the current projected area of the object, and compares 1212 the projected area to a table which correlates projected area and collapse levels. The polygon count is then adjusted 1232 accordingly.
The present invention also provides for global polygon count management. In this embodiment, the user selects a target polygon count for each frame. In this embodiment, the system determines 1216 the number of polygons currently being displayed in a frame. The total number of polygons displayed in a frame may be calculated by determining which objects are on screen and totaling the number of polygons in each object, or by having the renderer keep an internal tally of how many triangles it drew on screen in one frame. This number is compared 1220 to the predefined target polygon count. If the runtime manager determines 1232 that the current polygon count is less than the target polygon count, more polygons are added 1236. If the current polygon count is greater than the target polygon count, polygons are subtracted 1240 away. The determination of which objects to add and subtract polygons to and from may be made in a number of ways. Polygons may be added and removed uniformly to and from all polygons. Alternatively, objects may be individually analyzed and polygons added and subtracted on an individual basis.
Alternatively, the user 170 is able to select a target frame rate. The manager determines 1224 a current frame rate by monitoring the processor clock and determining how long it is taking to render frames. The current frame rate is then compared 1228 to the target frame rate. If runtime manager determines 1232 that the current frame rate is faster than the target frame rate, polygons are added 1236 to the frame to slow the frame rate down. If the current frame rate is slower than the target frame rate, polygons are subtracted 1240 from the frame to speed the frame rate up. Thus, the runtime manager allows for dynamic global polygon management requiring minimal input from the user 170. This management process allows the present invention to be platform universal, as if the invention is used on a system with a slower processor, the target frame rate or polygon count may be set lower, and the benefits described above are still provided. However, a system with a faster processor can be set to have a higher frame rate or polygon count, and the higher processing power of the system is maximized by the present invention.
The present invention may also be used to transmit data through remote connections, as illustrated in FIG. 13. When receiving data over a remote connection, for example, the Internet, a user 170 is often waiting for data to download before a requested object may be displayed. In accordance with the present invention, upon requesting an object over a remote connection, the minimum vertex set, or the lowest collapse level of an object is transmitted to the user 170. This minimal resolution version of the object requires less data to represent, and therefore is transmitted much faster to the user 170. Then, the additional collapse levels are sent serially to the user 170 to increase the resolution of the object to its maximum resolution. As each collapse level typically adds only a few polygons, each collapse level is also transmitted very quickly. This method allows the user to receive a minimal version of the object very quickly, and then a full resolution later in time. If the user 170 does not require a full resolution of an object, the user 170 does not have to wait for unnecessary data (higher resolution data) to be transmitted before the user 170 can see the object. Even if the user 170 requires a higher resolution short of the maximum resolution, the present invention transmits the higher resolutions in packets which allows the user 170 to view the object in a shorter period of time than it would take to wait for the entire maximum resolution version of the object to download.
As shown in FIG. 13, a request is received 1300 for an object across a remote connection. Responsive to this request, a minimal resolution of the object is sent 1304 to the requester. This minimal resolution of the object is the lowest resolution of the object which may be displayed and still accurately describe the object. If a minimal vertex set of the object has been specified by the developer 166, this set is used as the minimal resolution to be sent. Next, a packet of information which comprises the vertices required to increase the collapse level of the object to a next higher resolution is sent 1308. This information comprises the vertices and the connections required to increase the resolution of the object, as described in detail above. Then, the system determines 1312 whether a maximum resolution or target resolution has been sent. If the packet which comprises the information required to increase the resolution of the object to its maximum resolution has been sent, the system knows the maximum resolution has been achieved. Alternatively, a target resolution may be specified by the user 170 in requesting the download of the object. The target resolution option allows the user to optimize the time required for the data transfer to meet the user's fidelity needs. If the user 170 does not require a maximum resolution of an object, the user can so specify, and only an intermediate resolution of the object is sent. This option is beneficial if, for example, the user 170 is in a hurry to view objects other than the one being downloaded, or the user 170 has a computer which is not capable of viewing high resolutions. If the target or maximum resolution has not been met, another packet is sent to the user 170. Once the target is met, the data transmission is complete.

Claims (35)

1. A method for creating a three-dimensional visual representation of an object having multiple resolutions, comprising the steps of:
retrieving coordinates of vertices for the object;
determining, using a processing device, a collapse order for the vertices identified in the of a vertex list for the object, across all levels of detail of the object;
reorderingordering the vertices identified in the vertex list responsive to the determined collapse order;
creating, using the processing device, a vertex collapse list responsive to the collapse order, where wherein the vertex collapse list specifies, for a each target vertex, a neighbor vertex of the object to which the target vertex collapse to collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
specifying a level of detail at which the object is to be rendered;
using the vertex collapse list and a level of detail to identify at least one display vertex of the object; and
rendering the display vertex to produce a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
2. The method of claim 1 wherein determining the collapse order comprises the steps of:
determining a set of collapse paths available at a level of detail;
selecting a collapse path from the set of collapse paths;
computing a visual distortion factor factors for the selected each collapse path in the set of collapse paths; and
responsive to the computed visual distortion factors, determining a collapse value for the selected each collapse path in the set of collapse paths;
repeating selecting a collapse path, computing visual distortion factors, determining a collapse value for each collapse path;
selecting a next vertex to be collapsed as a vertex having a collapse path causing the least visual distortion to the object;
collapsing the next vertex to be collapsed along the corresponding collapse path; and
repeating the above steps until a minimum resolution level is attained.
3. The A method of claim 2 wherein for creating a three-dimensional visual representation of an object at a selected level of detail, comprising:
determining, using a processing device, a collapse order for vertices of the object, comprising:
determining a set of collapse paths;
computing a visual distortion factors comprises the steps of factor for each collapse path in the set of collapse paths, including:
computing an area change factor for the selected each collapse path;
computing an angular deviation factor for the selected each collapse path; and
computing a local volume change factor for the selected each collapse path; and
responsive to the computed visual distortion factors, determining a collapse value for each collapse path in the set of collapse paths;
ordering the vertices in a vertex list responsive to the determined collapse order;
creating, using the processing device, a vertex collapse list responsive to the collapse order, where the vertex collapse list specifies, for a target vertex, a neighbor vertex of the object to which the target vertex collapses;
specifying a level of detail at which the object is to be rendered; and
rendering a three-dimensional visual representation of the object at the specified level of detail using the vertex collapse list.
4. The method of claim 3 wherein the computing an area change factor for each collapse path further comprises:
computing an area of the object after collapsing the a first target vertex along the a first collapse path; and
subtracting the computed area from an area of the object prior to the collapse.
5. The method of claim 3 wherein the computing a volume change factor for the selected each collapse path comprises:
computing a volume of the object after collapsing the a first target vertex along the a first collapse path; and
subtracting the computed volume from a volume of the object prior to the collapse.
6. The method of claim 5, wherein the step of computing a volume further comprises:
selecting the first target vertex to be an apex for a pyramid;
forming a base of the pyramid from a triangle connecting three consecutive neighbor vertices to the first target vertex;
computing a volume of the pyramid;
constructing a next pyramid from a next set of three consecutive neighbor vertices;
computing a volume of the next pyramid;
repeating the constructing a next pyramid and computing a volume steps for all unique three consecutive neighbor vertex sets; and
summing the volumes of the pyramids to obtain a volume of the object.
7. The method of claim 2 further comprising the step of receiving an input from a user specifying a priority weight for a the visual distortion factor, and the wherein determining a collapse value step further comprises, responsive to the computed visual distortion factors and priority weights, determining a collapse value for the selected collapse path that is responsive to the priority weight.
8. The method of claim 2 wherein, responsive to collapsing the next vertex to be collapsed along the corresponding collapse path, collapse paths local to the next vertex are identified and the computing visual distortion factors for the selected collapse path and the determining a collapse value for the selected collapse path steps are repeated only for the local collapse paths.
9. The method of claim 2 wherein determining a set of collapse paths further comprises:
selecting a first target vertex;
receiving input specifying a maximum number of neighbor vertices for a target vertex;
identifying a number of neighbor vertices, responsive to the a received input; and
determining a plurality of collapse path paths responsive to coordinates of the first target vertex and an identified neighbor vertex;
repeating the determining step for all the identified number of neighbor vertices;
repeating the selecting a target vertex, identifying, determining, and repeating steps for a plurality of vertices.
10. The method of claim 2 further comprising the steps of:
responsive to selecting a collapse path, displaying the object prior to collapsing the object along the selected path;
collapsing the object along the specified path;
displaying the object after being collapsed along the specified path;
responsive to receiving an input selecting the collapse path, storing the collapse path and corresponding vertex on the collapse order list as the next vertex to be collapsed.
11. The method of claim 1, further comprising receiving an input specifying a set of minimum vertices, and the wherein determining the collapse order step further comprises determining a collapse order in which the specified set of minimum vertices are not collapsed.
12. The method of claim 1 wherein multiple resolution levels of the object exist, further comprising the steps of:
ordering the resolution levels from highest to lowest resolution;
selecting a highest resolution level for collapsing; and
thewherein determining a collapse order step comprises determining a collapse order for vertices of the highest selected resolution level, wherein vertices in the next lowest resolution level are not collapsed; and
repeating the selecting and determining steps for each resolution level.
13. The method of claim 1 wherein the each of the vertices of the object includes vertex coordinates are and associated with vertex attributes.
14. The method of claim 2 13 wherein each of the vertices have coordinates in a has texture map, further comprising the steps of coordinates, and the rendering comprises:
responsive to a selected collapse path collapsing a first vertex into a second vertex to create a new vertex, and assigning the texture map coordinates of the second vertex to prior to collapsing the first vertex into the second vertex as the texture map coordinates of the second vertex after collapsing the first vertex into the new second vertex;
responsive to the first and second vertex being on an edge of a texture discontinuity, identifying the collapse path as a collapse path not to be used.
15. The method of claim 2 13 wherein each of the vertices have coordinates in a has normal map, further comprising the steps of coordinates, and the rendering comprises:
responsive to a selected collapse path collapsing a first vertex into a second vertex to create a new vertex, and assigning the normal map coordinates of the second vertex to prior to collapsing the first vertex into the second vertex as the normal map coordinates of the second vertex after collapsing the first vertex into the new second vertex.
16. The method of claim 2 13 wherein each of the vertices have coordinates in a has color map, further comprising the steps of coordinates, and the rendering step comprises:
responsive to a selected collapse path collapsing a first vertex into a second vertex to create a new vertex, and assigning the color map coordinates of the second vertex to prior to collapsing the first vertex into the second vertex as the color map coordinates of the second vertex after collapsing the first vertex into the new second vertex; and
responsive to the first and second vertex being on an edge of a color discontinuity, identifying the collapse path as a collapse path not to be used.
17. A method for displaying an object, wherein a vertex list and a neighbor list is stored for the object, and vertices in the vertex list are identified by a collapse priority and the neighbor list identifies the path of a collapse for the vertices, comprising the steps of:
performing, using a processing device, a collapse of the object responsive to the a vertex list and a neighbor list for the object,
wherein vertices in the vertex list for the object are arranged in a collapse priority, across all levels of detail of the object,
wherein the neighbor list specifies, for each target vertex in the vertex list, a neighbor vertex of the object to which the target vertex collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail, and
wherein following the collapse the object is in a first collapse level;
storing vertex, in memory associated with the processing device, information for each collapse level relating to the collapse, wherein the vertex information indicates which vertices exist in of the object exist in the a second collapse level immediately higher and lower having at least one more vertex than the current first collapse level and in a third collapse level having at least one fewer vertex than the first collapse level;
receiving input requesting a collapse level for the object;
responsive to the requested a request for a collapse level requiring a higher resolution more vertices than a current the first collapse level, automatically adding vertices to a vertex from the vertex list for the object responsive to the vertex list and the stored vertex information;
responsive to the requested a request for a collapse level requiring a lower resolution fewer vertices than a current the first collapse level, automatically collapsing vertices a vertex in the vertex list of for the object responsive to the vertex list and the stored vertex information; and
automatically rendering the vertices in the vertex list for each requested collapse level to produce a three-dimensional visual representation of the object.
18. The method of claim 17 further comprising the step of wherein storing information regarding the collapse includes:
storing extended collapse information, wherein the extended collapse information includes triangle connectivity information for the at least some of the vertices.
19. A method for displaying an object, wherein a vertex list and a neighbor list is stored for the object, and vertices in the vertex list are identified by a collapse priority, and the neighbor list identifies the path of a collapse for the vertices, comprising the steps of:
performing a collapse of the object responsive to the vertex list and neighbor list;
storing vertex in memory information for each collapse level, wherein the vertex information regarding a collapse of the object,
wherein the object includes a vertex list and a neighbor list,
wherein vertices in the vertex list are arranged in a collapse priority, across all resolutions of the object,
wherein the neighbor list specifies, for each target vertex in the vertex list, a neighbor vertex of the object to which the target vertex collapses, for at least one resolution of the object, and wherein each vertex collapse operation at a respective resolution of the object collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective resolution of the object, and
wherein the information indicates which vertices of the vertex list exist in the object in the at a collapse level immediately higher and lower than the a current collapse level of the object;
analyzing the object using a processing device to determine a the current collapse level of the object; and
responsive to the determined collapse level a determination requiring the object to be rendered at a resolution higher than a resolution of the current collapse level, adding vertices to a vertex from the vertex list for the object responsive to the vertex list and stored vertex information; and
responsive to the determined collapse level a determination requiring the object to be rendered at a resolution lower than the resolution of the current collapse level, collapsing vertices a vertex in the vertex list for the object responsive to the vertex list and stored vertex information; and
automatically rendering the vertices in the vertex list for the required resolution to produce a three-dimensional visual representation of the object.
20. The method of claim 19 wherein the step of analyzing the object further comprises:
determining a velocity of the object; and
determining a projected area of the object.
21. The method of claim 20 19 wherein the step of analyzing the object further comprises:
determining the number of polygons currently being displayed;
comparing the determined number of polygons to a predefined target number of polygons; and
responsive to a determination that the number of polygons currently being displayed being is less than the predefined target number, adding polygons to the object a vertex from the vertex list for the object.
22. The method of claim 19 wherein the step of analyzing the object further comprises:
determining a current frame rate;
comparing the current frame rate to a predefined frame rate; and
responsive to a determination that the current frame rate being is less than the predefined frame rate, collapsing vertices in the object a vertex in the vertex list for the object.
23. A method for transferring data across a remote connection, in a system in which a minimal resolution of an object is stored and separate packets of information comprising data for creating higher resolutions of the object are stored, comprising the steps of:
receiving as input to a processing device a request for a transmission of an the object to be displayed at a target resolution version of the object;
transmitting, using the processing device, via a remote connection, a minimal resolution version of the object responsive in response to receiving the received request; and
selectively transmitting, using the processing device, via the remote connection, a separate, successive packet of information comprising data for creating a comprising the vertices required to increase a collapse level of the object to a respective, predetermined, next higher resolution version of the object in response to a respective determination that the target resolution version of the object has not been met;
determining whether a target resolution of the object has been met; and
responsive to a target resolution of the object not being met, repeating the transmitting a packet of information comprising data for creating a next higher resolution version of the object step.
24. The method of claim 2, wherein computing a visual distortion factor comprises:
computing an area change factor for each collapse path;
computing an angular deviation factor for each collapse path; and
computing a local volume change factor for each collapse path.
25. The method of claim 24, wherein computing an area change factor for each collapse path further comprises:
computing an area of the object after collapsing a first target vertex along a first collapse path; and
subtracting the computed area from an area of the object prior to the collapse.
26. The method of claim 24, wherein computing a volume change factor for each collapse path comprises:
computing a volume of the object after collapsing a first target vertex along a first collapse path; and
subtracting the computed volume from a volume of the object prior to the collapse.
27. The method of claim 26, wherein computing a volume further comprises:
selecting the first target vertex to be an apex for a pyramid;
forming a base of the pyramid from a triangle connecting three consecutive neighbor vertices to the first target vertex;
computing a volume of the pyramid;
constructing a next pyramid from a next set of three consecutive neighbor vertices;
computing a volume of the next pyramid;
repeating the constructing a next pyramid and computing a volume for all unique three consecutive neighbor vertex sets; and
summing the volumes of the pyramids to obtain a volume of the object.
28. The method of claim 23, further comprising:
storing the minimal resolution version of the object and the separate packets of information in memory.
29. The method of claim 23, wherein the target resolution version of the object is intermediate of the minimal resolution version of the object and a maximum resolution version of the object.
30. A method for creating a three-dimensional visual representation of an object, comprising:
determining, using a processing device, a collapse order for vertices of the object, wherein said determining the collapse order comprises:
determining a set of collapse paths available at a level of detail, including:
selecting a first target vertex;
identifying a number of neighbor vertices, responsive to a received input; and
determining a plurality of collapse paths responsive to coordinates of the first target vertex and the identified number of neighbor vertices;
computing a visual distortion factor for each collapse path in the set of collapse paths; and
responsive to the computed visual distortion factors, determining a collapse value for each collapse path in the set of collapse paths;
ordering the vertices of the object in a vertex list responsive to the determined collapse order;
creating, using the processing device, a vertex collapse list responsive to the collapse order, wherein the vertex collapse list specifies, for each target vertex, a neighbor vertex of the object to which the target vertex collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
specifying a level of detail at which the object is to be rendered; and
automatically rendering a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
31. An apparatus for creating a three-dimensional visual representation of an object, comprising:
a processing device configured to:
determine a collapse order for vertices of a vertex list for the object, across all levels of detail of the object;
order the vertices in the vertex list responsive to the determined collapse order;
create a vertex collapse list responsive to the collapse order, wherein the vertex collapse list specifies, for each target vertex, a neighbor vertex of the object to which the target vertex collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
receive input specifying a level of detail at which the object is to be rendered; and
responsive to the received input, render a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
32. A non-transient computer-readable storage medium having stored thereon computer executable instructions, execution of which by a processing device causes the processing device to perform operations for creating a three-dimensional visual representation of an object, the operations comprising:
determining a collapse order for vertices of a vertex list for the object, across all levels of detail of the object;
ordering the vertices in the vertex list responsive to the determined collapse order;
creating a vertex collapse list responsive to the collapse order, wherein the vertex collapse list specifies, for each target vertex, a neighbor vertex of the object to which the target vertex collapses for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
specifying a level of detail at which the object is to be rendered; and
rendering a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
33. An apparatus for creating a three-dimensional visual representation of an object, comprising:
a processing device configured to:
determine a collapse order for vertices of the object, including:
determining a set of collapse paths available at a level of detail, including:
selecting a first target vertex;
identifying a number of neighbor vertices, responsive to a received input; and
determining a plurality of collapse paths responsive to coordinates of the first target vertex and the identified number of neighbor vertices;
computing a visual distortion factor for each collapse path in the set of collapse paths; and
responsive to the computed visual distortion factors, determining a collapse value for each collapse path in the set of collapse paths;
order the vertices of the object in a vertex list responsive to the determined collapse order;
create a vertex collapse list responsive to the collapse order, wherein the vertex collapse list specifies, for each target vertex, a neighbor vertex of the object to which the target vertex collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
receive input specifying a level of detail at which the object is to be rendered; and
in response to the received input, automatically render a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
34. A non-transitory computer-readable storage medium having stored thereon computer executable instructions, execution of which by a processing device causes the processing device to perform operations for creating a three-dimensional visual representation of an object, the operations comprising:
determining a collapse order for vertices of the object, wherein said determining the collapse order comprises:
determining a set of collapse paths available at a level of detail, including:
selecting a first target vertex;
identifying a number of neighbor vertices, responsive to a received input; and
determining a plurality of collapse paths responsive to coordinates of the first target vertex and the identified number of neighbor vertices;
computing a visual distortion factor for each collapse path in the set of collapse paths; and
responsive to the computed visual distortion factors, determining a collapse value for each collapse path in the set of collapse paths;
ordering the vertices of the object in a vertex list responsive to the determined collapse order;
creating a vertex collapse list responsive to the collapse order, wherein the vertex collapse list specifies, for each target vertex, a neighbor vertex of the object to which the target vertex collapses, for at least one level of detail of the object, and wherein each vertex collapse operation at a respective level of detail collapses a respective target vertex to a neighbor vertex directly connected to the target vertex at the respective level of detail;
specifying a level of detail at which the object is to be rendered; and
automatically rendering a three-dimensional visual representation of the object at the specified level of detail using the vertex list and the vertex collapse list.
35. The method of claim 1, wherein, in said determining a collapse order, each vertex of the object has a fixed coordinate offset relative to each other vertex of the object across all levels of detail of the object.
US11/091,003 1998-06-18 2005-03-25 Multi-resolution geometry Expired - Lifetime USRE42406E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/091,003 USRE42406E1 (en) 1998-06-18 2005-03-25 Multi-resolution geometry

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8979498P 1998-06-18 1998-06-18
US09/243,099 US6421051B1 (en) 1998-06-18 1999-02-02 Multi-resolution geometry
US10/076,888 US6538652B2 (en) 1998-06-18 2002-02-15 Multi-resolution geometry
US11/091,003 USRE42406E1 (en) 1998-06-18 2005-03-25 Multi-resolution geometry

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/076,888 Reissue US6538652B2 (en) 1998-06-18 2002-02-15 Multi-resolution geometry

Publications (1)

Publication Number Publication Date
USRE42406E1 true USRE42406E1 (en) 2011-05-31

Family

ID=26780956

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/243,099 Expired - Lifetime US6421051B1 (en) 1998-06-18 1999-02-02 Multi-resolution geometry
US10/076,888 Ceased US6538652B2 (en) 1998-06-18 2002-02-15 Multi-resolution geometry
US11/091,003 Expired - Lifetime USRE42406E1 (en) 1998-06-18 2005-03-25 Multi-resolution geometry

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/243,099 Expired - Lifetime US6421051B1 (en) 1998-06-18 1999-02-02 Multi-resolution geometry
US10/076,888 Ceased US6538652B2 (en) 1998-06-18 2002-02-15 Multi-resolution geometry

Country Status (2)

Country Link
US (3) US6421051B1 (en)
EP (1) EP0965948A3 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150187135A1 (en) * 2013-12-31 2015-07-02 Nvidia Corporation Generating indirection maps for texture space effects
US20230138291A1 (en) * 2020-03-20 2023-05-04 3Shape A/S Storage, rendering, and display of information of meshes through tessellation with serialized values

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6577312B2 (en) * 1998-02-17 2003-06-10 Sun Microsystems, Inc. Graphics system configured to filter samples using a variable support filter
US6421051B1 (en) 1998-06-18 2002-07-16 Spatial Corporation Multi-resolution geometry
US20030158786A1 (en) * 1999-02-26 2003-08-21 Skyline Software Systems, Inc. Sending three-dimensional images over a network
US6704791B1 (en) * 2000-02-24 2004-03-09 Scott C. Harris Three dimensional experience for thick and thin clients
JP2002102532A (en) * 2000-06-06 2002-04-09 Sony Computer Entertainment Inc Information processing system and method, computer program, storage medium and semiconductor device
JP3385320B2 (en) * 2001-03-06 2003-03-10 シャープ株式会社 Animation playback terminal, animation playback method, and program therefor
US7548241B2 (en) 2002-01-04 2009-06-16 Intel Corporation Determining a node path through a node graph
KR100507778B1 (en) * 2002-09-19 2005-08-17 한국전자통신연구원 Apparatus and method for generating progressive solid models based on cellular topology
FI117579B (en) * 2003-01-17 2006-11-30 Cadfaster Oy Process, device and computer program for processing a computer-aided polygon model
JP3781008B2 (en) * 2003-02-24 2006-05-31 コニカミノルタホールディングス株式会社 Three-dimensional model editing method and apparatus, and computer program
GB2400780B (en) * 2003-04-17 2006-07-12 Research In Motion Ltd System and method of converting edge record based graphics to polygon based graphics
US20050156930A1 (en) * 2004-01-20 2005-07-21 Matsushita Electric Industrial Co., Ltd. Rendering device and rendering method
SE528001C2 (en) * 2004-12-22 2006-08-01 Fuji Autotech Ab Steering wheel mechanism for motor vehicles
EP1688885B1 (en) * 2005-02-03 2013-06-19 Samsung Electronics Co., Ltd. Method, apparatus, and medium for transforming graphic data of an object
WO2007079425A2 (en) * 2005-12-30 2007-07-12 Apple Inc. Portable electronic device with multi-touch input
GB0719625D0 (en) * 2007-10-08 2007-11-14 Realtime Worlds Ltd Improved method of creating a computer model of the physical world
US8013861B2 (en) * 2007-10-31 2011-09-06 International Business Machines Corporation Reducing a display quality of an area in a virtual universe to conserve computing resources
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
EP2107503A1 (en) 2008-03-31 2009-10-07 Harman Becker Automotive Systems GmbH Method and device for generating a real time environment model for vehicles
US9547428B2 (en) 2011-03-01 2017-01-17 Apple Inc. System and method for touchscreen knob control
WO2013089751A1 (en) * 2011-12-15 2013-06-20 Intel Corporation Techniques for enhancing multiple view performance in a three dimensional pipeline
US9275601B2 (en) * 2012-12-12 2016-03-01 Intel Corporation Techniques to control frame display rate
US10157239B2 (en) 2013-12-23 2018-12-18 Oracle International Corporation Finding common neighbors between two nodes in a graph
US9361403B2 (en) * 2013-12-23 2016-06-07 Oracle International Corporation Efficiently counting triangles in a graph
US9928310B2 (en) 2014-08-15 2018-03-27 Oracle International Corporation In-memory graph pattern matching
US9727775B2 (en) 2015-12-01 2017-08-08 Intel Corporation Method and system of curved object recognition using image matching for image processing
US10425615B2 (en) * 2017-05-10 2019-09-24 Mediatek Inc. Apparatuses and methods for dynamic frame rate adjustment
KR102005492B1 (en) * 2017-10-31 2019-07-30 에스케이텔레콤 주식회사 Apparatus and method for simplification of 3d mesh data
US11833423B2 (en) * 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11978162B2 (en) 2020-12-18 2024-05-07 Take-Two Interactive Software, Inc. System and method for improved rendering of computer graphic models

Citations (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05290145A (en) 1992-04-06 1993-11-05 A T R Tsushin Syst Kenkyusho:Kk Moving image high-speed generation device
US5428717A (en) * 1991-12-30 1995-06-27 Xerox Corporation Methods for converting concave polyhedra to their convex hulls
EP0784295A2 (en) 1996-01-11 1997-07-16 Microsoft Corporation Mesh simplification and construction of meshes
JPH09231401A (en) 1995-12-18 1997-09-05 Sony Corp Method and device for hierarchically approximating shape data with picture
US5715384A (en) * 1994-02-02 1998-02-03 Canon Kabushiki Kaisha Real-time image display method and apparatus displaying two different visual resolutions
JPH10198823A (en) 1997-01-13 1998-07-31 Hitachi Ltd Video generating device
US5870307A (en) * 1988-04-18 1999-02-09 3D Systems, Inc. Method and apparatus for production of high resolution three-dimensional objects by stereolithography
US5886702A (en) * 1996-10-16 1999-03-23 Real-Time Geometry Corporation System and method for computer modeling of 3D objects or surfaces by mesh constructions having optimal quality characteristics and dynamic resolution capabilities
JPH1186032A (en) 1997-09-01 1999-03-30 Power Reactor & Nuclear Fuel Dev Corp Spatial drawing processing method
US5903272A (en) 1993-02-15 1999-05-11 Canon Kabushiki Kaisha Apparatus and method for determining a rendering order between first and second object surface primitives
JPH11144089A (en) 1997-11-11 1999-05-28 Hitachi Ltd Processor and method for graphic processing
JPH11209685A (en) 1998-01-27 1999-08-03 Asahi Glass Co Ltd Coating composition for optical article
US5966140A (en) * 1997-06-20 1999-10-12 Microsoft Corporation Method for creating progressive simplicial complexes
EP0965948A2 (en) 1998-06-18 1999-12-22 Sven Technologies, Inc. Multi-resolution geometry
US6009435A (en) 1997-11-21 1999-12-28 International Business Machines Corporation Progressive compression of clustered multi-resolution polygonal models
US6018347A (en) 1996-04-12 2000-01-25 Multigen Paradigm, Inc. Methods and apparatus for rendering three-dimensional images
US6031548A (en) 1997-06-13 2000-02-29 International Business Machines Corporation Progressive multi-level transmission and display of triangular meshes
US6108006A (en) * 1997-04-03 2000-08-22 Microsoft Corporation Method and system for view-dependent refinement of progressive meshes
US6130673A (en) 1997-04-18 2000-10-10 Silicon Graphics, Inc. Editing a surface
US6137492A (en) 1997-04-03 2000-10-24 Microsoft Corporation Method and system for adaptive refinement of progressive meshes
US6139433A (en) * 1995-11-22 2000-10-31 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
US6169549B1 (en) 1998-01-07 2001-01-02 Iengineer.Com, Inc. Method and apparatus for providing continuous level of detail
US6175365B1 (en) * 1996-11-01 2001-01-16 International Business Machines Corporation Surface simplification preserving error tolerances
US6184897B1 (en) * 1997-01-15 2001-02-06 International Business Machines Corporation Compressed representation of changing meshes and method to decompress
US6198486B1 (en) 1998-09-23 2001-03-06 Intel Corporation Method of using a hybrid error metric for multi-resolution mesh generation
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US6262737B1 (en) * 1998-01-30 2001-07-17 University Of Southern California 3D mesh compression and coding
US6285372B1 (en) 1998-05-08 2001-09-04 Lawrence C. Cowsar Multiresolution adaptive parameterization of surfaces
US6307551B1 (en) * 1997-01-15 2001-10-23 International Business Machines Corporation Method for generating and applying changes in the level of detail of a polygonal surface
US6362833B2 (en) 1998-04-08 2002-03-26 Intel Corporation Method and apparatus for progressively constructing a series of morphs between two-dimensional or three-dimensional models
US6396490B1 (en) * 1998-12-04 2002-05-28 Intel Corporation Efficient representation of connectivity information in progressive mesh update record
US6426750B1 (en) * 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US20020130867A1 (en) 2001-03-14 2002-09-19 Kai-Shu Yang Method of constructing progressive mesh
US6529207B1 (en) 1998-04-08 2003-03-04 Webtv Networks, Inc. Identifying silhouette edges of objects to apply anti-aliasing
US20040012587A1 (en) 2002-07-19 2004-01-22 Silicon Graphics, Inc. Method and system for forming an object proxy
US6750864B1 (en) 1999-11-15 2004-06-15 Polyvista, Inc. Programs and methods for the display, analysis and manipulation of multi-dimensional data implemented on a computer
US6771261B2 (en) 2001-08-30 2004-08-03 Intel Corporation Error metric for mesh simplification processing
US6825839B2 (en) 1999-07-28 2004-11-30 The National University Of Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
US20040249617A1 (en) 2003-06-03 2004-12-09 Pccw-Hkt Datacom Services Limited Selective, pregressive transmission of 3D geometry models with the pre-ordered hierarchical meshes
US6879324B1 (en) * 1998-07-14 2005-04-12 Microsoft Corporation Regional progressive meshes
US6940505B1 (en) 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US6982715B2 (en) 2002-07-26 2006-01-03 Intel Corporation Mesh compression process

Patent Citations (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870307A (en) * 1988-04-18 1999-02-09 3D Systems, Inc. Method and apparatus for production of high resolution three-dimensional objects by stereolithography
US5428717A (en) * 1991-12-30 1995-06-27 Xerox Corporation Methods for converting concave polyhedra to their convex hulls
JPH05290145A (en) 1992-04-06 1993-11-05 A T R Tsushin Syst Kenkyusho:Kk Moving image high-speed generation device
US5903272A (en) 1993-02-15 1999-05-11 Canon Kabushiki Kaisha Apparatus and method for determining a rendering order between first and second object surface primitives
US5715384A (en) * 1994-02-02 1998-02-03 Canon Kabushiki Kaisha Real-time image display method and apparatus displaying two different visual resolutions
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US6139433A (en) * 1995-11-22 2000-10-31 Nintendo Co., Ltd. Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
JPH09231401A (en) 1995-12-18 1997-09-05 Sony Corp Method and device for hierarchically approximating shape data with picture
US6046744A (en) * 1996-01-11 2000-04-04 Microsoft Corporation Selective refinement of progressive meshes
US5929860A (en) * 1996-01-11 1999-07-27 Microsoft Corporation Mesh simplification and construction of progressive meshes
US5963209A (en) * 1996-01-11 1999-10-05 Microsoft Corporation Encoding and progressive transmission of progressive meshes
EP0784295A2 (en) 1996-01-11 1997-07-16 Microsoft Corporation Mesh simplification and construction of meshes
US5966133A (en) 1996-01-11 1999-10-12 Microsoft Corporation Geomorphs and variable resolution control of progressive meshes
US6018347A (en) 1996-04-12 2000-01-25 Multigen Paradigm, Inc. Methods and apparatus for rendering three-dimensional images
US5886702A (en) * 1996-10-16 1999-03-23 Real-Time Geometry Corporation System and method for computer modeling of 3D objects or surfaces by mesh constructions having optimal quality characteristics and dynamic resolution capabilities
US6611267B2 (en) 1996-10-16 2003-08-26 Viewpoint Corporation System and method for computer modeling of 3D objects or surfaces by mesh constructions having optimal quality characteristics and dynamic resolution capabilities
US6414683B1 (en) * 1996-11-01 2002-07-02 International Business Machines Corporation Surface simplification preserving a solid volume
US6175365B1 (en) * 1996-11-01 2001-01-16 International Business Machines Corporation Surface simplification preserving error tolerances
JPH10198823A (en) 1997-01-13 1998-07-31 Hitachi Ltd Video generating device
US6184897B1 (en) * 1997-01-15 2001-02-06 International Business Machines Corporation Compressed representation of changing meshes and method to decompress
US6307551B1 (en) * 1997-01-15 2001-10-23 International Business Machines Corporation Method for generating and applying changes in the level of detail of a polygonal surface
US6137492A (en) 1997-04-03 2000-10-24 Microsoft Corporation Method and system for adaptive refinement of progressive meshes
US6108006A (en) * 1997-04-03 2000-08-22 Microsoft Corporation Method and system for view-dependent refinement of progressive meshes
US6130673A (en) 1997-04-18 2000-10-10 Silicon Graphics, Inc. Editing a surface
US6031548A (en) 1997-06-13 2000-02-29 International Business Machines Corporation Progressive multi-level transmission and display of triangular meshes
US5966140A (en) * 1997-06-20 1999-10-12 Microsoft Corporation Method for creating progressive simplicial complexes
JPH1186032A (en) 1997-09-01 1999-03-30 Power Reactor & Nuclear Fuel Dev Corp Spatial drawing processing method
JPH11144089A (en) 1997-11-11 1999-05-28 Hitachi Ltd Processor and method for graphic processing
US6009435A (en) 1997-11-21 1999-12-28 International Business Machines Corporation Progressive compression of clustered multi-resolution polygonal models
US6169549B1 (en) 1998-01-07 2001-01-02 Iengineer.Com, Inc. Method and apparatus for providing continuous level of detail
JPH11209685A (en) 1998-01-27 1999-08-03 Asahi Glass Co Ltd Coating composition for optical article
US6262737B1 (en) * 1998-01-30 2001-07-17 University Of Southern California 3D mesh compression and coding
US6529207B1 (en) 1998-04-08 2003-03-04 Webtv Networks, Inc. Identifying silhouette edges of objects to apply anti-aliasing
US6362833B2 (en) 1998-04-08 2002-03-26 Intel Corporation Method and apparatus for progressively constructing a series of morphs between two-dimensional or three-dimensional models
US6285372B1 (en) 1998-05-08 2001-09-04 Lawrence C. Cowsar Multiresolution adaptive parameterization of surfaces
US6421051B1 (en) 1998-06-18 2002-07-16 Spatial Corporation Multi-resolution geometry
US6538652B2 (en) 1998-06-18 2003-03-25 Saul S. Kato Multi-resolution geometry
EP0965948A2 (en) 1998-06-18 1999-12-22 Sven Technologies, Inc. Multi-resolution geometry
US6426750B1 (en) * 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US6879324B1 (en) * 1998-07-14 2005-04-12 Microsoft Corporation Regional progressive meshes
US6198486B1 (en) 1998-09-23 2001-03-06 Intel Corporation Method of using a hybrid error metric for multi-resolution mesh generation
US6396490B1 (en) * 1998-12-04 2002-05-28 Intel Corporation Efficient representation of connectivity information in progressive mesh update record
US6825839B2 (en) 1999-07-28 2004-11-30 The National University Of Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
US6750864B1 (en) 1999-11-15 2004-06-15 Polyvista, Inc. Programs and methods for the display, analysis and manipulation of multi-dimensional data implemented on a computer
US20020130867A1 (en) 2001-03-14 2002-09-19 Kai-Shu Yang Method of constructing progressive mesh
US6771261B2 (en) 2001-08-30 2004-08-03 Intel Corporation Error metric for mesh simplification processing
US6940505B1 (en) 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US20040012587A1 (en) 2002-07-19 2004-01-22 Silicon Graphics, Inc. Method and system for forming an object proxy
US6982715B2 (en) 2002-07-26 2006-01-03 Intel Corporation Mesh compression process
US20040249617A1 (en) 2003-06-03 2004-12-09 Pccw-Hkt Datacom Services Limited Selective, pregressive transmission of 3D geometry models with the pre-ordered hierarchical meshes

Non-Patent Citations (27)

* Cited by examiner, † Cited by third party
Title
Bremer, P.-T et al., "A Multi-resolution Data Structure for Two-dimensional Morse-Smale Functions", U.S. Department of Energy, University of California, Lawrence Livermore National Laboratory, Aug. 1, 2003, 11 pages.
Erikson, Carl, "Polygonal Simplification: An Overview," Department of Computer Science, CB#3175, Sitterson Hall, UNC-Chapel Hill, Chapel Hill, NC 27599-3175, pp. 1-22, 1996.
European Search Report, dated Jan. 21, 2002, from European Patent Appln. No. 99111741.7-2218, 2 pages.
European Search Report, Jan. 21, 2002, 2 pages.
Funkhouser et al. Adaptive Display Algorithm for Interactive Frame Rates During Visualization of Complex Virtual Environments. Proceedings of the 20th Annual Conference on Computer Graphics and Interactive Techniques. 1993. pp. 247-254. *
G. Turk, "Re-Tiling Polygonal Surfaces," Computer Graphics, Jul. 26-31, 1992, pp. 55-64.
Garland et al. Surface Simplification Using Quadric Error Metrics. Computer Graphics Proceedings. Annual Conference Series. Aug. 1997. pp. 209-216. *
H. Hoppe, "Progressive Meshes", (printed from http://www.research.microsoft.com/research/graphics/hoppe).
H. Hoppe, T. DeRose, T. Duchamp, J. McDonald, W. Stuetzle, "Mesh Optimization", Computer Graphics Proceedings, Annual Conference Series, 1993, Aug. 1-6, 1993, pp. 19-26.
Hoppe et al. Mesh Optimization. Proceedings of the 20th Annual Conference on Computer Graphics and Interactive Techniques. 1993. pp. 19-26. *
Hoppe et al. Surface Reconstruction from Unorganized Points. Proceedings of the 19th Annual Conference on Computer Graphics and Interactive Techniques. 1992. pp. 71-78. *
Hoppe. Progressive Meshes. Proceedings of the 23rd Annual Conference on Computer Graphics and Interactive Techniques. 1996. pp. 99-108. *
Japanese Office Action, dated Jun. 23, 2009, from Japanese Patent Appln. No. 11-209685, 3 pages.
Kato, Saul S., U.S. Appl. No. 60/089,794, filed Jun. 18, 1998.
Klein, Reinhard, "Multiresolution representations for surfaces meshes," Wilhelm-Schickard-Institut, GRIS, Universität Tübingen, Germany, http://www.gris.uni-tuebingen.de, document generated Sep. 30, 1998, translation initiated Jul. 23, 1997, 21 pages.
Kwang Man Oh and Kyu Ho Park, "A Vertex Merging Algorithm for Extracting a Variable-Resolution Isosurface from Volume Data," 1995 IEEE International Conference on Systems, Man and Cybernetics, US, New York, Oct. 22, 1995, pp. 3543-3548.
Lindstrom et al. Real-Time, Continuous Level of Detail Rendering of Height Fields. Computer Graphics Proceedings. Annual Conference Series. Aug. 4, 1996. pp. 109-118. *
M. Garland, P. Heckbert, "Surface Simplification Using Quadratic Error Metrics", Computer Graphics Proceedings, Annual Conference Series, 1997, Aug. 3-8, 1997, pp. 209-216.
M. Garland, P. Heckbert, "Surface Simplification Using Quadratic Error Metrics", Computer Graphics Proceedings, Annual Conference Series, 1997, Aug. 3-8, 1997, pp. 209-216.
Paulo Cignoni, Claudio Montani, Enrico Puppo, and Roberto Scopigno, "Multiresolution Representation and Visualization of Volume Data," IEEE Transactions on Visualization and Computer Graphics, vol. 3, No. 4, Oct.-Dec. 1997, pp. 352-369.
Peter Lindstrom, David Koller, William Ribarsky, Larry F. Hodges, Nick Faust, and Gregory A. Turner, "Real-Time, Continuous Level of Detail Rendering of Height Fields," Computer Graphics Proceedings, Annual Conference Series, 1996, Aug. 4, 1996, pp. 109-118.
S. Wang, R. Takamatsu, M. Sato, H. Kawarada, "Shape Simplification of Free-Form Surface Objects for Multi-Scale Representation," Oct. 14, 1996, pp. 1623-1628.
Schmalstieg, Dieter et al., "Smooth Levels of Detail," vrais, 1997 Virtual Reality Annual International Symposium (VRAIS '97), 1997. http://doi.ieeecomputersociety.org/10.1109/VRAIS.1997.583039, pp. 12-19.
Schroeder et al. Decimation of Triangle Meshes. Computer Graphics. 1992. pp. 65-70. *
Turk. Re-Tiling Polygonal Surfaces. Computer Graphics. Jul. 1992. pp. 55-64. *
W. Schroeder, J. Zarge, W. Lorensen, "Decimation of To angle Meshes," Computer Graphics, Jul. 26-31, 1992, pp. 65-70.
Wang et al. Shape Simplification of Free-Form Surface Objects for Multi-Scale Representation. Oct. 1996. pp. 1623-1628. *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150187135A1 (en) * 2013-12-31 2015-07-02 Nvidia Corporation Generating indirection maps for texture space effects
US9396585B2 (en) * 2013-12-31 2016-07-19 Nvidia Corporation Generating indirection maps for texture space effects
US20230138291A1 (en) * 2020-03-20 2023-05-04 3Shape A/S Storage, rendering, and display of information of meshes through tessellation with serialized values

Also Published As

Publication number Publication date
EP0965948A2 (en) 1999-12-22
US20020075263A1 (en) 2002-06-20
US6538652B2 (en) 2003-03-25
US6421051B1 (en) 2002-07-16
EP0965948A3 (en) 2002-03-13

Similar Documents

Publication Publication Date Title
USRE42406E1 (en) Multi-resolution geometry
US6400372B1 (en) Methods and apparatuses for selecting levels of detail for objects having multi-resolution models in graphics displays
EP0531157B1 (en) Three dimensional graphics processing
JP4503073B2 (en) Image resource loading system and image resource loading method for loading object for updating game screen
EP0550244B1 (en) Avoiding oscillation in interactive animation
US6031548A (en) Progressive multi-level transmission and display of triangular meshes
CN112755535B (en) Illumination rendering method and device, storage medium and computer equipment
US6307558B1 (en) Method of hierarchical static scene simplification
JP3638224B2 (en) 3D polygon display device
US5790950A (en) Computer graphics apparatus having an improved walk-through function
US20060170678A1 (en) Method, apparatus, and medium for transforming graphic data of an object
WO1998000811A1 (en) Fly-through computer aided design method and apparatus
EP3736776A1 (en) Apparatus, system and method for the generation of polygonal meshes
WO2001048697A1 (en) Methods of hierarchical static scene simplification and polygon budgeting for 3d models
US20040249617A1 (en) Selective, pregressive transmission of 3D geometry models with the pre-ordered hierarchical meshes
CN112717414B (en) Game scene editing method and device, electronic equipment and storage medium
GB2406252A (en) Generation of texture maps for use in 3D computer graphics
CN108290071B (en) Media, apparatus, system, and method for determining resource allocation for performing rendering with prediction of player's intention
WO2002058044A2 (en) A reduced texture bandwidth method for providing filtering between texture mipmap levels
KR20180088876A (en) Image processing method and apparatus
US6933941B1 (en) Scene representation method and system
US20230149813A1 (en) Computer-Implemented Methods for Generating Level of Detail Assets for Dynamic Rendering During a Videogame Session
JP4887419B2 (en) Multi-resolution geometrical arrangement
JP2003233836A (en) Image processor for conducting rendering shading processing by using distance component in modeling and its method
JP4759109B2 (en) Multi-resolution geometrical arrangement

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUGARLOAF ACQUISITIONS, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SPATIAL CORPORATION;REEL/FRAME:020695/0390

Effective date: 20030922

Owner name: SVEN TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KATO, SAUL S.;REEL/FRAME:020695/0372

Effective date: 19990420

Owner name: SPATIAL CORPORATION, COLORADO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SVEN TECHNOLOGIES, INC.;REEL/FRAME:020695/0380

Effective date: 20011024

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: RATEZE REMOTE MGMT. L.L.C., DELAWARE

Free format text: MERGER;ASSIGNOR:SUGARLOAF ACQUISITIONS LLC;REEL/FRAME:037249/0122

Effective date: 20150826

AS Assignment

Owner name: HANGER SOLUTIONS, LLC, GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTELLECTUAL VENTURES ASSETS 161 LLC;REEL/FRAME:052159/0509

Effective date: 20191206

AS Assignment

Owner name: INTELLECTUAL VENTURES ASSETS 161 LLC, DELAWARE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RATEZE REMOTE MGMT. L.L.C.;REEL/FRAME:051949/0145

Effective date: 20191126