# Patent

## Title
Structured polygonal mesh retesselation

## Abstract

An interactive multi-mesh modeling system may allow users to employ a variety of modeling techniques to interactively create one or more objects for a variety of different tasks or tools. The interactive multi-mesh modeling system may employ a variety of techniques for taking a source computer-generated representation of an object and providing the automatic creation, management, and maintenance of instances or versions of the source, and any information defined thereon or associated therewith, that are suitable for several different tasks. The interactive multi-mesh modeling system may further employ a variety of techniques for retesselating meshes based on determining new vertices and edges immediately in response to traversing an input mesh space.

## Background
CROSS-REFERENCES TO RELATED APPLICATIONS
This Applicants claims priority to and the benefit of U.S. Patent Application No. 61/248,045, filed Oct. 2, 2009 and entitled “STRUCTURED POLYGONAL MESH RETESSELATION,” the entire subject matter of which is herein incorporated by reference for all purposes.
This Application is related to the following commonly owned and co-pending applications:
U.S. patent application Ser. No. 12/893,319, filed Sep. 29, 2009 and entitled “Annotation-Based Mesh Modification” which claims priority to U.S. Provisional Patent Application No. 61/248,042, filed Oct. 2, 2009 and entitled “Automatic Annotation-Based Mesh Modification,” both of which are hereby incorporated by reference for all purposes.
U.S. patent application Ser. No. 12/893,395, filed Sep. 29, 2009 and entitled “Automatic Spatial Correspondence Disambiguation” which claims priority to U.S. Provisional Patent Application No. 61/248,046, filed Oct. 2, 2009 and entitled “Automatic Spatial Correspondence Disambiguation,” both of which are hereby incorporated by reference for all purposes.
U.S. patent application Ser. No. 12/893,431, filed Sep. 29, 2009 and entitled “Interactive Multi-Mesh Modeling System” which claims priority to U.S. Provisional Patent Application No. 61/248,050, filed Oct. 2, 2009 and entitled “Direct 3D Multiresolution Garment Modeling System,” both of which are hereby incorporated by reference for all purposes.
U.S. patent application Ser. No. 12/893,460, filed Sep. 29, 2009 and entitled “Fractured Texture Coordinates” which claims priority to U.S. Provisional Patent Application No. 61/248,051, filed Oct. 2, 2009 and entitled “Fractured Texture Coordinates,” both of which are hereby incorporated by reference for all purposes.


BACKGROUND
This disclosure relates to computer-generated imagery (CGI) and computer-aided animation. More specifically, this disclosure relates to an interactive multi-mesh garment modeling system and structured polygon mesh retesselation techniques for use in CGI and computer-aided animation.
With the wide-spread availability of computers, computer graphics artists and animators can rely upon computers to assist in production process for creating animations and computer-generated imagery (CGI). This may include using computers to have physical models be represented by virtual models in computer memory. Typically, two-dimensional (2D) or three-dimensional (3D) computer-aided animation combines 2D/3D models of objects and programmed movement of one or more of the models. In 3D computer animation, the first step is typically the object modeling process. Objects can be sculpted much like real clay or plaster, working from general forms to specific details, for example, with various sculpting tools. Models may then be constructed, for example, out of geometrical vertices, faces, and edges in a 3D coordinate system to represent the objects. These virtual models can then be manipulated using computers to, for example, simulate physics, design aesthetic actions such as poses or other deformations, crate lighting, coloring and paint, or the like, of characters or other elements of a computer animation display.
Pixar is one of the pioneering companies in the computer-generated imagery (CGI) and computer-aided animation industry. Pixar is more widely known as Pixar Animation Studios, the creators of animated features such as “Toy Story” (1995) and “Toy Story 2” (1999), “A Bugs Life” (1998), “Monsters, Inc.” (2001), “Finding Nemo” (2003), “The Incredibles” (2004), “Cars” (2006), “Ratatouille” (2007), and others. In addition to creating animated features, Pixar develops computing platforms and tools specially designed for computer-aided animation and CGI. One such example is now known as PhotoRealistic RenderMan, or PRMan for short. PRMan is a photorealistic RenderMan-compliant rendering software system based on the RenderMan Interface Specification (RISpec) which is Pixar's technical specification for a standard communications protocol (or interface) between 3D computer graphics programs and rendering programs. PRMan is produced by Pixar and used to render their in-house 3D animated movie productions. It is also available as a commercial product licensed to third parties, sold as part of a bundle called RenderMan Pro Server, a RenderMan-compliant rendering software system developed by Pixar based on their own interface specification. Other examples include tools and plug-ins for programs such as the AUTODESK MAYA high-end 3D computer graphics software package from AutoDesk, Inc. of San Rafael, Calif.
One core functional aspect of PRMan can include the use of a “rendering engine” to convert geometric and/or mathematical descriptions of objects into images. This process is known in the industry as “rendering.” For movies, other animated features, shorts, and special effects, a user (e.g., a skilled computer graphics artist) can specify the geometric or mathematical description of objects to be used in the rendered image or animation sequence, such as characters, props, background, or the like. In some instances, the geometric description of the objects may include a number of animation control variables (avars) and values for the avars. An animator may also pose the objects within the image or sequence and specify motions and positions of the objects over time to create an animation.
As such, the production of CGI and computer-aided animation may involve the extensive use of various computer graphics techniques to produce a visually appealing image from the geometric description of an object that may be used to convey an essential element of a story or provide a desired special effect. One of the challenges in creating these visually appealing images is the can be the balancing of a desire for a highly-detailed image of a character or other object with the practical issues involved in allocating the resources (both human and computational) required to produce those visually appealing images.
Therefore, one issue with the production process is the time and effort involved when a user undertakes to model the geometric description of an object. One practice in computer animation can be to use multiple versions of the same geometric model according to a specific task. One might, for example, create and render a model for final display, but prefer to use a somewhat simplified model for other purposes, such as creating animation or performing simulation. However, it may take several hours to several days for a user to design, create, rig, pose, paint, or otherwise prepare a model that can be used to produce the visually desired look for one task. This involvement in time and effort can limit that ability of the user to create enough variants of the model for use in different stages of the production process or in a single scene to covey particular element of the story or to provide the desired visual effect. Additionally, artistic control over the look of a model or its visual effect when placed in a scene may also be lost by some attempts at reducing the time and effect in preparing a model that rely too much on automated procedural creation of models.
Accordingly, what is desired is to solve one or more of the problems relating to creating objects for use in CGI and computer-aided animation, some of which may be discussed herein. Additionally, what is desired is to reduce some of the drawbacks relating to creating objects for use in CGI and computer-aided animation, some of which may be discussed herein.
BRIEF SUMMARY
This disclosure relates to computer-generated imagery (CGI) and computer-aided animation. More specifically, this disclosure relates to an interactive multi-mesh modeling system and structured polygon mesh retesselation techniques for use in CGI and computer-aided animation.
In various embodiments, an interactive multi-mesh modeling system may allow users to employ a variety of modeling techniques (e.g., solid modeling or shell/boundary modeling) to interactively create one or more computer-generated representations of objects (e.g., animated characters, static props, and objects whose motions are determined by computer simulations) for a variety of different tasks or tools associated with phases of modeling, layout and animation, and rendering. Some of these different tasks or tools can have requirements for the computer-generated representations of objects on which they operate. These requirements may differ from how some computer-generated representations where originally created (e.g., 3D solid objects output using solid modeling techniques vs. 2D flat “panel constructed” objects required for some computer simulations). Thus, the interactive multi-mesh modeling system may further employ a variety of techniques for taking a source computer-generated representation of an object and providing the automatic creation, management, and maintenance of instances or versions of the source, and any information defined thereon or associated therewith, that are suitable for several different tasks.
Accordingly, in one aspect, an interactive multi-mesh modeling system may automatically create and/or maintain one or more computer-generated representations of an object designated for each of a plurality of different tasks based on a source computer-generated representation of the object which may not be suitable to the requirements of some of the tasks. In another aspect, in maintaining each of the one or more computer-generated representations of the object designated for each of the plurality of different tasks, the interactive multi-mesh modeling system may automatically create and maintain correspondences between the source computer-generated representation of the object and any of the computer-generated representations of the object designated for the different tasks such that information defined on or otherwise associated with the source computer-generated representation of the object can be shared with or transferred to any of the other computer-generated representations of the object, and vice versa. In a further aspect, in maintaining each of the one or more computer-generated representations of the object designated for each of the plurality of different tasks, the interactive multi-mesh modeling system may automatically create and maintain correspondences between versions or iterations of computer-generated representations of the object that may be generated for the same task such that information defined on or otherwise associated with one computer-generated representation of the object used for the task can be shared with or transferred to any other computer-generated representation of the object for the same task, and vice versa. In a still further aspect, in maintaining each of the one or more computer-generated representations of the object designated for each of the plurality of different tasks, the interactive multi-mesh modeling system may automatically create and maintain correspondences between one of the computer-generated representations of the object designated for a first task and another computer-generated representations of the object designated for a second task such that information defined on or otherwise associated with one computer-generated representation of the object for one task can be shared with or transferred to another computer-generated representation of the object for another different task, and vice versa.
In one embodiment, a computer-implemented method for mesh retesselation can include receiving a first non-planar mesh. A mesh generation specification for a second mesh may be received. The mesh generation specification can define a sampling strategy and rejection criteria. For each vertex of the second mesh beginning with a seed vertex, one or more potential vertices that neighbor the vertex are determined based on the mesh generation specification. Each of the one or more potential vertices satisfy the rejection criteria. Further, one or more edges are immediately determined based on the vertex and the one or more potential vertices. Information specifying the second mesh can be generated based on each vertex of the second mesh and the determined edges
In some embodiments, generating the information specifying the second mesh can include generating a triangular mesh. In another aspect, generating the information specifying the second mesh can include generating the second mesh with the plurality of uniform structures having a user-specified size. In a further aspect, one or more vertices for the second mesh can be determined based on a boundary associated with the first mesh. One or more vertices for the second mesh may be determined in response to traversing a predetermined set of edges associated with the first mesh.
In further embodiments, a set of vertices of the second mesh may be determined that fail to satisfy finishing criteria specified in the mesh generation specification. One or more edges may be determined based the mesh generation specification and at least some of the vertices in the set of vertices that fail to satisfy the finishing criteria. In one aspect, an ordering may be determined for each vertex of the second mesh for which to determine potential vertices and edges associated with the vertex. The determined ordering may include a raster scan traversal of a space associated with the first mesh.
In some embodiments, receiving the mesh generation specification may include receiving resolution of the second mesh. In other embodiments, receiving the mesh generation specification further may include receiving one or more edge constraints that preserve one or more structures associated with the first mesh.
In one embodiment, a non-transitory computer-readable medium stores computer-executable code for mesh retesselation. The computer-readable medium can include code for receiving a first non-planar mesh, code for receiving a mesh generation specification for a second mesh, the mesh generation specification defining a sampling strategy and rejection criteria, code for, for each vertex of the second mesh beginning with a seed vertex, determining one or more potential vertices that neighbor each vertex of the second mesh based on the mesh generation specification, each of the one or more potential vertices satisfying the rejection criteria, and determining one or more edges based on the vertex and the one or more potential vertices, and code for generating information specifying the second mesh based on each vertex of the second mesh and the determined edges.
In another embodiment, a system for mesh retesselation can include a processor and a memory in communication with the processor and configured to store instructions which when executed by the processor cause the processor to receive a first non-planar mesh, receive a mesh generation specification for a second mesh, the mesh generation specification defining a sampling strategy and rejection criteria, for each vertex of the second mesh beginning at a seed vertex, determine one or more potential vertices that neighbor the vertex based on the mesh generation specification, each of the one or more potential vertices satisfying the rejection criteria, and determine one or more edges based on the vertex and the one or more potential vertices, and generate information specifying the second mesh based on each vertex of the second mesh and the determined edges.
A further understanding of the nature of and equivalents to the subject matter of this disclosure (as wells as any inherent or express advantages and improvements provided) should be realized by reference to the remaining portions of this disclosure, any accompanying drawings, and the claims in addition to the above section.



BRIEF DESCRIPTION OF THE DRAWINGS
In order to reasonably describe and illustrate those innovations, embodiments, and/or examples found within this disclosure, reference may be made to one or more accompanying drawings. The additional details or examples used to describe the one or more accompanying drawings should not be considered as limitations to the scope of any of the claimed inventions, any of the presently described embodiments and/or examples, or the presently understood best mode of any innovations presented within this disclosure.
FIG. 1 is a simplified block diagram of a system for creating computer graphics imagery (CGI) and computer-aided animation that may implement or incorporate various embodiments or techniques disclosed herein.
FIG. 2 is a simplified block diagram of an interactive multi-mesh modeling system in one embodiment for use in CGI and computer-aided animation.
FIG. 3 depicts an image of a 3D model associated with a shirt object that may be used in one embodiment of the interactive multi-mesh modeling system of FIG. 2.
FIG. 4 depicts an image of the 3D model associated with the shirt object of FIG. 3 with underlying mesh structures that may be used in one embodiment of the interactive multi-mesh modeling system of FIG. 2.
FIG. 5 illustrates selected aspects of multiple meshes managed by the interactive multi-mesh modeling system of FIG. 2 for the shirt object of FIG. 3 in one embodiment.
FIG. 6 is a simplified block diagram illustrating automatic multi-mesh management by the interactive multi-mesh modeling system of FIG. 2 for the shirt object of FIG. 3 in one embodiment.
FIGS. 7A, 7B, 7C, and 7D depict a low resolution mesh of a torus model and tesselations of the model at varying resolutions.
FIG. 8 is a simplified flowchart of a method for mesh retesselation in one embodiment for use in CGI and computer-aided animation.
FIGS. 9A and 9B depict differences between a non-uniform tesselation and a uniform tesselation of a model of a shirt.
FIG. 10 depicts a low resolution mesh of a torus model having one or more edges designated for preservation.
FIG. 11 depicts a retesselated higher resolution mesh of the torus model that preserves the one or more edges while approximating the original shape of the torus model.
FIG. 12 is a flowchart of a method for preserving constraint edges during mesh retesselation in one embodiment for use in CGI and computer-aided animation.
FIG. 13 depicts the low resolution mesh of the torus model of FIG. 10 during discretization of constraint edges in one embodiment.
FIG. 14 is a flowchart of a method for generating vertices during mesh retesselation in one embodiment for use in CGI and computer-aided animation.
FIG. 15 depicts the low resolution mesh of the torus model of FIG. 10 during vertex generation in one embodiment.
FIG. 16 depicts the low resolution mesh of the torus model of FIG. 10 during vertex generation in another embodiment.
FIG. 17 depicts differences between distance metrics that may be used during vertex generation in one embodiment.
FIG. 18 is a flowchart of a method for finalizing mesh retesselation in one embodiment for use in CGI and computer-aided animation.
FIG. 19 depicts how portions of a retesselated higher resolution mesh may be finalized in one embodiment.
FIGS. 20A and 20B depict differences between a higher resolution tesselation and lower resolution tesselation in one embodiment.
FIGS. 21A and 21B depict a low resolution 3D model of a shirt object and its rendering as a subdivision surface in one embodiment.
FIGS. 22A, 22B, 22C, and 22D depict a higher resolution tesselation of the 3D model of the shirt object, its rendering as a subdivision surface in one embodiment as well as views illustrating how the mesh can accommodate complex wrinkles and deformations not possible with the mesh of FIG. 21A.
FIG. 23 is a block diagram of a computer system or information processing device that may be used to implement or practice various embodiments of an invention whose teachings may be presented herein.



DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
This disclosure relates to computer-generated imagery (CGI) and computer-aided animation. More specifically, this disclosure relates to an interactive multi-mesh modeling system and structured polygon mesh retesselation techniques for use in CGI and computer-aided animation.
In various embodiments, an interactive multi-mesh modeling system may allow users to employ a variety of modeling techniques (e.g., solid modeling or shell/boundary modeling) to interactively create one or more computer-generated representations of objects (e.g., animated characters, static props, and objects whose motions are determined by computer simulations) for a variety of different tasks or tools associated with phases of modeling, layout and animation, and rendering. Some of these different tasks or tools can have requirements for the computer-generated representations of objects on which they operate. These requirements may differ from how some computer-generated representations where originally created (e.g., 3D solid objects output using solid modeling techniques vs. 2D flat “panel constructed” objects required for some computer simulations). Thus, the interactive multi-mesh modeling system may further employ a variety of techniques for taking a source computer-generated representation of an object and providing the automatic creation, management, and maintenance of instances or versions of the source, and any information defined thereon or associated therewith, that are suitable for several different tasks. The interactive multi-mesh modeling system may further employ a variety of retesselation techniques for taking a source computer-generated representation of an object and automatically generating task meshes.
Introduction
FIG. 1 is a simplified block diagram of system 100 for creating computer graphics imagery (CGI) and computer-aided animation that may implement or incorporate various embodiments or techniques disclosed herein. FIG. 1 may merely be illustrative of an embodiment or implementation disclosed herein should not limit the scope of any invention as recited in the claims. One of ordinary skill in the art may recognize through this disclosure and the teachings presented herein other variations, generalities, modifications, and/or alternatives to those embodiments or implementations illustrated in FIG. 1. In this example, system 100 can include one or more design computers 110, one or more object libraries 120, one or more object modeler systems 130, one or more object articulation systems 140, one or more object animation systems 150, one or more object simulation systems 160, and one or more object rendering systems 170.
The one or more design computers 110 can include hardware and software elements configured for designing one or more computer-generated objects used in CGI and assisting with computer-aided animation. Each of the one or more design computers 110 may be embodied as a single computing device or a set of one or more computing devices. Some examples of computing devices are PCs, laptops, workstations, mainframes, cluster computing system, grid computing systems, cloud computing systems, embedded devices, computer graphics devices, gaming devices and consoles, consumer electronic devices having programmable processors, or the like. The one or more design computers 110 may be used at various stages of a production process (e.g., pre-production, designing, creating, editing, simulating, animating, rendering, post-production, etc.) to produce models of objects, computer-generated scenes, images, image sequences, animations, motion pictures, video, audio, or associated effects related to CGI and animation by employing one or more of object libraries 120 and/or systems 130-170 via various tools or interfaces.
The one or more object libraries 120 can include hardware and/or software elements configured for storing and accessing information related to one or more computer-generated objects. The information may be accessed by the one or more design computers 110 and/or systems 130-170 during various stages of a production process to produce CGI and animation. Some examples of the one or more object libraries 120 can include one or more file, one or more databases, or other storage devices and mechanisms. The one or more object libraries 120 may be locally accessible to the one or more design computers 110 and/or system 130-170 or hosted by one or more computer systems or storage devices externally accessible to the one or more design computers 110 and/or system 130-170.
Some examples of information stored in the one or more object libraries 120 can include information representing an object itself, metadata, object geometry, object topology, rigging, control data, animation data, animation cues, simulation data, texture data, lighting data, shader code, or the like. An object stored in the one or more object libraries 120 can include any entity that has an n-dimensional (e.g., 1D, 2D, or 3D) surface geometry. The shape of an object can include a set of points or locations in space (e.g., object space) that make up the object's surface. Topology of an object can include the connectivity of the surface of the object (e.g., the genus or number of holes in an object) or the vertex/edge/face connectivity of an object.
The one or more object modeling systems 130 can include hardware and/or software elements configured for modeling one or more computer-generated objects. The one or more object modeling systems 130 can be embodied as the one or more design computers 110 and/or software programs hosted by one or more computer systems. The one or more object modeling systems 130 may be invoked by or used directly by a user of the one or more design computers 110 and/or automatically invoked by or used by one or more processes associated with the one or more design computers 110. Some examples of software programs embodied as the one or more object modeling systems 130 can include commercially available high-end 3D computer graphics and 3D modeling software packages, such as 3D STUDIO MAX and AUTODESK MAYA produced by Autodesk, Inc. of San Rafael, Calif.
Modeling can include the creating, sculpting, and editing of an object. In various embodiments, the one or more object modeling systems 130 may be configured to generated a model to include a description of the shape of an object. The one or more object modeling systems 130 can be configured to facilitate the creation and/or editing of features, such as non-uniform rational B-splines or NURBS, polygons and subdivision surfaces (or SubDivs), that may be used to describe the shape of an object. In general, polygons are a widely used model medium due to their relative stability and functionality. Polygons can also act as the bridge between NURBS and SubDivs. NURBS are used mainly for their ready-smooth appearance and generally respond well to deformations. SubDivs are a combination of both NURBS and polygons representing a smooth surface via the specification of a coarser piecewise linear polygon mesh. A single object may have several different models that describe its shape.
The one or more object modeling systems 130 may further generate model data (e.g., 2D and 3D model data) for use by other elements of system 100 or that can be stored in the one or more object libraries 120. The one or more object modeling systems 130 may be configured to allow a user to associate additional information, metadata, color, lighting, rigging, controls, or the like, with all or a portion of the generated model data.
The one or more object articulation systems 140 can include hardware and/or software elements configured to articulating one or more computer-generated objects. The one or more object articulation systems 140 can be embodied as the one or more design computers 110 and/or software programs hosted by one or more computer systems. The one or more object articulation systems 140 may be invoked by or used directly by a user of the one or more design computers 110 and/or automatically invoked by or used by one or more processes associated with the one or more design computers 110. Some examples of software programs embodied as the one or more object articulation systems 140 can include commercially available high-end 3D computer graphics and 3D modeling software packages, such as 3D STUDIO MAX and AUTODESK MAYA produced by Autodesk, Inc. of San Rafael, Calif.
Articulation can include the building or creation of rigs, the rigging of an object, and the editing of rigging. In various embodiments, the one or more articulation systems 140 be configured to enable the specification of rigging for an object, such as for internal skeletal structures or eternal features, and to define how input motion deforms the object. One technique is called “skeletal animation,” in which a character can be represented in at least two parts: a surface representation used to draw the character (called the skin) and a hierarchical set of bones used for animation (called the skeleton). Another technique involves the use of deformers in which a surface representation used to draw the character is deformed in response to one or more control structures that enclose the surface representation and whose manipulations drive the deformers.
The one or more object articulation systems 140 may further generate articulation data (e.g., data associated with controls or animations variables) for use by other elements of system 100 or that can be stored in the one or more object libraries 120. The one or more object articulation systems 140 may be configured to allow a user to associate additional information, metadata, color, lighting, rigging, controls, or the like, with all or a portion of the generated articulation data.
The one or more object animation systems 150 can include hardware and/or software elements configured for animating one or more computer-generated objects. The one or more object animation systems 150 can be embodied as the one or more design computers 110 and/or as software programs hosted by one or more computer systems. The one or more object animation systems 150 may be invoked by or used directly by a user of the one or more design computers 110 and/or automatically invoked by or used by one or more processes associated with the one or more design computers 110. Some examples of software programs embodied as the one or more object animation systems 150 can include commercially available high-end 3D computer graphics and 3D modeling software packages, such as 3D STUDIO MAX and AUTODESK MAYA produced by Autodesk, Inc. of San Rafael, Calif.
Animation can include the specification of motion and position of an object over time. In various embodiments, the one or more animation systems 150 may be configured to enable users to manipulate controls or animation variables or utilized character rigging to specify poses of object for one or more key frames of an animation sequence. The one or more animation systems 150 generate intermediary frames based on the one or more key frames. In some embodiments, the one or more animation systems 150 may be configured to enable users to specify animation cues, paths, or the like according to one or more predefined sequences. The one or more animation systems 150 generate frames of the animation based on the animation cues or paths. In further embodiments, the one or more animation systems 150 may be configured to enable users to define animations using one or more animation languages, morphs, deformations, or the like.
The one or more object animations systems 150 may further generate animation data (e.g., inputs associated with controls or animations variables) for use by other elements of system 100 or that can be stored in the one or more object libraries 120. The one or more object animations systems 150 may be configured to allow a user to associate additional information, metadata, color, lighting, rigging, controls, or the like, with all or a portion of the generated animation data.
The one or more object simulation systems 160 can include hardware and/or software elements configured for simulating one or more computer-generated objects. The one or more object simulation systems 160 can be embodied as the one or more design computers 110 and/or as software programs hosted by one or more computer systems. The one or more object simulation systems 160 may be invoked by or used directly by a user of the one or more design computers 110 and/or automatically invoked by or used by one or more processes associated with the one or more design computers 110. Some examples of software programs embodied as the one or more object simulation systems 160 can include physically-based numerical engines and commercially available high-end 3D computer graphics and 3D modeling software packages, such as 3D STUDIO MAX and AUTODESK MAYA produced by Autodesk, Inc. of San Rafael, Calif.
Simulation can include determining behavior, such as motion/position/collisions, of an object in response to one or more simulated forces, conditions, or other objects. In various embodiments, the one or more object simulation systems 160 may be configured to enable users to create, define, edit, or configure simulation engines, such as a physics engine or physics processing unit (PPU/GPGPU) using one or more physically-based numerical techniques. In general, a physics engine can include a computer program that simulates one or more physics models (e.g., a Newtonian physics model), using variables such as mass, velocity, friction, wind resistance, or the like. The physics engine may simulate and predict effects under different conditions that would approximate what happens to an object according to the physics model. The one or more object simulation systems 160 may be used to simulate the behavior of objects, such as hair, fur, and cloth, in response to a physics model and/or animation of one or more characters and objects within a computer-generated scene.
The one or more object simulation systems 160 may further generate simulation data (e.g., motion and position of an object over time) for use by other elements of system 100 or that can be stored in the one or more object libraries 120. The generated simulation data may be combined with or used in addition to data generated by the systems 130-150. The one or more object simulation systems 160 may be configured to allow a user to associate additional information, metadata, color, lighting, rigging, controls, or the like, with all or a portion of the generated simulation data.
The one or more object rendering systems 170 can include hardware and/or software element configured for “rendering” or generating one or more images of one or more computer-generated objects. The one or more object rendering systems 170 can be embodied as the one or more design computers 110 and/or software programs hosted by one or more computer systems. The one or more object rendering systems 170 may be invoked by or used directly by a user of the one or more design computers 110 and/or automatically invoked by or used by one or more processes associated with the one or more design computers 110. One example of a software program embodied as the one or more object rendering systems 170 can include PhotoRealistic RenderMan, or PRMan, produced by Pixar Animations Studios of Emeryville, Calif.
“Rendering” can include generating an image from a model based on information such as geometry, viewpoint, texture, lighting, and shading information. In various embodiments, the one or more object rendering systems 170 can be configured to render one or more objects to produce one or more computer-generated images or a set of images over time that provide an animation. The one or more object rendering systems 170 may generate digital images or raster graphics images.
In various embodiments, a rendered image can be understood in terms of a number of visible features. Some examples of visible features that may be considered by the one or more object rendering systems 170 may include shading (e.g., techniques relating to how the color and brightness of a surface varies with lighting), texture-mapping (e.g., techniques relating to applying detail information to surfaces or objects using maps), bump-mapping (e.g., techniques relating to simulating small-scale bumpiness on surfaces), fogging/participating medium (e.g., techniques relating to how light dims when passing through non-clear atmosphere or air; shadows (e.g., techniques relating to effects of obstructing light), soft shadows (e.g., techniques relating to varying darkness caused by partially obscured light sources), reflection (e.g., techniques relating to mirror-like or highly glossy reflection), transparency or opacity (e.g., techniques relating to sharp transmissions of light through solid objects), translucency (e.g., techniques relating to highly scattered transmissions of light through solid objects), refraction (e.g., techniques relating to bending of light associated with transparency, diffraction (e.g., techniques relating to bending, spreading and interference of light passing by an object or aperture that disrupts the ray), indirect illumination (e.g., techniques relating to surfaces illuminated by light reflected off other surfaces, rather than directly from a light source, also known as global illumination), caustics (e.g., a form of indirect illumination with techniques relating to reflections of light off a shiny object, or focusing of light through a transparent object, to produce bright highlights on another object), depth of field (e.g., techniques relating to how objects appear blurry or out of focus when too far in front of or behind the object in focus), motion blur (e.g., techniques relating to how objects appear blurry due to high-speed motion, or the motion of the camera), non-photorealistic rendering (e.g., techniques relating to rendering of scenes in an artistic style, intended to look like a painting or drawing), or the like.
The one or more object rendering systems 170 may further render images (e.g., motion and position of an object over time) for use by other elements of system 100 or that can be stored in the one or more object libraries 120. The one or more object rendering systems 170 may be configured to allow a user to associate additional information or metadata with all or a portion of the rendered image. The one or more object rendering systems 170 may output information that can be encoded in various image and video formats, such as those related to JPG, PNG, MPG, MOV, H.264, or the like.
Interactive Multi-Mesh Modeling System
In various embodiments, system 100 may include one or more hardware elements and/or software elements, components, tools, or processes, embodied as the one or more design computers 110, object library 120, the one or more object modeler systems 130, the one or more object articulation systems 140, the one or more object animation systems 150, the one or more object simulation systems 160, and/or the one or more object rendering systems 170 that provide one or more tools for an interactive multi-mesh modeling system. In some aspects, a 3D model may be the sole authored data from which system 100 automatically creates and maintains other versions or representation of the 3D model suitable for a variety of specific tasks or task related tools, such as animation, simulation, and rendering. In further aspects, system 100 may automatically create and maintain correspondences (e.g., correspondence functions) between the 3D model and these other versions or representation of the 3D model facilitating the uni-directional or bi-directional transfer of information between meshes. In still further aspects, system 100 may automatically create and maintain correspondences between some of these other versions or representation of the 3D model facilitating the uni-directional or bi-directional transfer of information between meshes used for the same tasks and/or the transfer of information between meshes used in different tasks.
FIG. 2 is a simplified block diagram of interactive multi-mesh modeling system 200 in one embodiment for use in CGI and computer-aided animation. Interactive multi-mesh modeling system 200 may be implemented by or otherwise incorporate elements of system 100 of FIG. 1. In various embodiments, interactive multi-mesh modeling system 200 allows a modeler to utilize, for example, solid 3D modeling tools and techniques to directly create, build, and edit one or more solid models of a variety of objects (e.g., input mesh 210). While this disclosure refers to garment objects and their associated modeling, animation, simulation, and rendering—the techniques disclosed herein may be applied to other others types or classes of objects for which multi-mesh management is desired for the same task or for different tasks.
In various embodiments, input mesh 210 may be associated with any model. Input mesh 210 may have any predetermined geometry, topology, complexity, resolution, or the like. Input mesh 210 further may be represented by any structures typically used to create computer-generated objects. Input mesh 210 may be associated with a model created using one or more 2D sketches that are swept along a path to become 3D. These may be cuts, or extrusions for example. In another example, input mesh 210 may be associated with a model have one or more surfaces defined, trimmed, merged, or filled to make a solid object. In another example, input mesh 210 may include sufficient resolution to maintain a desired shape. In a further example, input mesh 210 may be associated with data, such as modeling, animation, simulation, or rendering data. Such data may be defined on input mesh 210 or otherwise associated with input mesh 210.
FIG. 3 depicts an image of 3D model 300 associated with a shirt object that may be used in one embodiment of interactive multi-mesh modeling system 200 of FIG. 2. Model 300 may be provided with enough detail or resolution that may be provided using conventional solid modeling techniques to express a desired shape as a shirt. In this example, FIG. 3 illustrates one or more features or details of model 300. In particular, model 300 has thickness 310 defined in and around the arm sleeves and thickness 320 defined in and around the bottom hem. Thickness 310 and 320 may be an effect of using solid modeling techniques to express the desired shape as a shirt. However, thickness 310 and 320 may be added to prevent the shape of model 300 from folding or bending as a static prop. Additionally, model 300 may include fine details, such as indentation details 330 defined to represent stitching and hemming at the top of an arm sleeve, indentation details 340 defined to represent stitching and hemming at the side seams, and indentation details 350 defined to represent stitching and hemming along the bottom hem.
FIG. 4 depicts an image of 3D model 300 associated with the shirt object of FIG. 3 with underlying mesh structures that may be used in one embodiment of interactive multi-mesh modeling system 200 of FIG. 2. In particular, model 300 may include a polygonal mesh having enough detail or resolution to express the desired shape as a shirt. In this example, FIG. 4 illustrates the above discussed features or details of model 300 and their corresponding underlying mesh structures. For example, model 300 may include one or more mesh structures for the thickness 310 define in the arm sleeves, one or more mesh structures for the thickness 320 defined along the bottom hem, and one or more mesh structures for the indentation details 330, 340, and 350.
At its current resolution or level of detail, model 300 may be use for display purposes or for rendering plausible images and animations. However, model 300 may not be directly suitable for other computer-generated graphics phases and tasks, such as simulation or photorealistic rendering. Traditionally, a modeler may have to manually create and maintain multiple versions of model 300 that may be used according to one or more different tasks. This can lead to several problems. For example, one problem with utilizing multiple versions of the same geometric model for different tasks is that during the design and authoring phase (i.e. when the model is initially being created and modified), it is unwieldy to force a modeler to build and maintain both a full model and the additional models needed to different tasks at the same time. This essentially compounds the amount of work required for every change to the full model that must be propagated to the different versions. In another example, garment models representing cloth traditionally have been modeling using flat panels that are stitched together. The skill set required to model cloth in this manner, however, may be different than the skill set of a typical 3D modeler or solid object modeler due to unfamiliarity with the requirements of computer simulations that rely on flat panel construction or varying user interfaces of different tool sets.
Accordingly, in various embodiments, interactive multi-mesh modeling system 200 may automatically create and maintain multiple instances or versions of input mesh 210 that may be used according to one or more different tasks. These automatically generated instances or versions may be completely independent of input mesh 210. Referring again to FIG. 2, interactive multi-mesh modeling system 200 may incorporate a variety of techniques that on demand or automatically reproduce or generate from a single mesh (e.g., input mesh 210) one or more additional meshes (e.g., output meshes 220) suitable for use in a variety of different tasks (e.g., tasks/tools 230), such as final rendering, animation, or simulation. Accordingly, each one of output meshes 220 may be used in a variety of workflows by workflow participants (e.g., users or processes/computers) in or during one of tasks 230 for which the output mesh was generated.
For example, interactive multi-mesh modeling system 200 may provide one or more user interfaces and tools that enable a user having a background in solid modeling to create any number of solid models that represent cloth or other garment objects. From these, interactive multi-mesh modeling system 200 can automatically create and maintain variant meshes each adapted for and suitable to a different task/tool of tasks/tools 230. Some examples of the different tasks tools can include modeling tasks, layout and animation tasks, simulation tasks, and rendering tasks. Variation can also exist within a task/tool, such as different types of rendering tasks. These variant meshes can have a higher or lower resolution than the original, have more or less geometry than the original, have different topologies, be of different topological types, or the like. There can be many reasons for that the original solid models may not be suitable for these particular task, one being that there may be extra geometric complexity of a final solid model that can interfere in some manner with the animation process or introduce additional processing time. Thus, interactive multi-mesh modeling system 200 can automatically create and maintain separate meshes each adapted for and suitable to their different tasks.
Accordingly, interactive multi-mesh modeling system 200 may on demand and/or automatically generate and maintain output mesh 220A and enable output mesh 220A to be utilized in or by task 230A, which may including one or more rendering tasks or tools. Output mesh 220A may be automatically created to include or not include one or more user-specified or procedurally determined enhancements or features in geometry, topology, resolution, detail, or the like, that make output mesh 220A more suitable for task 230A. Interactive multi-mesh modeling system 200 may automatically create and maintain a correspondence (e.g., one or more correspondence functions) specifying the transfer of information defined on or otherwise associated with input mesh 210 to automatically generated output mesh 220A. Accordingly, in one aspect, interactive multi-mesh modeling system 200 may automatically create and maintain a more complex, higher resolution model from an original model of a garment object to be rendered for final display.
In various embodiments, interactive multi-mesh modeling system 200 may on demand and/or automatically generate and maintain output mesh 220B and enable output mesh 220B to be utilized in or by task 230B, which may include one or more animation tasks or tools. Output mesh 220B may be automatically created to include or not include one or more user-specified or procedurally determined enhancements or features in geometry, topology, resolution, detail, or the like, that make output mesh 220B more suitable for task 230B. Interactive multi-mesh modeling system 200 may automatically create and maintain a correspondence (e.g., one or more correspondence functions) specifying the transfer of information defined on or otherwise associated with input mesh 210 to automatically generated output mesh 220B. Accordingly, in another aspect, interactive multi-mesh modeling system 200 may automatically create and maintain a somewhat geometrically simplified model from the original model of a garment object to be used for creating animation data.
In various embodiments, interactive multi-mesh modeling system 200 may on demand and/or automatically generate and maintain output mesh 220C and enable output mesh 220C to be utilized in or by task 230C, which may include one or more simulation tasks or tools. Output mesh 220C may be automatically created to include or not include one or more user-specified or procedurally determined enhancements or features in geometry, topology, resolution, detail, or the like, that make output mesh 220C more suitable for task 230C. Interactive multi-mesh modeling system 200 may automatically create and maintain a correspondence (e.g., one or more correspondence functions) specifying the transfer of information defined on or otherwise associated with input mesh 210 to automatically generated output mesh 220C. Accordingly, in another aspect, interactive multi-mesh modeling system 200 may automatically create and maintain a model from the original model of a garment object to be used for creating simulation data.
As discussed above, interactive multi-mesh modeling system 200 may impart animation data, simulation data, rendering data, or other information defined on or otherwise associated with input mesh 210 to each of the automatically generated output meshes 220. As such, changes to input mesh 210 by a modeler (e.g., geometric changes) or modifications to information defined on or otherwise associated with input mesh 210 can be automatically utilized in selected ones of tasks 230 as interactive multi-mesh modeling system 200 reflects such changes in the automatically generated output meshes 220.
In further embodiments, interactive multi-mesh modeling system 200 may impart animation data, simulation data, rendering data, or other information defined on or otherwise associated with one of the automatically generated output meshes 220 to another one of the automatically generated output meshes 220. For example, interactive multi-mesh modeling system 200 may transfer task data defined on a first model automatically created and maintained for use in a particular task to a second model subsequently used in the particular task as a replacement for first model due to changes to input mesh 210. Therefore, existing task data may be preserved from one version of a model to another used in the same tasks. In another example, may transfer task data defined one automatically created and maintained model used in a first task to another automatically created and maintained model used in a second task. Therefore, the results of first task may be transferred to the model used in the second tasks.
FIG. 5 illustrates selected aspects of aspects of multiple meshes managed by interactive multi-mesh modeling system 200 of FIG. 2 for the shirt object of FIG. 3 in one embodiment. In this example, input mesh 210 can be represented by an arbitrary solid polygonal mesh created using solid modeling techniques. Input mesh 210 can have a first resolution (represented by a first predetermined number of edges, vertices, and faces in FIG. 5). Interactive multi-mesh modeling system 200 may automatically generate output mesh 220A suitable for task 230A and automatically generate output mesh 220C suitable for task 230C.
Output mesh 220A can be represented by a solid polygonal mesh having a second resolution (represented by a second predetermined number of edges, vertices, and faces in FIG. 5). The second resolution can be greater than or less than the first resolution of input mesh 210. In this example, the number of edges, vertices, and faces for output mesh 220A in FIG. 5 is greater than the number of edges, vertices, and faces for input mesh 210. The second resolution may be determined based on requirements of a particular task. Accordingly, input mesh 210 may be upscaled or downscaled based on one or more specific task requirements.
Output mesh 220C can be represented by 2D polygonal mesh or flat panel having a third resolution (represented by a third predetermined number of edges, vertices, and faces in FIG. 5). The third resolution can be greater than or less than the first resolution of input mesh 210. Accordingly, in various embodiments, interactive multi-mesh modeling system 200 may automatically generate and maintain multiple meshes, each having different geometries, topologies, resolutions, or other aspects suited to requirements of their corresponding particular tasks. Thus, in various embodiments, interactive multi-mesh modeling system 200 facilitates and simplifies the construction of garment objects, some of which may be suitable for high-quality physical simulation and photorealistic rendering.
FIG. 6 is a simplified block diagram illustrating automatic multi-mesh management by interactive multi-mesh modeling system 200 of FIG. 2 for the shirt object of FIG. 3 in one embodiment. In various embodiments, input to interactive multi-mesh modeling system 200 can include a traditional 3D modeled mesh as discussed above with respect to input mesh 210. Input mesh 210 may have a relatively low polygon count that is sufficient to produce a desired shape. Input mesh 210 may be produced by any commercial modeling system. Based on an input mesh modeled using solid modeling techniques, for example, interactive multi-mesh modeling system 200 can automatically generate at least two new meshes. One mesh may be of a higher resolution and approximate the shape of the modeled mesh. The newly generated mesh may have a specific geometric regularity. The other mesh may also be of a different resolution (e.g., higher or lower) and approximate the shape of the modeled mesh. The newly crated mesh may also have a specific geometric regularity and may have one or more optional geometric simplifications that make the mesh more suitable for a particular tasks.
In various embodiments, input mesh 210 or other meshes utilized by interactive multi-mesh modeling system 200 may not necessarily be triangular or have a specific geometric regularity. Input mesh 210 may have one or more faces varying considerably in size. Additionally, input mesh 210 may not be in a proper form suitable, for example, for a garment simulation system or for a final rendering process. At least one process provided by interactive multi-mesh modeling system 200 for automatically producing or generating one or more meshes from an input mesh may include “retesselation.” Retesselation refers to one or more techniques that produce a new mesh that closely approximates the shape of an original mesh. In various embodiments, interactive multi-mesh modeling system 200 may provide that the structure of the retesselated mesh is to be more regular.
For example, in retesselation phase 610, interactive multi-mesh modeling system 200 may prepare input mesh 210 for one or more rendering tasks by generating shirt model 620. Shirt model 610 can be represented by a higher resolution mesh than input mesh 210 with a specific geometric regularity that is more suitable for rendering. In retesselation phase 610, interactive multi-mesh modeling system 200 may implement one or more techniques for taking input mesh 210 (e.g., having a 3D polygonal mesh) that may not necessarily be triangular and possibly having faces varying considerably in size, and producing a new triangular mesh that closely approximates the shape of the original. Interactive multi-mesh modeling system 200 may also prepare other models during retesselation phase 610 for other tasks, such as animation or simulation, by automatically generating meshes that are suitable to a task's particular requirements.
In various embodiments, input mesh 210 and other meshes utilized by interactive multi-mesh modeling system 200 may include extra geometric complexity that can interfere in some manner with one or more of tasks 230. At least one process provided by interactive multi-mesh modeling system 200 for automatically producing or generating one or more meshes from an input mesh may include “decimation.” Decimation refers to one or more techniques that simplify or reduce the geometry and/or topology of a model. In other words, one or more geometric or topological simplifications may be made to a model to prepare the model in a format suitable for a particular task. For example, in decimation phase 630, interactive multi-mesh modeling system 200 may implement geometric, topological, or other changes resulting from adding, removing, or modifying vertices, faces, or edges of input mesh 210) to create another model (e.g., shirt model 640). For example, a flat “panel constructed” garment suitable for simulations may be generated based on input mesh 210.
In various embodiments, interactive multi-mesh modeling system 200 may be guided in decimation phase 630 using user input or automated feature determining techniques. For example, how input mesh 210 is to be decimated by interactive multi-mesh modeling system 200 may be specified using tags, annotations, or other metadata. In one example, one or more annotations may be defined by a user directly on input mesh 210 and/or added directly to the model. Interactive multi-mesh modeling system 200 may utilize existing techniques that differentiate features or elements of a mesh, such as coloring, as a source of one or more annotations used to decimate input mesh 210.
In further embodiments, input mesh 210 and other meshes utilized by interactive multi-mesh modeling system 200 may not be in an appropriate form for a particular tasks. At least one process provided by interactive multi-mesh modeling system 200 for automatically producing or generating one or more mesh from an input mesh may include the generation of “fracture texture coordinates.” As discussed above, some computer simulations may assume a flat “panel constructed” garment input. The simulation systems may need to know the rest shape of an object to be simulated to determine how a model will react when it finds itself in a shape other than its rest shape. In some cases, including the simulation of cloth-like behavior, simulation results may use force response algorithms that require a two-dimensional parameterization of the surface with very particular characteristics. However, these 2D parameterizations may loose some important pieces of information from the 3D model. Accordingly, in various embodiments, in fractured texture coordinates phase 660, interactive multi-mesh modeling system 200 may transform a UV mapping associated with input mesh 210 to determine gradients of U and V each polygon in the UV mapping that are substantially orthogonal and of uniform magnitude and that approximate the original gradients of U and V for the polygon. In fractured texture coordinates phase 660, interactive multi-mesh modeling system 200 may reshape individual polygons in the UV mapping based on the 3D representation of input mesh 210. Interactive multi-mesh modeling system 200 may also ensure that the measurement directions between neighboring polygons are consistent.
In further embodiments, interactive multi-mesh modeling system 200 automatically maintains correspondences between input mesh 210 and other mesh utilized or created by interactive multi-mesh modeling system 200 and between the mesh utilized or created by interactive multi-mesh modeling system 200 themselves. At least one process provided by interactive multi-mesh modeling system 200 for automatically producing or generating one or more mesh from an input mesh and the maintenance of correspondences may include a disambiguation. Interactive multi-mesh modeling system 200 may resolve ambiguities in one or more associations or correspondences between objects, such between input mesh 210 and shirt model 620, between instances or version of shirt model 620, and between shirt model 620 and shirt model 650 providing that animation/simulation of shirt model 650 produces similar animation/simulation results of shirt model 620 in rendering phase 690.
For example, in disambiguation phase 680, interactive multi-mesh modeling system 200 may determine one or more correspondences or correspondence functions that specify the transfer of information between two meshes. Interactive multi-mesh modeling system 200 may implement one or more techniques that take any produced animation/simulation data for one model (e.g., shirt model 650 provided by simulation phase 670), and correlated it to model 620 such that shirt model 620 is placed in the same position, pose, etc. or otherwise exhibits that same behavior for rendering phase 690. In the absence of any predetermined correspondence between shirt model 620 and shirt model 650 as a reference model, one most common way of assigning each driven region to a reference region to follow is using what is known as spatial correspondence where one puts both the driven and the reference model in some default or “neutral pose” which are known to correspond, and then associates regions of the driven mesh with the region of the reference mesh they are closest to. However, most simple correspondence techniques fail when the driven model is fairly complex compared to the reference model. Accordingly, in various embodiments, in disambiguation phase 680, interactive multi-mesh modeling system 200 may implement one or more techniques for determining a spatial correspondence using a combination of metrics defined on the two meshes and a metric define on an embedding space. Some examples of metrics are Euclidean distance, geodesic distance, and topological distance.
In further embodiments, interactive multi-mesh modeling system 200 may enable the rendering of input mesh 210 or any of automatically generated output meshes 230 and associated task data in at least one rendering process provided by interactive multi-mesh modeling system 200 or connected to interactive multi-mesh modeling system 200. Interactive multi-mesh modeling system 200 may automatically generate shirt model 620 suitable for rendering and using one or more automatically generated associations or correspondences, transfer any modeling/animation/simulation or other task data from any one of input mesh 210 or other automatically generated shirt models to shirt model 620 in rendering phase 690.
Accordingly, in aspects of various embodiments, interactive multi-mesh modeling system 200 allows for interactive creation and design of a single 3D solid cloth model, for the authoring of animation data, simulation data (e.g., material characteristics), rendering data (e.g., shading/texture data), or the like, on the model or on one of multiple automatically generated version of the model that are suitable for a specific task, and for the automatic management and transferring of all or part of the authored data and results of these various tasks from the original model and between any automatically generated versions of the original model.
Mesh Retesselation
In various embodiments, modelers may utilize interactive multi-mesh modeling system 200 to generate polygonal meshes for models that have as low a resolution as possible while still being able to express the desired shape of the models. These lower resolution models may be easier to work with for particular tasks. In contrast, some tasks such as simulating or animating the models may require considerably higher geometric resolution to allow for bending, folding, or other deformations.
When a model is defined primarily in terms of mathematical shapes with simple 2D parameterizations, retesselating these meshes to lower or higher resolutions can be fairly straightforward. For example, a model crafted from Nurbs patches can be easily tesselated to any desired resolution. Unfortunately, models defined in terms of arbitrary polygonal meshes (in particular, subdivision surfaces), cannot easily be retesselated in a controlled fashion. Simple uniform subdivision (which can quadruple the number of vertices with each subdivision step) can increase resolution but resolution can only vary by corresponding factors (e.g., in this case four) in the number of vertices. Additionally, the resolution can only be increased and the aspect ratio of faces remains unchanged.
In various embodiments, as interactive multi-mesh modeling system 200 can incorporate a variety of tasks (notably, physical simulation of deformable surfaces), it is very desirable to tesselate a polygonal mesh in a uniform fashion to generate a higher resolution polygonal mesh that approximates the shape of the original model. Additionally, when interactive multi-mesh modeling system 200 renders such the high resolution mesh, it is often necessary for the tesselation (e.g., the output mesh) to satisfy tasks requirements but also constraints, such as preserving certain edge runs that were present in the original model. In an opposite direction, interactive multi-mesh modeling system 200 can also take a mesh and lower its resolution. While this is can be done by starting with the original mesh and decimating it to produce a simplified mesh, interactive multi-mesh modeling system 200 can form a new mesh that approximates the shape of the original model without regard to the structure of the original mesh.
FIGS. 7A, 7B, 7C, and 7D depict a low resolution mesh of torus model 710 and tesselations 720, 730, and 740 of model 710 at varying resolutions.
FIG. 8 is a simplified flowchart of method 800 for mesh retesselation in one embodiment for use in CGI and computer-aided animation. The processing of method 800 depicted in FIG. 8 may be performed by software (e.g., instructions or code modules) when executed by a central processing unit (CPU or processor) of a logic machine, such as a computer system or information processing device, by hardware components of an electronic device or application-specific integrated circuits, or by combinations of software and hardware elements. Method 800 depicted in FIG. 8 begins in step 810.
In step 820, information specifying an input mesh is received. In various embodiments, the input mesh can include 3D polygonal mesh. The input mesh may not necessarily be triangular. Moreover, in some embodiments, the input mesh may include faces that vary considerably in size. In general, interactive multi-mesh modeling system 200 places no restrictions on the input mesh in terms of its topology or shape.
In step 830, information is received specifying requirements for an output mesh. In one embodiment, the requirements for the output mesh may be specified by or otherwise determined from any instructions or requirements associated with a particular tasks for which the output mesh is being generated. In another embodiment, a user of interactive multi-mesh modeling system 200 may directly or indirectly specify the requirements of the output mesh.
One example of the requirements for the output mesh may include a desired resolution or granularity of the output mesh. Resolution or granularity may be specified in terms of a number of divisions or subdivisions in that a particular number of vertices, edges, faces, etc. are desired. Resolution or granularity may further be specified spatially in that of less concern is the number of vertices, edges, faces, etc. but their spatial proximities or relative distances and spacing. The resolution or granularity of the output mesh can be adjusted in a continuous fashion. Accordingly, any increase in resolution is not limited to powers of two or four in the vertex count. In further embodiments, a resolution factor can also be adjustable across the output mesh itself, rather than constant over the mesh.
Another example of the requirements for the output mesh may include uniformity. If desired, interactive multi-mesh modeling system 200 can make the output mesh have a uniform structure, over the entire mesh, over large portions of the mesh, or the like. FIGS. 9A and 9B depict differences between a non-uniform tesselation and a uniform tesselation of a model of a shirt, where the tesselation depicted in FIG. 9B is largely uniform. There are a number of known techniques for producing non-uniform meshes with the quality shown in FIG. 9A. Meshes with uniform (or at least, smoothly varying) spacing can be particularly important when the mesh is used for rendering, because non-uniform spacing is not friendly to rendering. In particular, rendering the non-uniformly tesselated mesh in FIG. 9A can invariably result in a slightly lumpy surface, no matter what smoothing techniques are applied. The uniformly tesselated surface in FIG. 9B however can be rendered simply as a triangular subdvision surface with good results.
In various embodiments, a user of interactive multi-mesh modeling system 200 may specify one or more requirements of uniformity (or as close to uniform as possible) while allowing interactive multi-mesh modeling system 200 to be free to avoid placing vertices on edges of the input mesh, when necessary. In other words, interactive multi-mesh modeling system 200 may generate an output mesh that approximates the shape of the input mesh, but is not required to always reflect the topology of the input mesh.
Another example of the requirements for the output mesh may include any constraints. In contrast to any uniformity requirements, there may be times when all or part of an output mesh is desired to reflect an input mesh. FIG. 10 depicts low resolution mesh 1000 of a torus model having one or more edges designated for preservation. For example, edge chains 1010, 1020, and 1030 can be manually requested by a user to be preserved during tesselation or automatically inferred by interactive multi-mesh modeling system 200 based on constraint criteria (e.g. all edges with angles or curvature beyond a certain threshold), or a combination of both. In one embodiment, edge chains 1010, 1020, and 1030 may be designated for preservation by a user annotating on mesh 1000. Visual representations of such annotations may be generated using color information or the like that enable the user to quickly see which features of a mesh will be preserved or more closely approximated. In another example, edge chain 1040 along a boundary of mesh 1000 may similarly be manually or automatically designated for preservation. In various embodiments, interactive multi-mesh modeling system 200 may treat edges, edge chains, and other features that represent mesh boundarys as constraint edges to be preserved or more closely approximated during tesselation. Accordingly, during tesselation interactive multi-mesh modeling system 200 can preserve boundary edges and certain key features, while ignoring others, to produce higher resolution meshes for rendering or other tasks.
FIG. 11 depicts retesselated higher resolution mesh 1100 that preserves one or more edges of the torus model of FIG. 10 while approximating the original shape. In this example, edge chains 1110, 1120, and 1130 correspond to edge chains 1010, 1020, and 1030 respectively and have been preserved in mesh 1100 to provide the shape of mesh 1000 in their given regions. Edge chain 1140 at the boundary of mesh 1100 corresponds to edge chain 1040.
In various embodiments, interactive multi-mesh modeling system 200 may analyze the input mesh for predetermined structures. For example, interactive multi-mesh modeling system 200 may identify faces of the input mesh that are not triangular. In another example, interactive multi-mesh modeling system 200 may identify faces of the input mesh that fail to satisfy size related criteria. Other mesh structures may be automatically identified by interactive multi-mesh modeling system 200 or specified by a user for either removal, preservation, decimation, or retesselation.
Returning to FIG. 8, in step 840, an output mesh is generated based on the requirements. The output mesh may have an adjustable resolution, be considerably more regular and uniform, and satisfy any constraints. For example, interactive multi-mesh modeling system 200 may produce an output mesh as a new triangular mesh that closely approximates the shape of the original input mesh. In another example, interactive multi-mesh modeling system 200 may produce a triangular mesh that includes features that are highly uniform (i.e., triangle patterns form a mostly uniform hexagonal grid). In a further example, interactive multi-mesh modeling system 200 may produce a triangular mesh that includes features where triangle size is dictated by a user. Accordingly, a user may specifying that triangles are all the same size, that different sizes are used in different portions of a mesh, that triangle sizes smoothly vary across a mesh, or the like. In a still further example, interactive multi-mesh modeling system 200 may produce a triangular mesh that does or does not include features that are subject to one or more constraints (i.e., certain edges of the input mesh are preserved by the triangular output mesh).
Accordingly, in various embodiments, interactive multi-mesh modeling system 200 may produce a triangular output mesh by exploring (i.e., “walking”) an input mesh in a systematic fashion, thereby producing a new uniform mesh having an arbitrary resolution and satisfying any number of constraints. In step 850, the output mesh is stored and may be used for a variety of tasks. FIG. 8 ends in step 860.
FIG. 12 is a flowchart of method 1200 for preserving constraint edges during mesh retesselation in one embodiment for use in CGI and computer-aided animation. Implementations of or processing in method 1200 depicted in FIG. 12 may be performed by software (e.g., instructions or code modules) when executed by a central processing unit (CPU or processor) of a logic machine, such as a computer system or information processing device, by hardware components of an electronic device or application-specific integrated circuits, or by combinations of software and hardware elements. Method 1200 depicted in FIG. 12 begins in step 1210.
In step 1220, resolution of an output mesh is determined based on the requirements of the output mesh. For example, resolution of the output mesh may be specifically defined in the requirements. In another example, resolution of the output mesh may be inferred from task instructions or requirements. In yet another example, resolution of the output mesh may be inferred and/or determined based on mesh criteria, such as the size of triangles, the number of faces/edges/vertices, the spacing of mesh feature, etc.
In step 1230, boundary edges and constraint edges are determined. In one example, interactive multi-mesh modeling system 200 may automatically determine a closed boundary and designate any edges or edge chains that form the closed boundary as boundary edges. In another example, a user of interactive multi-mesh modeling system 200 may designate all or a portion of a mesh as a boundary. In a further example, interactive multi-mesh modeling system 200 may determine constraint edges as those edges or edge chains that satisfy constraint criteria. In a still further example, a user of interactive multi-mesh modeling system 200 may designate one or more vertices, edges, edge chains, faces, or other mesh features for preservation as constraint edges.
In step 1240, the determined boundary edges and constraint edges are discretized. In one embodiment, the determined boundary edges and constraint edges are discretized by interactive multi-mesh modeling system 200 into a sequence of vertices. For example, interactive multi-mesh modeling system 200 may “walking along” each edge and place vertices at distances that reflect the required resolution. As vertices are placed in order, edges can be formed in sequential fashion. FIG. 12 ends in step 1250.
FIG. 13 depicts low resolution mesh 1000 of the torus model of FIG. 10 during discretization of constraint edges in one embodiment. Accordingly, interactive multi-mesh modeling system 200 may record an edge between v1 and v2, denoted (v1, v2), an edge between v2 and v3, and so on by traversing edge chain 1040 forming part of a boundary edge of mesh 1000. In another example, interactive multi-mesh modeling system 200 may traverse edge chain 1050 designated as a constraint edge that cuts through the middle of a patch associated with mesh 1000 to give rise to edges (v3, v37), (v37, v38), etc.
FIG. 14 is a flowchart of method 1400 for generating vertices during mesh retesselation in one embodiment for use in CGI and computer-aided animation. Implementations of or processing in method 1400 depicted in FIG. 14 may be performed by software (e.g., instructions or code modules) when executed by a central processing unit (CPU or processor) of a logic machine, such as a computer system or information processing device, by hardware components of an electronic device or application-specific integrated circuits, or by combinations of software and hardware elements. Method 1400 depicted in FIG. 14 begins in step 1410.
In step 1420, a starting vertex is determined. For example, interactive multi-mesh modeling system 200 may select starting vertex v0. In another example, a user may specify a starting vertex.
In step 1430, potential neighboring vertices of the starting vertex are generated based on the requirement. For example, interactive multi-mesh modeling system 200 may generate evenly spaced neighbors around v0 based on a desired resolution as shown in FIG. 15. Each discovered neighbor vi can, at some future point, be given the opportunity to discover its own neighbors, thereby generating more vertices in the output mesh, and creating more edges. In step 1440, valid edges are determined. As shown in FIG. 15, each neighbor vi “discovered” from v0 (e.g., v1, v2, v3) gives rise to an edge between v0 and vi, denoted as (v0, vi).
Accordingly, if (vi, vj) and (vi, vk) and (vj, vk) are all valid edges, then vi, vj, and vk form a triangle in the output mesh. The set of neighbors around a given vertex vi can be generated by starting at vi and tracing a straight-line along a surface in a fixed direction. Since a polygon mesh is typically not planar, straight-line is meant in the sense of “as straight as possible.” For example, starting from vertex v0 shown in FIG. 15, a new vertex v1 is produced and (v0, v1) is recorded as an edge. The actual path from v0 to v1 may not actually a straight line, but merely one of the straightest lines possible that stays on the surface given the initial direction. Similarly, neighbors v2 and v3 may be discovered from v0 as shown in FIG. 15.
Assuming that interactive multi-mesh modeling system 200 is generating 6 neighbors based on the requirements, which would be the case for a triangular mesh, interactive multi-mesh modeling system 200 may then choose six equally spaced directions for which to place a new neighboring vertex. The distance traversed by interactive multi-mesh modeling system 200 to find each neighbor can either be constant over the entire mesh, or may vary according to some well-defined metric. For example, resolution may vary by painting a density field on the input mesh and interpreting that as the required output-mesh spacing.
In one aspect, not every vertex generated by interactive multi-mesh modeling system 200 will subsequently generate all its proposed neighbors. In many cases, a vertex's proposed neighbor may be rejected by interactive multi-mesh modeling system 200. For example, as shown in FIG. 15, the proposed neighbor vprop of v1 lies close to the already existing vertex v2, discovered from v0. In this case, because vprop and v2 are quite close in distance, interactive multi-mesh modeling system 200 may merge vprop into v2. Rather than creating a new vertex, interactive multi-mesh modeling system 200 may simply record the already existing vertex v2 as a neighbor of v1 and record the edge (v1, v2).
In another aspect, there can be cases where a vertex may not generate a new neighbor at all, either in the sense of creating a new vertex or in being linked to an existing vertex. This can happen for a variety of reasons. For example, interactive multi-mesh modeling system 200 may determine that a proposed vertex lies too close to already existing vertices or to already existing edges. FIG. 16 depicts two proposed neighbors of v1 that may be rejected by interactive multi-mesh modeling system 200. The proposed neighbor marked with a circle may be too close to an existing vertex, yet not close enough for a merge. Instead, interactive multi-mesh modeling system 200 may simply choose not to generate any new edge from v1 in this direction.
In another example, if a vertex vi proposes to generate a neighbor vj, and thus an edge (vi, vj), interactive multi-mesh modeling system 200 may ensure that the edge (vi, vj) neither intersects another edge, nor passes too close to an existing vertex. This is also shown in FIG. 16, where the second proposed neighbor from v1 is rejected by interactive multi-mesh modeling system 200 because the path from v1 to it crosses an existing edge chain created by discretizing edge chain 1050. Again, interactive multi-mesh modeling system 200 may record no vertex as a new neighbor of v1 in that particular direction.
In another aspect, interactive multi-mesh modeling system 200 may make a determination of distance between two vertices or the distance from a vertex to an edge using a geodesic distance, as opposed to simple Euclidean distance. As shown in FIG. 17, which depicts a mesh from an edge-on view, a proposed neighbor vj of vi is extremely close to an existing vertex vk, but only based on a metric using Euclidean distance. A metric using geodesic distance (e.g., the distance measured along the surface) between vk and vj is quite large. Accordingly, interactive multi-mesh modeling system 200 may select vj as a more suitable neighbor of vi.
Returning to FIG. 14, in step 1450 a next vertex is determined. Accordingly, each discovered neighbor vi can, at this point, be given the opportunity to discover its own neighbors by repeating steps 1430 and 1440, thereby generating more vertices in the output mesh, and creating more edges until in step 1460 all vertizes have generated neighbors. FIG. 14 ends in step 1470.
FIG. 18 is a flowchart of method 1800 for finalizing mesh retesselation in one embodiment for use in CGI and computer-aided animation. Implementations of or processing in method 1800 depicted in FIG. 18 may be performed by software (e.g., instructions or code modules) when executed by a central processing unit (CPU or processor) of a logic machine, such as a computer system or information processing device, by hardware components of an electronic device or application-specific integrated circuits, or by combinations of software and hardware elements. Method 1800 depicted in FIG. 18 begins in step 1810.
In step 1820, edges failing to satisfy finishing criteria are determined. Accordingly, once there are no more vertices left as determined in FIG. 14 that have not generated neighbors, any unfinished triangles may be closed by determine edges that fail to satisfy finishing criteria. An edge may fail to satisfy finishing criteria in that the edge may not be part of two triangles, such as edge (v3, vk) illustrated in FIG. 19. Boundary edges such as (v1, v2) or (v2, v3) may have other criteria where they need only be in one triangle.
In step 1830, additional edges are determined. In one aspect, interactive multi-mesh modeling system 200 may, given an edge that fails to satisfy finishing criteira—e.g., unfinished edge (vi, vj), search for a vertex vk near vi and vj such that both (vi, vk) and (vj, vk) form legal edges and admit the triangle (vi, vj, vk). In FIG. 19, interactive multi-mesh modeling system 200 may add the edge (v2, vk) which creates triangles (v1, v2, vk) and (v2, v3, vk). This process may be repeated for all the edges that fail to satisfy finishing criteria.
In step 1840, the output mesh is generated based on the valid vertices and edges. FIG. 18 ends in step 1850.
In various embodiments, interactive multi-mesh modeling system 200 can sufficiently build a tesselation by essentially exploring the surface of any input polygon mesh and iteratively construct a mesh satisfying the output mesh requirements. In one aspect, interactive multi-mesh modeling system 200 may specify a traversal order for ordering the discovery process of new vertices. Some examples of a traversal order include breadth-first search ordering (which widens the discovery in a roughly circular fashion around the starting vertex) and depth-first search ordering. Another example may include raster-based ordering where discover is proceeded in one consistent direction as long as possible. As depicted in FIG. 19, the white arrows indicate “rows” along which vertices are processed. That is, all vertices along a row have their neighbors generated, in order along the row, and then another such “scanline” row is considered. In various embodiments, raster ordering can improve upon the uniformity of tesselations, compared with breadth-first and depth-first orderings.
In another aspect, interactive multi-mesh modeling system 200 may specify a search direction. As each new vertex is discovered, interactive multi-mesh modeling system 200 may decide the directions to search from that vertex. Stated another way, interactive multi-mesh modeling system 200 may specify may determine for each vertex a local two-dimensional coordinate system in the plane of the polygon it lies in for generating paths to new neighbors. In one embodiment, interactive multi-mesh modeling system 200 may, if vi discovers vj, propagate vi's coordinate system to vj. In another embodiment, interactive multi-mesh modeling system 200 may have vj take the average of all coordinate systems of nearby vertices before proceeding on its own discovery phase. Other systematic approaches exist as well.
FIGS. 20A and 20B depict differences between a higher resolution tesselation and lower resolution tesselation in one embodiment. As previously discussed, interactive multi-mesh modeling system 200 may also be used to reduce complexity to which the disclosed techniques are applicable. FIG. 20B shows an input mesh that has been retesselated to have lower resolution that that shown in FIG. 20A.
Accordingly, interactive multi-mesh modeling system 200 can tesselate a polygonal mesh in a uniform fashion to generate a higher resolution polygonal mesh that approximates the shape of the original model. Additionally, interactive multi-mesh modeling system 200 can generate high resolution meshes through tesselation that satisfy tasks requirements as well as other constraints, such as preserving certain edge runs that were present in the original model. In an opposite direction, interactive multi-mesh modeling system 200 can also take a mesh and lower its resolution. Interactive multi-mesh modeling system 200 can form a new mesh that approximates the shape of the original model without regard to the structure of the original mesh.
As a final example, FIG. 21A shows a low resolution modeled mesh. FIG. 21B shows its rendering as a subdivision surface. Retesselation of this mesh is shown in FIG. 22A. The higher resolution of the mesh in 22A allows it to undergo complex deformations during simulation that the mesh in 21A cannot possibly accommodate. However, the precise control of the tesselation near sharp features of the mesh in FIG. 22A lets the rendering of the high resolution mesh (shown in FIGS. 22B, 22C, and 22D) retain the fine-grain features modeled into the subdivision surface. It is not at all apparent that vastly different meshes were used as input to a renderer.
FIG. 23 is a block diagram of computer system 2300 that may be used to implement or practice various embodiments of an invention whose teachings may be presented herein. FIG. 23 is merely illustrative of a computing device, general-purpose computer system programmed according to one or more disclosed techniques, or specific information processing device for an embodiment incorporating an invention whose teachings may be presented herein and does not limit the scope of the invention as recited in the claims. One of ordinary skill in the art would recognize other variations, modifications, and alternatives.
Computer system 2300 can include hardware and/or software elements configured for performing logic operations and calculations, input/output operations, machine communications, or the like. Computer system 2300 may include familiar computer components, such as one or more one or more data processors or central processing units (CPUs) 2305, one or more graphics processors or graphical processing units (GPUs) 2310, memory subsystem 2315, storage subsystem 2320, one or more input/output (I/O) interfaces 2325, communications interface 2330, or the like. Computer system 2300 can include system bus 2335 interconnecting the above components and providing functionality, such connectivity and inter-device communication. Computer system 2300 may be embodied as a computing device, such as a personal computer (PC), a workstation, a mini-computer, a mainframe, a cluster or farm of computing devices, a laptop, a notebook, a netbook, a PDA, a smartphone, a consumer electronic device, a gaming console, or the like.
The one or more data processors or central processing units (CPUs) 2305 can include hardware and/or software elements configured for executing logic or program code or for providing application-specific functionality. Some examples of CPU(s) 2305 can include one or more microprocessors (e.g., single core and multi-core) or micro-controllers, such as PENTIUM, ITANIUM, or CORE 2 processors from Intel of Santa Clara, Calif. and ATHLON, ATHLON XP, and OPTERON processors from Advanced Micro Devices of Sunnyvale, Calif. CPU(s) 2305 may also include one or more field-gate programmable arrays (FPGAs), application-specific integrated circuits (ASICs), or other microcontrollers. The one or more data processors or central processing units (CPUs) 2305 may include any number of registers, logic units, arithmetic units, caches, memory interfaces, or the like. The one or more data processors or central processing units (CPUs) 2305 may further be integrated, irremovably or moveably, into one or more motherboards or daughter boards.
The one or more graphics processor or graphical processing units (GPUs) 2310 can include hardware and/or software elements configured for executing logic or program code associated with graphics or for providing graphics-specific functionality. GPUs 2310 may include any conventional graphics processing unit, such as those provided by conventional video cards. Some examples of GPUs are commercially available from NVIDIA, ATI, and other vendors. In various embodiments, GPUs 2310 may include one or more vector or parallel processing units. These GPUs may be user programmable, and include hardware elements for encoding/decoding specific types of data (e.g., video data) or for accelerating 2D or 3D drawing operations, texturing operations, shading operations, or the like. The one or more graphics processors or graphical processing units (GPUs) 2310 may include any number of registers, logic units, arithmetic units, caches, memory interfaces, or the like. The one or more data processors or central processing units (CPUs) 2305 may further be integrated, irremovably or moveably, into one or more motherboards or daughter boards that include dedicated video memories, frame buffers, or the like.
Memory subsystem 2315 can include hardware and/or software elements configured for storing information. Memory subsystem 2315 may store information using machine-readable articles, information storage devices, or computer-readable storage media. Some examples of these articles used by memory subsystem 2370 can include random access memories (RAM), read-only-memories (ROMS), volatile memories, non-volatile memories, and other semiconductor memories. In various embodiments, memory subsystem 2315 can include structure polygon mesh retesselation data and program code 2340.
Storage subsystem 2320 can include hardware and/or software elements configured for storing information. Storage subsystem 2320 may store information using machine-readable articles, information storage devices, or computer-readable storage media. Storage subsystem 2320 may store information using storage media 2345. Some examples of storage media 2345 used by storage subsystem 2320 can include floppy disks, hard disks, optical storage media such as CD-ROMS, DVDs and bar codes, removable storage devices, networked storage devices, or the like. In some embodiments, all or part of structure polygon mesh retesselation data and program code 2340 may be stored using storage subsystem 2320.
In various embodiments, computer system 2300 may include one or more hypervisors or operating systems, such as WINDOWS, WINDOWS NT, WINDOWS XP, VISTA, or the like from Microsoft or Redmond, Wash., SOLARIS from Sun Microsystems, LINUX, UNIX, and UNIX-based operating system. Computer system 2300 may also include one or more applications configured to executed, perform, or otherwise implement techniques disclosed herein. These applications may be embodied as structure polygon mesh retesselation data and program code 2340. Additionally, computer programs, executable computer code, human-readable source code, shader code, rendering engines, or the like, and data, such as image files, models including geometrical descriptions of objects, ordered geometric descriptions of objects, procedural descriptions of models, scene descriptor files, or the like, may be stored in memory subsystem 2315 and/or storage subsystem 2320.
The one or more input/output (I/O) interfaces 2325 can include hardware and/or software elements configured for performing I/O operations. One or more input devices 2350 and/or one or more output devices 2355 may be communicatively coupled to the one or more I/O interfaces 2325.
The one or more input devices 2350 can include hardware and/or software elements configured for receiving information from one or more sources for computer system 2300. Some examples of the one or more input devices 2350 may include a computer mouse, a trackball, a track pad, a joystick, a wireless remote, a drawing tablet, a voice command system, an eye tracking system, external storage systems, a monitor appropriately configured as a touch screen, a communications interface appropriately configured as a transceiver, or the like. In various embodiments, the one or more input devices 2350 may allow a user of computer system 2300 to interact with one or more non-graphical or graphical user interfaces to enter a comment, select objects, icons, text, user interface widgets, or other user interface elements that appear on a monitor/display device via a command, a click of a button, or the like.
The one or more output devices 2355 can include hardware and/or software elements configured for outputting information to one or more destinations for computer system 2300. Some examples of the one or more output devices 2355 can include a printer, a fax, a feedback device for a mouse or joystick, external storage systems, a monitor or other display device, a communications interface appropriately configured as a transceiver, or the like. The one or more output devices 2355 may allow a user of computer system 2300 to view objects, icons, text, user interface widgets, or other user interface elements.
A display device or monitor may be used with computer system 2300 and can include hardware and/or software elements configured for displaying information. Some examples include familiar display devices, such as a television monitor, a cathode ray tube (CRT), a liquid crystal display (LCD), or the like.
Communications interface 2330 can include hardware and/or software elements configured for performing communications operations, including sending and receiving data. Some examples of communications interface 2330 may include a network communications interface, an external bus interface, an Ethernet card, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL) unit, FireWire interface, USB interface, or the like. For example, communications interface 2330 may be coupled to communications network/external bus 2380, such as a computer network, to a FireWire bus, a USB hub, or the like. In other embodiments, communications interface 2330 may be physically integrated as hardware on a motherboard or daughter board of computer system 2300, may be implemented as a software program, or the like, or may be implemented as a combination thereof.
In various embodiments, computer system 2300 may include software that enables communications over a network, such as a local area network or the Internet, using one or more communications protocols, such as the HTTP, TCP/IP, RTP/RTSP protocols, or the like. In some embodiments, other communications software and/or transfer protocols may also be used, for example IPX, UDP or the like, for communicating with hosts over the network or with a device directly connected to computer system 2300.
As suggested, FIG. 23 is merely representative of a general-purpose computer system appropriately configured or specific data processing device capable of implementing or incorporating various embodiments of an invention presented within this disclosure. Many other hardware and/or software configurations may be apparent to the skilled artisan which are suitable for use in implementing an invention presented within this disclosure or with various embodiments of an invention presented within this disclosure. For example, a computer system or data processing device may include desktop, portable, rack-mounted, or tablet configurations. Additionally, a computer system or information processing device may include a series of networked computers or clusters/grids of parallel processing devices. In still other embodiments, a computer system or information processing device may techniques described above as implemented upon a chip or an auxiliary processing board.
Various embodiments of any of one or more inventions whose teachings may be presented within this disclosure can be implemented in the form of logic in software, firmware, hardware, or a combination thereof. The logic may be stored in or on a machine-accessible memory, a machine-readable article, a tangible computer-readable medium, a computer-readable storage medium, or other computer/machine-readable media as a set of instructions adapted to direct a central processing unit (CPU or processor) of a logic machine to perform a set of steps that may be disclosed in various embodiments of an invention presented within this disclosure. The logic may form part of a software program or computer program product as code modules become operational with a processor of a computer system or an information-processing device when executed to perform a method or process in various embodiments of an invention presented within this disclosure. Based on this disclosure and the teachings provided herein, a person of ordinary skill in the art will appreciate other ways, variations, modifications, alternatives, and/or methods for implementing in software, firmware, hardware, or combinations thereof any of the disclosed operations or functionalities of various embodiments of one or more of the presented inventions.
The disclosed examples, implementations, and various embodiments of any one of those inventions whose teachings may be presented within this disclosure are merely illustrative to convey with reasonable clarity to those skilled in the art the teachings of this disclosure. As these implementations and embodiments may be described with reference to exemplary illustrations or specific figures, various modifications or adaptations of the methods and/or specific structures described can become apparent to those skilled in the art. All such modifications, adaptations, or variations that rely upon this disclosure and these teachings found herein, and through which the teachings have advanced the art, are to be considered within the scope of the one or more inventions whose teachings may be presented within this disclosure. Hence, the present descriptions and drawings should not be considered in a limiting sense, as it is understood that an invention presented within a disclosure is in no way limited to those embodiments specifically illustrated.
Accordingly, the above description and any accompanying drawings, illustrations, and figures are intended to be illustrative but not restrictive. The scope of any invention presented within this disclosure should, therefore, be determined not with simple reference to the above description and those embodiments shown in the figures, but instead should be determined with reference to the pending claims along with their full scope or equivalents.

## Claims

1. A computer-implemented method for mesh retesselation, the method comprising:
receiving, at one or more computer systems, a first non-planar mesh;
receiving, at the one or more computer systems, a mesh generation specification for a second mesh, the mesh generation specification defining a sampling strategy and rejection criteria;
for each vertex of the second mesh beginning with a seed vertex,
determining, with the one or more processors associated with the one or more computer systems, one or more potential vertices that neighbor the vertex based on the sampling strategy of the mesh generation specification, each of the one or more potential vertices satisfying the rejection criteria, and
determining, with the one or more processors associated with the one or more computer systems, one or more edges based on the vertex and the one or more potential vertices;

generating, with the one or more processors associated with the one or more computer system, information specifying the second mesh based on each vertex of the second mesh and the determined edges; and
storing the information specifying the second mesh in a storage device associated with the one or more computer systems.

2. The method of claim 1 wherein generating the information specifying the second mesh comprises generating a triangular mesh.

3. The method of claim 1 wherein generating the information specifying the second mesh comprises generating the second mesh with the plurality of uniform structures having a user-specified size.

4. The method of claim 1 further comprising determining one or more vertices for the second mesh based on a boundary associated with the first mesh.

5. The method of claim 1 further comprising determining one or more vertices for the second mesh in response to traversing a predetermined set of edges associated with the first mesh.

6. The method of claim 1 further comprising:
determining a set of vertices of the second mesh that fail to satisfy finishing criteria; and
determining one or more edges based the mesh generation specification and at least some of the vertices in the set of vertices that fail to satisfy the finishing criteria.

7. The method of claim 1 further comprising:
determining an ordering for each vertex of the second mesh for which to determine potential vertices and edges associated with the vertex.

8. The method of claim 7 wherein the determined ordering comprises a raster scan traversal of a space associated with the first mesh.

9. The method of claim 1 wherein receiving the mesh generation specification comprises receiving resolution of the second mesh.

10. The method of claim 1 wherein receiving the mesh generation specification further comprises receiving one or more edge constraints that preserve one or more structures associated with the first mesh.

11. A non-transitory computer-readable medium storing computer-executable code for mesh retesselation, the computer-readable medium comprising:
code for receiving a first non-planar mesh;
code for receiving a mesh generation specification for a second mesh, the mesh generation specification defining a sampling strategy and rejection criteria;
code for, for each vertex of the second mesh beginning with a seed vertex,
determining one or more potential vertices that neighbor each vertex of the second mesh based on the sampling strategy of the mesh generation specification, each of the one or more potential vertices satisfying the rejection criteria, and
determining one or more edges based on the vertex and the one or more potential vertices; and

code for generating information specifying the second mesh based on each vertex of the second mesh and the determined edges.

12. The computer-readable medium of claim 11 wherein the code for generating the information specifying the second mesh comprises code for generating a triangular mesh.

13. The computer-readable medium of claim 11 wherein the code for generating the information specifying the second mesh comprises code for generating the second mesh with the plurality of uniform structures having a user-specified size.

14. The computer-readable medium of claim 11 further comprising code for determining one or more vertices for the second mesh based on a boundary associated with the first mesh.

15. The computer-readable medium of claim 11 further comprising code for determining one or more vertices for the second mesh in response to traversing a predetermined set of edges associated with the first mesh.

16. The computer-readable medium of claim 11 further comprising:
code for determining a set of vertices of the second mesh that fail to satisfy finishing criteria; and
code for determining one or more edges based the mesh generation specification and at least some of the vertices in the set of vertices that fail to satisfy the finishing criteria.

17. The computer-readable medium of claim 11 further comprising:
code for determining a raster scan ordering for each vertex of the second mesh for which to determine potential vertices and edges associated with the vertex.

18. The computer-readable medium of claim 11 wherein the code for receiving the mesh generation specification comprises code for receiving resolution of the second mesh.

19. The computer-readable medium of claim 11 wherein the code for receiving the mesh generation specification further comprises code for receiving one or more edge constraints that preserve one or more structures associated with the first mesh.

20. A system for mesh retesselation, the system comprising:
a processor; and
a memory in communication with the processor and configured to store instructions which when executed by the processor cause the processor to:
receive a first non-planar mesh;
receive a mesh generation specification for a second mesh, the mesh generation specification defining a sampling strategy and rejection criteria;
for each vertex of the second mesh beginning at a seed vertex,
determine one or more potential vertices that neighbor the vertex based on the sampling strategy of the mesh generation specification, each of the one or more potential vertices satisfying the rejection criteria, and
determine one or more edges based on the vertex and the one or more potential vertices; and

generate information specifying the second mesh based on each vertex of the second mesh and the determined edges.