The present invention generally relates to rendering, processing, and management issues associated with relatively complex high density meshes, and more particularly relates to a system and method for mesh level of detail generation to allow relatively simple run-time management and rendering of relatively complex high density meshes.
In computer graphics, objects may be modeled as tessellated polygonal approximations or meshes. These polygons may be even further converted to triangles by triangulation. During run-time, it is desirable to render objects by transforming the mesh into a visual display using various levels of detail (LOD). For example, when objects are close to a viewer, a detailed mesh is used; however, as objects recede further and further from a viewer, less detailed meshes are used. As may be appreciated, run-time processing, management, and rendering such modeled objects quickly and efficiently can be processor intensive.
During the rendering process, it may be necessary to switch between the different LOD that were generated. This can, however, create “holes” or discontinuities due, for example, to artifacts generated by the reduction algorithm. Ideally, one would prefer to generate relatively continuous LOD to eliminate, or at least significantly reduce, such discontinuities, while at the same time providing an acceptable level of performance and visual quality. Various reduction algorithms have been developed to generate the different LOD associated with a mesh. However, presently known reduction algorithms that eliminate, or at least significantly reduce, discontinuities require significant amounts of computational overhead during the rendering process.
Hence, there is a need for a system and method for mesh LOD generation that allows relatively simple run-time management and rendering of relatively complex high density meshes, while eliminating or at least significantly reducing, discontinuities of the rendered mesh. The present invention addresses at least this need.
In one embodiment, a method for applying hierarchical mesh partitioning and reduction to provide efficient run-time rendering. The method is implemented in a processor and includes bounding a mesh to define a mesh volume, recursively subdividing the mesh volume a number of times, and reducing the mesh the number of times the mesh volume was subdivided to generate a plurality of level of detail meshes. The plurality of level of detail meshes is equal to the number of times the mesh volume was subdivided. Each level of detail mesh is then partitioned based on the number of times the mesh volume was subdivided.
In another embodiment, a hierarchical mesh partitioning and reduction system includes a display device and a processor. The display device is coupled to receive image rendering display commands and is configured, upon receipt thereof, to render images. The processor is in operable communication with the display device and is configured to bound a mesh to define a mesh volume, recursively subdivide the mesh volume a number of times, reduce the mesh the number of times the mesh volume was subdivided to generate a plurality of level of detail meshes, where the plurality of level of detail meshes equal to the number of times the mesh volume was subdivided, partition each level of detail mesh based on the number of times the mesh volume was subdivided, and command the display device to render segments from a single level of detail.
In yet another embodiment, a method for applying hierarchical mesh partitioning and reduction to provide efficient run-time rendering is implemented in a processor and includes bounding a mesh to define a mesh volume, recursively subdividing the mesh volume a number of times, and reducing the mesh the number of times the mesh volume was subdivided to generate a plurality of level of detail meshes. The plurality of level of detail meshes is equal to the number of times the mesh volume was subdivided. Each level of detail mesh is partitioned based on the number of times the mesh volume was subdivided, and segments from a single level of detail are rendered on a display device. The number of times that the mesh volume is subdivided is determined by calculating a metric for portions of the mesh inside each subdivision.
Furthermore, other desirable features and characteristics of the hierarchical mesh partitioning and reduction system and method will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and the preceding background.
The present invention will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and wherein:
The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Thus, any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments. All of the embodiments described herein are exemplary embodiments provided to enable persons skilled in the art to make or use the invention and not to limit the scope of the invention which is defined by the claims. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary, or the following detailed description.
Referring to
The display device 104 is in operable communication with the processor 102 and is configured, upon receipt of the image rendering display commands supplied by the processor 102, to render graphical representations of all or portions of the mesh 106. The display device 104 is configured to implement any one of numerous types of 2D or 3D displays that are suitable for rendering textual, graphic, and/or iconic information in a format viewable by a non-illustrated observer. Non-limiting examples of such display devices include various cathode ray tube (CRT) displays, various flat panel displays, such as various types of LCD (liquid crystal display) and TFT (thin film transistor) displays, and a 3D light field display. The display device 104 may additionally be implemented as a panel mounted display, a HUD (head-up display) projection, or any one of numerous other known technologies.
The processor 102, as previously noted, processes the received or retrieved mesh 106 for rendering on the display device 104. More specifically, the processor 102 is configured to implement a process that applies hierarchical mesh partitioning and reduction to the mesh 106, and does so in a manner that allows efficient run-time rendering on the display device 104 without introducing “holes” or other artifacts into the rendered mesh. This process 200 is depicted in flowchart form in
With reference now to
In the simplified example depicted in
Referring once again to
Having generated the plurality of LOD meshes 502, the processor 102 then partitions each LOD mesh 502 based on the number of times the mesh volume 302 was subdivided (208). As illustrated more clearly in
After the processor 102 has processed the received or received mesh 106 according to the above-described process 200, it may then command the display device 104 to render all, or portions, of the mesh 106. In doing so, the processor 102 will command the display device to use only segments from a single LOD. This is made possible because each LOD covers the entire original mesh 106.
The process 200 depicted in
The first issue may be addressed by slightly modifying the step of the process 200 in which each LOD mesh 502 is partitioned. Specifically, this step (208) is implemented by first partitioning each LOD mesh 502 in LOD order, from the lowest level of detail to the highest level of detail, and counting the vertices within each partitioned LOD mesh 502 for the next lower LOD. When the vertices within a partitioned LOD mesh 502 is less than a predetermined number, a boundary of the next lower LOD is used. As
The second issue described above may be addressed by slightly modifying both the step of the process 200 in which the mesh volume 302 is recursively subdivided, and step of the process 200 in which the mesh 106 is reduced. Specifically, and as may be appreciated, when the processor 102 recursively subdivides the mesh volume 302, it generates a plurality of mesh sub-volumes. As
Those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. Some of the embodiments and implementations are described above in terms of functional and/or logical block components (or modules) and various processing steps. However, it should be appreciated that such block components (or modules) may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention. For example, an embodiment of a system or a component may employ various integrated circuit components, e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices. In addition, those skilled in the art will appreciate that embodiments described herein are merely exemplary implementations.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal In the alternative, the processor and the storage medium may reside as discrete components in a user terminal
In this document, relational terms such as first and second, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Numerical ordinals such as “first,” “second,” “third,” etc. simply denote different singles of a plurality and do not imply any order or sequence unless specifically defined by the claim language. The sequence of the text in any of the claims does not imply that process steps must be performed in a temporal or logical order according to such sequence unless it is specifically defined by the language of the claim. The process steps may be interchanged in any order without departing from the scope of the invention as long as such an interchange does not contradict the claim language and is not logically nonsensical.
Furthermore, depending on the context, words such as “connect” or “coupled to” used in describing a relationship between different elements do not imply that a direct physical connection must be made between these elements. For example, two elements may be connected to each other physically, electronically, logically, or in any other manner, through one or more additional elements.
While at least one exemplary embodiment has been presented in the foregoing detailed description of the invention, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or exemplary embodiments are only examples, and are not intended to limit the scope, applicability, or configuration of the invention in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing an exemplary embodiment of the invention. It being understood that various changes may be made in the function and arrangement of elements described in an exemplary embodiment without departing from the scope of the invention as set forth in the appended claims.
This invention was made with Government support under Contract Number 7005596911-002 awarded by the Intelligence Advanced Research Projects Activity (IARPA). The Government has certain rights in this invention.