System and method for computer animation using an operational sequence transformation engine
The deformation engine system addresses the limitations of skeletal animation by operating on mesh-based assets with customizable deformers and operation orders, enabling realistic and efficient 3D animations across multiple platforms.
Patent Information
- Application Number
- JP2023504737
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-07-24
- Filing Date
- 2021-07-23
- Publication Date
- 2025-12-09
- Estimated Expiration
- 2041-07-23
AI Technical Summary
Conventional 3D animation systems, particularly in video games, face challenges in creating realistic character deformations due to the limitations of skeletal animation techniques, which require complex algorithms and substantial computational resources, leading to awkward movements and high memory requirements, and hinder the reuse of character assets across different platforms.
A deformation engine system that operates on asset meshes without internal frameworks, using deformers with user-selectable channels and customizable operation orders to achieve realistic deformations, reducing computational and memory demands, and enabling real-time manipulation and deployment across various devices.
Facilitates the creation of lifelike animations with reduced computational and memory requirements, allowing for efficient asset reuse across diverse platforms, including mobile devices, game consoles, and cloud rendering systems, while simplifying the character creation process.
Smart Images

Figure 0007783249000001 
Figure 0007783249000002 
Figure 0007783249000003
Abstract
Description
[Technical Field]
[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims priority to U.S. Provisional Patent Application No. 62 / 706,006, entitled "ORDER OF OPERATIONS DEFORMATION ENGINE," filed July 24, 2020, the entire disclosure of which is incorporated herein by reference.
[0002] (Technical field) The field of this disclosure relates generally to three-dimensional ("3D") animation, and more particularly to 3D animation using sequence-based transformations to create feature film-quality assets that can be deployed across a variety of existing platforms. [Background technology]
[0003] 3D animation is used in various fields, such as video games and filmmaking. A variety of animation tools and computer functions are used to create and animate objects, such as characters, used in these fields. For example, in the video game field, game systems (also called "game engines" or "game engine systems") are used to create and animate the objects and characters that appear in the user interface during gameplay.
[0004] Many conventional game systems used in the creation and production of modern video games use skeletal animation techniques (also known among video game creators as "skin and bone" techniques). These skeletal animation techniques use a set of interconnected members (or "bones") and joints to simulate the movement and deformation of an articulated object, such as an animated humanoid character, and in some cases (at least in the case of humanoid characters) roughly mimic a human skeleton. A surface mesh (or "skin") is bound or associated with the skeletal structure to represent the exterior of the articulated object.
[0005] In many conventional skin-and-bone implementations, the movement and surface deformation of skin-and-bone objects are controlled by complex physics algorithms (or other algorithms). These algorithms run in the background by software called a "game engine" or "digital content creation (DCC) tool." These algorithms are also run on objects to simulate their movement and other physical transformations (e.g., running, jumping, facial expressions, clothing movement, etc.). Examples of well-known game engines (or DCC software products) include, but are not limited to, MODO, UNREAL ENGINE, UNITY, and MAYA.
[0006] To facilitate intuitive creation, these complex algorithms are typically not exposed to the game creator or graphic artist responsible for creating characters. Instead, a simplified graphical user interface is presented by the game engine system, and objects and characters are created in that interface using graphical and other animation tools. As a result, on the front end, the creation process resembles digital sculpting, manipulating the skin and bone elements of a particular object to create it to function as desired.
[0007] However, although the physics algorithms or other algorithms that control the movement and deformation of game engine objects typically run as background processes and do not require direct control by game creators, various problems arise as a result of the skin-and-bone technology utilized in these game engine systems. For example, by design, conventional skin-and-bone game engine systems are configured to function by associating each bone of an articulated character architecture (articulated object) with some aspect of the skin. In other words, controlling the deformation and movement parameters that occur in a character's skin often requires adjusting the associated bones (even with simplified user interfaces). As those skilled in the art will appreciate, achieving complex deformations requires adjusting many bones, and even in well-designed games that require a lot of effort, this process can result in awkward character movement and deformations and, more generally, a less realistic character representation.
[0008] Additionally, the movement and / or deformation of skin near the intersections of multiple bones is affected by each bone, hindering the creation of realistic characters. Accommodating movement at these intersections typically requires the creation of a matrix or hierarchy of bone relationships, with each bone in the bone interconnection matrix affecting the movement of every other bone. As a result, the movement and deformation properties associated with a given bone in a character's or object's skeleton affect the movement and deformation of the other bones linked to it. From an algorithmic perspective, this creates a chain of transformations, so that when a game creator wants to change the appearance of an object near a given bone, the game creator must consider each of these chains of transformations. This often results in a lengthy and laborious design process when creating complex characters.
[0009] In addition to these drawbacks, many conventional skin-and-bone game engine systems require the maintenance of large libraries of geometric or other transformation data to facilitate the desired movement and animation characteristics of each of a variety of individually designed game characters. It can be appreciated that the memory requirements of a computer at run time (e.g., during game play) can be substantial. Similarly, the computational requirements for displaying the movements and actions performed by game characters can be quite substantial, requiring modern graphics processing units ("GPUs") and, in some cases, central processing units ("CPUs").
[0010] Additionally, tools for 3D design and animation are increasingly merging across disciplines such as film, television, and 3D printing. The creation of 3D-printed static models, as well as physical models and moving dynamic models such as animatronics, is associated with some theme parks and / or other related entertainment, and can benefit from tools for the design and transformation of 3D animated characters. Additionally, tools for 3D animated characters are increasingly being operated in real time by actors and artists at a desk or by actors and performers on a soundstage or virtual production set. Such tools typically receive input from motion tracking, face tracking, or manual (e.g., so-called Waldo) systems, and process the received data to update the 3D animated character in real time. Furthermore, story-driven series increasingly desire the same characters and storylines across different media, such as games and feature films. This has traditionally been a costly process because character assets cannot easily be reused between feature film and game teams, and character assets are created twice for each platform. Additionally, there is an increasing desire to deploy digital experiences across hardware systems with widely varying capabilities, ranging from portable, low-energy devices to high-performance gaming consoles, desktops, and cloud rendering systems, which again often requires creating different versions of assets, which adds time and cost.
[0011] Therefore, there is a need for a system for creating more realistic objects and characters. More specifically, there is a need for a system that can reproduce the deformation effects of muscle and fat, for example, and that allows for general nonlinear spatial deformation, without being limited to the skin-and-bone techniques commonly used in character creation. Additionally, there is a need for a system that can reduce and simplify the memory and computational requirements of computer graphics and other 3D animation techniques. There is also a need for a system that can facilitate and interact with 3D design and animation tools, such as 3D printing and animatronics techniques, and tools that can receive real-time motion capture data from artists. Furthermore, as noted above, the systems described herein facilitate the manipulation of a given asset across multiple media and devices, including, for example, mobile devices, game consoles, cloud-based rendering, and television / movie rendering media and devices. These and other advantages are described herein with reference to the present disclosure. Summary of the Invention [Means for solving the problem]
[0012] In one aspect, a method for computer animation is provided. The method includes, executed by a processor executing a multi-platform deformation engine system in conjunction with a third-party game engine system, receiving an input file including asset geometry defining an asset mesh structure. The method also includes, executed by the processor, applying at least one deformer to the asset mesh structure, the at least one deformer including a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust the visual appearance of the associated portion. The method also includes, executed by the processor, receiving a customizable operation order for executing at least a subset of the plurality of deformer channels based on user input, the operation order specifying an order for executing each deformer channel in real time during animation of the asset geometry. The method also includes, executed by the processor, creating an output file including the asset geometry, at least one deformer instance, and the operation order.
[0013] In another aspect, a tangible, non-transitory, computer-readable medium is provided having computer-executable instructions stored thereon that, when executed by a processor executing a multi-platform deformation engine system with a game engine system, cause the processor to perform at least the steps of receiving an input file including asset geometry, where the asset geometry defines an asset mesh structure, and where the asset geometry does not include an internal framework, and, when executed by the processor, causing the processor to perform at least the steps of associating at least one deformer instance with the asset mesh structure, where the at least one deformer instance includes a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust a visual appearance of the associated portion. The computer-executable instructions, when executed by the processor, are also configured to cause the processor to perform the steps of receiving a customizable operational sequence for executing at least a subset of the plurality of deformer channels based on user input, the operational sequence specifying an order for executing each deformer channel in real time during animation of the asset geometry, and creating an output file including the asset geometry, at least one deformer instance, and the operational sequence.
[0014] In yet another aspect, a system for computer animation is provided. The system of the present disclosure includes a storage device storing computer-executable instructions; and a processor configured to execute the computer-executable instructions stored on the storage device, the computer-executable instructions, when executed by the processor, to cause the processor to perform at least the steps of: receiving an input file including asset geometry, the asset geometry defining an asset mesh structure, and the asset geometry not including an internal framework. The computer-executable instructions, when executed by the processor, are also configured to cause the processor to perform the steps of: associating at least one deformer instance with the asset mesh structure, the at least one deformer instance including a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust a visual appearance of the associated portion. The computer-executable instructions, when executed by the processor, are also configured to cause the processor to perform the steps of receiving a customizable operational sequence for executing at least a subset of the plurality of deformer channels based on user input, the operational sequence specifying an order for executing each deformer channel in real time during animation of the asset geometry, and creating an output file including the asset geometry, at least one deformer instance, and the operational sequence. [Brief explanation of the drawings]
[0015] [Figure 1] FIG. 1 is a block diagram of an exemplary embodiment of a computer system including a game engine system and an order of operations (OOO) transformation engine system. [Figure 2] FIG. 2 is a block diagram of an exemplary embodiment of the computer system shown in FIG. [Figure 3] FIG. 3 is a flow chart of an exemplary embodiment of a computer animation process that includes performing transformations using the systems shown in FIGS. [Figure 4] FIG. 4 is a flowchart of an exemplary embodiment of a process for computer animation that includes executing an animation phase render loop using the system shown in FIGS. [Figure 5] FIG. 5 is a flowchart of an exemplary embodiment of a computer animation process that includes creating a deformable model using the system shown in FIGS. [Figure 6] FIG. 6 is a diagram illustrating assets created using the transformation engine system of FIGS. [Figure 7] FIG. 7 is a diagram showing the asset shown in FIG. 6, in which the animation of the asset is controlled by the operation sequence specified by the creator. [Figure 8] FIG. 8 is a diagram illustrating a partial character created using the transformation engine system of FIGS. [Figure 9] FIG. 9 is a diagram illustrating the partial character shown in FIG. 8, showing a first weight map associated with a first deformation channel. [Figure 10] FIG. 10 is a diagram illustrating the partial character shown in FIG. 9, showing a second weight map associated with a second deformation channel. [Figure 11] FIG. 11 is a diagram illustrating an asset created and edited using the transformation engine system shown in FIGS. 1 and 2, with multiple sequenceable transformation channels shown adjacent to the asset. [Figure 12] FIG. 12 illustrates the asset shown in FIG. 11 with one transformation channel adjusted to affect the corresponding graphical adjustment of the asset. [Figure 13]FIG. 13 illustrates the asset shown in FIGS. 11 and 12 with two transformation channels adjusted to affect several corresponding graphical adjustments of the asset. [Figure 14] FIG. 14 illustrates the asset shown in FIGS. 11-13, showing a deformation channel editor that can be used to adjust the animated weights of each deformation channel. [Figure 15] FIG. 15 is a diagram showing the assets shown in FIGS. 11 to 14, and in response to adjustment of a deformation channel, the shape correction associated with the adjusted deformation channel is automatically adjusted. [Figure 16] FIG. 16 is another diagram illustrating an asset 1100 in which, in response to adjustment of a deformation channel, the geometry correction associated with the adjusted deformation channel is automatically adjusted. [Figure 17] FIG. 17 shows a character created and edited using the deformation engine system of FIGS. 1 and 2, where the deformation path is visually adjusted using the deformation channel curves. [Figure 18A] FIG. 18A illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 18B] FIG. 18B illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 18C] FIG. 18C illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 18D] FIG. 18D illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 19A] FIG. 19A illustrates an additional exemplary embodiment of a transformable asset in its untransformed state and its corresponding transformation value. [Figure 19B] FIG. 19B illustrates an additional exemplary embodiment of a transformable asset in its untransformed state and its corresponding transformation value. [Figure 19C] FIG. 19C illustrates an additional exemplary embodiment of a transformable asset in its untransformed state and its corresponding transformation value. [Figure 19D] FIG. 19D illustrates an additional exemplary embodiment of a transformable asset in its untransformed state and its corresponding transformation value. [Figure 20A] FIG. 20A illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 20B] FIG. 20B illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 20C] FIG. 20C illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 20D] FIG. 20D illustrates additional exemplary embodiments of transformable assets and their corresponding transformation values. [Figure 21] FIG. 21 illustrates a further exemplary embodiment of a weight map. DETAILED DESCRIPTION OF THE INVENTION
[0016] Embodiments of the systems and methods described herein include a deformation engine system that a game creator, artist, or other user can use to create unique, lifelike, fast, and robust asset deformations in real time. In contrast to traditional skin-and-bone game engine systems, the deformation engine system described herein can accept (or facilitate the creation of) assets, such as characters or other objects, that have an outer mesh but do not necessarily have an internal framework, such as an articulated internal framework of "bones" and "joints."
[0017] Instead, the deformation engine system operates on the mesh, such as by adding one or more deformers to the mesh. As described herein, each deformer can include multiple deformer channels, and each deformer channel can serve to control the deformation of a unique aspect of the asset geometry. In at least some embodiments, the deformation engine system facilitates independent adjustment of each deformer and / or deformer channel, such as through the use of channel weights that can be easily controlled by a user to achieve a desired combination of asset deformations.
[0018] In many embodiments, in contrast to traditional skin-and-bone systems, individual transforms and / or transform channels are not transformed into one another. In other words, adjusting one transform channel does not require the user to return to its associated transform channel to make compensatory adjustments. Instead, each transform applied to an asset can change the asset's appearance independently of one or more other transforms also applied to the asset.
[0019] Additionally, for each transform or deformer channel selected and applied to an asset, the user can specify the order of operations, or execution order, at creation time. By adjusting the order of operations, the composite or overall transform applied to the asset can be varied almost infinitely, resulting in realistic and even cinematic-quality results. For example, performing a rotation transform before performing a slide transform can produce different results than performing the same slide transform before performing the rotate transform.
[0020] In addition to these features, in many embodiments, deformers can be associated with weight maps to control or combine deformations in portions of an asset mesh, such as portions of the asset mesh that would be affected by a given deformation in the real world. For example, a character deformation that widens a character's mouth affects deformations that would be applied to the character's cheeks in the real world. Thus, by applying weight maps that combine deformations in domains or regions of the mouth, cheeks, and / or other parts of the face, more lifelike deformations can be created in the combined portions of the asset mesh.
[0021] Additionally, in many embodiments, weight maps can be layered and / or animated to achieve more complex deformations, such as deformations that, when executed by the deformation engine system, produce more and / or different deformation graphics than the individual deformation components. These and various other advantages and deformation techniques are facilitated / enabled by the deformation engine system as described herein.
[0022] Accordingly, the modified engine system embodiments described herein provide various technical advantages and certain technical improvements, including, but not limited to, the following: (a) a. (a) Providing a deformation engine system that facilitates the creation of assets without using traditional skin-and-bone asset geometry, such as an internal asset framework that utilizes articulation bone and joint matrices to achieve surface deformation. (b) Provide a deformation engine system that facilitates receiving an operation order for each of multiple deformer channels (and / or deformers) so that a user can specify the order in which each deformer channel is executed when a simulation or game is executed. (c) Providing a deformation engine system that facilitates channel weighting and weight mapping relative to any of a plurality of deformer channels. (d) Providing a deformation engine system that facilitates layering of one or more weight maps to achieve beautiful, lifelike animations. (e) Providing a deformation engine that facilitates animating weight maps to simplify complex movements. (f) Providing a deformation engine that facilitates customized (user-defined) deformer manipulation in a manner that is easily and consistently translatable between engines, DCCs, and various hardware devices. (g) Providing a transformation engine system that facilitates real-time transformation of assets based on their distance from players and / or other participants during simulation or gameplay, for example, to reduce computation time spent on transforming assets that reside within a predetermined threshold distance from a player asset or player character. (h) Pre-optimizing image rendering operations before the game is executed by the processor to improve processing speed and reduce memory allocation requirements, for example, by not rendering portions of assets that go off-screen during a frame of gameplay for a given frame (e.g., because the off-screen portions of the assets do not need to be rendered or transformed). (i) Improve processing speed and memory allocation requirements by selectively caching portions of assets, for example, recycling transformation information for assets or portions of assets that have not been modified or moved (or have changed by less than a threshold amount) and that do not require a visual refresh between one frame and subsequent frames. (j) Detecting redundant or unused transformation channels and / or transformation instances, underused or ineffective transformation channels, unnecessary weight maps, and / or other pairing processes to reduce output file size prior to simulation and / or gameplay. (k) Save poses so that they can be quickly and easily applied to new asset geometry without having to recreate all of the new asset's rigging from scratch. This can, for example, significantly reduce the rigging time for a given asset from days to hours.
[0023] As used herein, and as explained in more detail below, the terms "model," "character," "object," "asset," "asset geometry," and the like refer to any geometric construct created as described herein as a representation of an object, such as any real-world object and / or imaginary object depicted in an animation, such as a video game or feature film animation.
[0024] As used herein, and as explained in more detail below, terms such as "mesh," "mesh structure," "topology," and the like refer to a geometric grid or framework that defines the exterior surface of a model or asset. The mesh structure includes multiple "spans," each of which can span to define at least a portion of the surface of the model or asset.
[0025] As used herein, and as described in more detail below, terms such as "deformer channel," "deformation channel," "channel," and the like, refer to any geometric parameter, any animation parameter, any movement parameter, or other attribute or parameter associated with a model or asset. For example, and as used herein, a deformation channel may be defined to associate parameters of an asset's head movement with movement of the asset's head or facial parts, such as, but not limited to, side-to-side head movement, front-to-back head movement, jaw movement, cheek movement, and the like.
[0026] As used herein, and as described in further detail below, terms such as “deformer channel weight,” “deformer channel weighting,” “channel weighting,” “weighting,” “deformer weighting,” and the like refer to one or more numerical transformations or deformation values associated with a particular deformer channel. In at least some embodiments, weighting can be used to control and / or modify the appearance of a respective channel, for example, to control the movement, shape, and / or other aspects of the channel. As used herein, adjusting channel weighting can apply visual and artistic changes to the shape of an asset, such as tilting the asset's head forward and / or backward and / or side to side, moving the asset's jaw, hollowing the asset's cheeks, and the like. Additionally, as described herein, deformation channels may be associated with one or more “weight maps.” As used herein, “weight map” refers to the degree to which a particular channel influences areas of the mesh structure surrounding the area of the mesh structure controlled by that particular channel. For example, a weight map for a “jaw movement” channel can specify the degree to which movement of the asset's jaw influences other areas of the asset's shape, such as the cheeks or forehead. The area or region influenced by the weight map is referred to as a "region," "domain," "domain of influence," or the like.
[0027] As used herein, and as described in more detail below, terms such as “deformer” and “deformer instance” refer to a particular combination of mathematical or numerical operations or a group or set of deformer channels, possibly including their respective weightings, all of which can be adjusted or tuned in real time during the artistic creation of an asset. Furthermore, as described herein, in some embodiments, a single deformer can be applied to a given asset to control many aspects of the asset's geometry and movement, possibly including all aspects thereof, thereby significantly simplifying the creation of the asset through a single deformer. As described herein, the process of applying one or more deformers to a mesh structure can, at least in part, represent a process referred to as “rigging,” and an asset or mesh structure can be “rigged” by associating (e.g., in storage) an asset or mesh structure with one or more deformers, deformer channels, weightings, weight maps, etc.
[0028] Additionally, in at least some embodiments, multiple deformation channels may be applied collectively to assets in one or more “layers.” Thus, as described herein and in more detail below, the term “layer” also refers to one or more deformation channels applied to an asset. In some cases, channels are said to be “attached” to an asset mesh. As described herein, “attaching” a deformation layer to a mesh refers to including deformer channels, including weighting or other channel parameters, in a file and / or file format that associates the channel parameters with the mesh. Furthermore, in some embodiments, one or more deformers (or deformation instances) may be applied collectively to assets in one or more layers, which may execute independently of each other at runtime and in a predefined (user-configured) order of operation, as described herein.
[0029] Thus, as described herein, and as explained in more detail below, the deformation engine system described herein is also referred to as an “order of operations” or “order of operations” deformation engine. Thus, the term “order of operations” is used, in at least some embodiments, to refer to the deformation engine’s ability to receive and execute an order of operations for multiple deformation channels and / or deformation instances, such that, for example, no deformation channel executes as a graphical transformation of any other deformation channel. Instead, in at least some embodiments, each deformation channel executes independently of all other deformation channels. In some embodiments, as described herein, the output of one deformation channel or deformation layer is used as an input to one or more other deformation channels or layers. In at least some embodiments, the independence and / or dependency of a deformation channel and / or layer on other deformation channels and / or layers may be an artist- or creator-provided and / or artist- or creator-selectable feature, allowing the artist or creator to select channel and / or layer dependencies as desired. As described herein, this operational sequence functionality facilitates a complete technical solution focused on creating feature film quality characters and deploying them to any platform, including but not limited to third party game engines such as UNREALENGINE, MODO, UNITY, MAYA, etc.
[0030] As described herein, and as described in more detail below, terms such as “deformation stack” or “stack” refer to the order of deformation channels and / or deformations provided in relation to the order of operation of the deformation engine. For example, a first deformer channel may be displayed at the top of the deformation stack, a second deformer channel may be displayed below the first deformer channel in the deformation stack, and a third deformer channel may be displayed below the second deformer channel. Such a stack may more generally be a directed acyclic graph (DAG), where the input of one deformer captures the output of another deformer. In at least some embodiments, the deformation channels may be executed by the deformation engine system according to an order specified by the stack, such as from top to bottom or from bottom to top. Additionally, in at least some embodiments, as described herein, the deformation stack may specify the order in which the output of one or more channels or layers feeds or is provided as input to one or more other channels or layers, e.g., to create a dependency tree. As described herein, in some embodiments, channel and / or layer dependencies are selectable by the author, e.g., in some cases channels and / or layers may include dependencies and in other cases may not have dependencies.
[0031] As described herein and in more detail below, terms like "rig" refer to a collection of deformers and / or deformer channels layered as desired by a game creator or artist and controlled by an operational order setting established by the artist during asset creation. For example, a rig may include multiple deformer channels adjusted to generate a "happy" asset expression. A rig may be applied in various ways to multiple assets or asset meshes, e.g., male asset meshes, female asset meshes, non-human asset meshes, etc., to impart a "happy" expression to the meshes. Similarly, a "sad" asset expression may be generated by adjusting the channels of the same rig. That is, a rig created for a mesh, or a group of topologically equivalent meshes, can easily generate various expressions of that mesh. For example, a rig, in a sense, captures the personality (expressive range) of the mesh.
[0032] As described herein, and as described in more detail below, terms such as "rigged asset" refer to an asset that includes one or more parameters added by a deformation engine system, such as, but not limited to, deformers, deformer channels, operation order information, layers and weightings, weight maps, and other parameters. Conversely, as described herein, terms such as "naked asset" refer to an asset that does not include parameters added by a deformation engine system.
[0033] As described herein, and in more detail below, terms like "pose" refer to a collection of deformer channels and channel weightings or channel values that are predefined (e.g., for use by a game creator or artist and / or by the artist themselves) for subsequent reuse or recycling. For example, example poses may include, but are not limited to, "happy" and "snarl," where the "happy" pose includes predefined channel values for creating a happy asset expression (e.g., a happy face), and the "snarl" pose includes predefined channels for creating an angry or unhappy asset expression. Thus, poses embody predefined or predefined "rigs" that can be quickly reused to impart various facial expressions and / or other geometry to blank assets.
[0034] Thus, as described herein, assets and / or meshes may be "attached" or "blank." As described herein, a "blank" asset or mesh may not be associated with or include a rig, pose, deformer, channel, etc. Similarly, an attached mesh may be associated with or include one or more rigs, poses, deformers, channels, etc.
[0035] 1 is a block diagram of an exemplary embodiment of a computer system 100 including a game engine system 102 and an order of operations (OOO) transformation engine system 104. In this exemplary embodiment, the computer system 100 includes a storage device 106, a display device 108, and at least one processor 110. As shown, the transformation engine system 104 is stored in the storage device 106 and executed by the processor 110. Similarly, the game engine system 102 is stored in the storage device 106 and executed by the processor 110.
[0036] In at least some embodiments, the transformation engine system 104 is configured to operate in parallel with or in conjunction with the game engine system 102. As described herein, the game engine system 102 may include various third-party skin-and-bone game engine systems or “digital content creation (DCC)” tools, such as, but not limited to, MODO, MAYA, UNITY, UNREAL, etc. Similarly, in this exemplary embodiment, the transformation engine system 104 is a transformation engine system manufactured by OZONE, Inc. As described herein, a transformation engine system 104, including an OZONE transformation engine system, may, in at least some embodiments, be an operational sequence transformation engine system capable of integrating and interoperating with various game engine systems 102, such as the conventional game engine systems 102 described herein.
[0037] Thus, in some embodiments, the transformation engine system 104 may be implemented as a software addition or extension to an existing third-party game engine system, as a plug-in, or otherwise. Additionally, in some embodiments, the game engine system 102 may be a proprietary game engine system that includes a version with the transformation engine system 104 built-in.
[0038] As a result, in some embodiments, the transformation engine system 104 can be implemented in conjunction with any suitable existing game engine system 102 to add the operational sequences and other functionality described herein to the existing system. In these embodiments, the transformation engine system 104 can serve as a replacement for at least some of the traditional skin-and-bone transformation programming operations provided by these traditional third-party systems. When the transformation engine system 104 is included in a proprietary game engine system 102, such as the OZONE game engine system, the skin-and-bone functionality may not be included at all.
[0039] In addition to these functions, computer system 100 may be configured to receive input from various physical controllers 112 or input rigs (also known as "waldo") and / or one or more other commercially available devices, such as, but not limited to, game controllers. In these embodiments, waldo is used to receive motion control input from an artist or creator, which is converted by deformation engine system 104 into corresponding deformation channels and other character animation properties, as described herein.
[0040] Additionally, the computer system 100 may be configured to receive user input from various cameras and / or other motion capture and / or motion tracking systems 114 (such as, but not limited to, motion capture sensors worn by a human actor), and the data output from the motion tracking systems 114 is converted by the deformation engine system 104 into corresponding deformation channels and other character animation properties.
[0041] FIG. 2 is a block diagram of one embodiment of a computer system 100 including a game engine system 102 and a transformation engine system 104 (as shown in FIG. 1). As described herein, the game engine system 102 may include a software creation environment including one or more graphical user interfaces (“GUIs”) that can be used to create a video game. Thus, generally, the game engine system 102 may include various tools that enable a game creator to create a video game. In at least some embodiments, as described herein, the game engine system 102 includes a basic simulation toolset and / or framework and is responsible for basic user input and audio / visual output processes. Meanwhile, the transformation engine system 104 facilitates object and character motion and other detailed transformations and / or transformations as a plug-in or other software extension.
[0042] In at least some embodiments, game engine system 102 may include conventional deformation functionality, such as skin-and-bone functionality, as described above. In some cases, game engine system 102 has a limited number of deformation options (e.g., typically industry standard). As a result, object deformations created by game engine system 102 may be significantly less fidelity than those achieved in combination with deformation engine system 104, resulting in, for example, clunky, unnatural, or unrealistic character or object surface deformations and / or character movements.
[0043] For example, when not combined with the deformation engine system 104, the game engine system 102 is limited to creating or adjusting only certain parts of a character's lips in response to creator input to create a smile on the character, while not deforming or only slightly deforming other parts of the character's face.
[0044] To further explain, as described herein, in a stand-alone system, traditional skin-and-bone systems, such as game engine system 102, inhibit the creation of realistic characters because the movement and deformation of skin near the intersections of multiple bones in a character architecture are affected by each bone. To accommodate movement at these bone intersections, a matrix or hierarchy of bone relationships must generally be created, with each bone in the bone interconnection matrix affecting the movement of every other bone. As a result, the movement and deformation properties associated with a given bone in a character's or object's skeleton affect the movement and deformation of the other bones linked to it.
[0045] From an algorithmic perspective, this results in a chain of transformations, so if a game creator wants to change the appearance of an object near a given bone, the game creator must consider each of these chains of transformations. This often results in a lengthy and laborious design process when creating complex characters, resulting in issues such as low fidelity and awkward appearance even after careful attention to character design. In at least one embodiment, the game engine system 102 offers limited options as a standalone software and creation tool: basic linear transformations such as morph transformations, skin weight transformations, and joint transformations. However, as described in further detail herein, these and other shortcomings are ameliorated by combining it with the deformation engine system 104.
[0046] In addition to the game engine system 102, in an exemplary embodiment, the computer system 100 further includes a 3D modeling and animation tool 202 (or “animation tool”). The animation tool 202 includes various suitable 3D computer graphics application tools, such as digital content creation (DCC) software tools, used to create assets for 3D applications (e.g., video games, animated films, visual effects, etc.). In some embodiments, a user defines a virtual workspace (e.g., a scene) for creating and editing media. The animation tool 202, in various embodiments, may be MAYA, MODO, a CAD / CAM tool, or other conventional game engine system described herein. In some embodiments, specific geometry and / or textures for assets are first prepared in the animation tool 202. The resulting base model or base asset is then exported from the animation tool 202 to the game engine system 102 and / or the transformation engine system 104, such as in the form of an input file.
[0047] Thus, in some embodiments, animation tool 202 includes at least some traditional, i.e., skin-and-bone, deformation functionality. For example, animation tool 202 has a limited number of deformation options. As a result, the deformations created by animation tool 202 are low-fidelity. Low-fidelity deformations result in unnatural (or unrealistic) character movement. In some embodiments, animation tool 202's limited deformation options are linear transformations, such as morph deformations, skin-weight deformations, and joint deformations.
[0048] Similarly, as described herein, in some embodiments, the limited transformation options of the animation tool 202 are limiting. For example, increasing the fidelity of a first visual effect (e.g., an improved realistic smile) based on the use of a first transformation option (e.g., a morph transformation) may decrease the fidelity of a second visual effect (e.g., a reduced realistic squint) based on the use of a second transformation option.
[0049] In some embodiments, animation tools 202 may include 3D printing, robotics, or animatronics design tools that are primarily focused on designing and analyzing the shape and movement of static or dynamic physical (printed or assembled) characters.
[0050] In some embodiments, physical controllers 112 or input rigs (also called "waldo"), and / or other commercially available devices such as game controllers, function as input devices that provide input data to the deformation engine system 104, the animation tools 202, the creation tools 204, and / or any combination thereof. These input devices can be used to pose and articulate assets or asset deformations in real time and / or to save snapshots or records of asset deformation states (and corresponding channel values) for later use.
[0051] In some embodiments, the motion tracking system 114 or other face tracking system serves as inputs to the deformation engine system 104, the animation tools 202, the creation tools 204, and / or combinations thereof. These inputs may map, for example, directly to joint-like channels or joint adapters provided by the deformation engine system 104, to pose mixing logic (e.g., as shown with reference to FIG. 4), or directly to deformation rig channels, allowing new deformation results to be created in real time or to create snapshots or recordings of the channels for later use.
[0052] Computer system 100 may include various software applications (e.g., software for creation tool 204) that facilitate the modeling and animation of assets in animation tool 202. In some embodiments, computer system 100 includes creation tool 204 for use with animation tool 202. For example, creation tool 204 may be a creation tool and / or an export tool. In various embodiments, creation tool 204 may be a plug-in or stand-alone digital content creation ("DCC") application. In at least one embodiment, creation tool 204 includes one or more specialized tools for creating transformation or animation data for assets.
[0053] Thus, as described herein, deformation engine system 104 is communicatively coupled to game engine system 102 and / or animation tool 202. In at least one embodiment, game engine system 102 includes a plug-in (not shown) communicatively coupled to deformation engine system 104 that enables data transmission between game engine system 102 and deformation engine system 104. Similarly, in at least some embodiments, deformation engine system 104 functions as a plug-in or software extension to game engine system 102, adding various functionality to the game engine system, such as the ability to create high-fidelity deformations and animations. As described herein, game engine system 102 may include a conventional, third-party, skin-and-bone game engine system. Similarly, animation tool 202 includes or functions as a plug-in (e.g., creation tool 204) communicatively coupled to deformation engine system 104 that enables data transmission between deformation engine system 104 and animation tool 202. Deformation engine system 104 may be or include a middleware application. In some embodiments, the transformation engine system 104 further includes one or more application programming interfaces (“APIs”) for creating, for example, customized transformations, transformation channels, and the like.
[0054] In various embodiments, the deformation engine system 104 includes functionality for providing high-fidelity deformation of assets (as opposed to the low-fidelity deformation provided by traditional skin-and-bone deformation tools in the game engine system 102 and / or animation tools 202). As described herein, high-fidelity deformation results in improved, natural (or realistic) movement of characters. For example, using the deformation engine system 104, many parts of a character's lips can be deformed to represent a smile in response to inputs to create a smile on the character. In addition, other parts of the face can be deformed to represent a realistic smile, for example, by creating dimples in the cheeks, raising the corners of the mouth, or lowering the corners of the eyes. As described in further detail herein, such high-fidelity deformation can be achieved using an operation-order deformation process, layers of deformation, independently adjustable deformation channels, weight mapping, animated weight mapping, and / or various other unique tools, systems, and processes available using the deformation engine system 104.
[0055] In various embodiments, the deformation engine system 104 receives an input file, such as an input file containing asset geometry, from the animation tool 202 and / or the game engine system 102, which includes information about assets, such as asset geometry and meshes. In at least some embodiments, the asset geometry defined by the input file does not include deformation information. As a result, the asset geometry received by the deformation engine system 104 is referred to herein as “naked geometry” because it does not include deformation information when received by the deformation engine system 104. In some embodiments, the asset geometry includes one or more pre-defined or pre-existing deformations, e.g., previously applied using the deformation engine system 104 and / or a conventional game engine system 102. In response to receiving the input file, the deformation engine system 104 can be implemented or used to apply one or more deformations to an asset, such as creating one or more high-fidelity deformations using the deformation tools of the deformation engine system 104 (e.g., as opposed to an asset that is limited to deformations implemented only using the limited deformation tools of the animation tool 202 or the game engine system 102).
[0056] Additionally, in at least some embodiments, the input file may include a collection of triangles and / or n-gons to define the asset geometry. In some embodiments, the input file may include one or more texture coordinates on the asset geometry, a directed graph or list ("DAG") of author-selected deformers such as a deformation stack as described herein, a list or graph of deformation types, portable code for customer deformations, and / or a weight map that describes how deformers in the stack, list, or DAG are bound or associated with sections of the asset geometry. In some embodiments, the input file may include one or more weight maps or weightings (e.g., for each deformer in the DAG) that bind a subset or portion of the asset geometry to zero or more deformers. In some embodiments, the input file includes poses (e.g., restorable states of channel values) and / or clips (e.g., animated poses), as described herein. In some embodiments, the input file includes instructions in the form of a state machine and / or an abstract syntax tree ("AST") that describe zero or more customized deformer functions. In some embodiments, the input file includes cached values of the subdivision and / or surface solution, and / or metadata such as units of measure, world orientation, and / or XYZ handedness parameters or values. Additionally, in some embodiments, the input file includes the aforementioned and / or other parameters, variables, values, definitions, etc., as described elsewhere herein. In various embodiments, the input file format may be encoded in a portable format that can be loaded and / or loaded onto any DCC described herein and / or any suitable computing platform (e.g., mobile, console, desktop, cloud, etc.), as described in additional detail herein. In other embodiments, the transformation engine system 104 allows users to extend the basic functionality of the transformation engine system 104 through a plug-in architecture.Such plug-ins may provide new types of deformation operators. During operation, when the deformation engine system 104 detects any plug-ins, it notifies the animation tool 202 and / or the authoring tool 204 (if in use) of the available plug-ins and presents them to the user of the animation tool 202 and / or the authoring tool 204, allowing them to be used and configured. Furthermore, these plug-ins may be included in the rig file format 170.
[0057] In some embodiments, the transformation engine system 104 is a real-time deformation and animation engine. That is, the transformation engine system 104 creates asset deformations in real time. In some embodiments, the transformation engine system 104 includes various non-linear transformation tools for creating high-fidelity deformations of assets. In various embodiments, the deformation options provided by the transformation engine system 104 are limitless. That is, as described elsewhere herein, multiple deformation operations can be utilized to create character deformations, where the individual deformation operations do not affect each other. Furthermore, as described elsewhere herein, in various embodiments, the transformation engine system 104 is a manipulation sequence deformation engine. Generally, as described elsewhere herein, a manipulation sequence deformation includes a deformation pattern of individual deformation operations associated with the movement and / or deformation of an asset. For example, a manipulation sequence deformation performed by the transformation engine system 104 can create high-fidelity deformations by sequentially performing different deformation operations.
[0058] In various embodiments, the deformation engine system 104 may be implemented natively within the game engine system 102 and / or animation tool 202. That is, asset deformations may be performed in real time by the deformation engine system 104 rather than by skin-and-bone deformation tools in conventional game engine system 102 or animation tool 202. In this manner, deformers in the deformation engine system 104 may be translated natively into the game engine system 102 and / or animation tool 202.
[0059] The computer system 100 may include an end-user application 206 (also referred to herein as “application 206”). In various embodiments, the end-user application 206 receives a build package created by the game engine system 102. The build package (e.g., an end-user application bundle) contains the final content for release of a particular application or experience. In one embodiment, the build package includes transformed assets created by the transformation engine system 104. In another embodiment, the build package includes a version of the transformation engine runtime along with transformation-enabled forms of the assets, and the content of the experience includes models that are interactively transformed in real time (e.g., according to user input, artificial intelligence, etc.). In at least some embodiments, the transformation engine system 104 and its associated build packages and / or file formats are both designed to run on a wide range of devices, including, for example, mobile devices, game consoles, desktop PCs, cloud-based computing devices, etc. As described herein, at least one technical improvement related to these capabilities is the ability to deploy digital experiences across hardware systems with a variety of capabilities, ranging from portable, low-energy devices to high-performance game consoles, desktops, and cloud-rendering systems.
[0060] In various embodiments, animation projects (e.g., video games) are packaged into end-user application bundles before distribution to users, ensuring that the necessary code and content is up to date and runs properly on the desired target platform.
[0061] The computer system 100 further includes one or more viewers, such as a viewer 208. The viewer 208, in various embodiments, is configured to open, modify, and play files created by the transformation engine system 104. The viewer 208 may run in a web browser, a mobile operating system, a desktop operating system, etc. The viewer 208 may present some or all of the inputs and outputs of the deformation channels of the deformable model for user inspection and modification, and / or modification of other values specific to the transformation engine.
[0062] 3 illustrates a process 300 for layered operational sequence transformations according to at least one embodiment. First, in step 301, static geometry for a 3D animated asset, such as a 3D character, is created. For example, a user creates an asset using animation tools 202. The asset includes geometry, textures, and the like. In at least one embodiment, the asset created using animation tools 202 does not include one or more of rigging, deformations, and animations. Instead, as described above, the asset is "naked," including a mesh but with no transformations applied.
[0063] In at least one embodiment, in step 302, the deformation engine system 104 (e.g., in conjunction with the animation tools 202 and / or the creation tools 204, as the case may be) applies a pre-built rig template to the imported asset geometry. Generally, a pre-built rig is rigging that includes one or more deformations that can be associated with various assets. For example, rigging is created for a first asset (e.g., a sea creature). This rigging can then be used for a second asset (e.g., a humanoid). Thus, in at least some embodiments, a naked asset is quickly fitted or rigged to include a pre-defined deformation that was previously created for another asset, whether the naked asset is the same or different from the naked asset. As described in further detail herein, this facilitates the rapid addition of multiple assets to a game being built, for example, by applying existing rigging to multiple naked assets.
[0064] As described herein, in at least some embodiments, customized (e.g., user-defined) deformers may be configured by a user and stored in a file format (e.g., file format 316) associated with the deformation engine system 104. Within the file format 316, the deformers may be defined using an abstract syntax tree (AST) and / or a data flow graph, where primitive operations are combined to define the behavior of the deformers. Alternatively, or in addition, in at least some embodiments, an author may directly provide more complex custom deformers 205 to the deformation engine system 104 via dynamic linkage. Once defined, the custom deformers 205 may utilize all of the functionality provided by the standard deformers built into the deformation engine system 104, as described herein.
[0065] Meanwhile, in at least some embodiments, step 303 involves applying a non-pre-built rig template to the imported geometry using the deformation engine system 104 (e.g., possibly in conjunction with animation tools 202 and / or creation tools 204). For example, a game creator, animator, or modeler can create a rig that includes one or more deformers for a particular asset by adding one or more deformers to the asset.
[0066] In step 304, as described in further detail herein, the deformation engine system 104 (e.g., possibly in conjunction with the animation tool 202 and / or the authoring tool 204) may be used to connect deformation operators in the deformation stacks of the operational order deformation stack to one or more weights or weight maps. In various embodiments, a weight map may be connected to two or more deformation operators.
[0067] In step 305, the deformation engine system 104 (e.g., in conjunction with, e.g., the animation tools 202 and / or the creation tools 204, as the case may be) bundles the asset parameters, including various deformers (e.g., deformers selected and / or adjusted by a user, etc.), into an output file (e.g., output file 316). For example, the deformation engine system 104 may bundle geometry, deformation layers (e.g., layers that affect the geometry, UV, and / or time domain), weight maps, animations, rigs, suggested or user-selected input channels, suggested or user-selected output channels, etc. In various embodiments, the output file 316 is sent to the game engine system 102 (and / or a simulation engine) and executed by the game engine system 102, e.g., running on a personal computer or game console as an instance of the game engine system 102 configured for game play by a player.
[0068] In at least one embodiment, the output file 316 corresponds to a transformable character ready for use in a video game or other visual media. In various embodiments, the process 300 includes creating multiple output files 316, one for each transformable character in the video game. For example, a first file 316 corresponds to a first transformable character, and a second file 316 corresponds to a second transformable character.
[0069] In step 306, the deformation engine system 104 (e.g., possibly in conjunction with the animation tool 202 and / or the creation tool 204) creates a "cropped" output file 307. That is, the cropped output file 307 may be created to include only a portion of the data included in file 316. In one embodiment, the cropped output file 307 includes at least one of a deformation rig and a set of weight maps.
[0070] The trimmed output file 307 is stored in a library 308 containing multiple deformation rig templates. The library 308 may contain a collection of rigs that can be accessed for future deformable models. In at least one embodiment, the rigs are created by a user. The collection of rigs is searchable by rig characteristics such as number of operators / layers, computational complexity, character type (e.g., biped, facial, etc.), level of detail (LOD) support, etc. In various embodiments, the deformation rigs created in step 303 are stored in the library 308.
[0071] In step 309, the output file 316 is loaded by the game engine system 102, which includes the transformation engine system 104. In at least one embodiment, the geometry of the file 316 is converted to an optimal format. In various embodiments, step 309 corresponds to the launching of a video game by the game engine system 102, which includes the transformation engine system 104. That is, a play session of the video game begins in step 309.
[0072] In step 310, the information in file 316 is bound or associated with one or more game logic variables so that other game logic can set transformation parameters. In various embodiments, the character and rigging are connected to the controls of a host application (e.g., the game engine system 102 and / or animation tool 202).
[0073] Steps 311-315 relate to the render loop executed by the game engine system 102 and / or the transformation engine system 104. For example, while a video game is running, a user may transform the face of a character in the video game into a smile by inputting, for example, using a handheld controller. The transformation of the character's face into a smile is performed by the render loop. In particular, the transformation of the character's face to achieve a smile is performed in the render loop. As a result, the transformations created in the render loop are high-fidelity transformations in real time while the video game is running. In other words, including the transformation engine system 104 in a gameplay system (e.g., a console computing device) facilitates the application of transformations provided during asset creation, as described herein.
[0074] Thus, in step 311, the game engine system 102 performs scripting of input values. For example, during the processing of each frame by the game engine system 102, new values of game logic variables or animation clip values are input to the transformation engine system 104.
[0075] In step 312, the transformation engine system 104 determines the level of detail (LOD). Additionally, the transformation engine system 104 executes one or more sub-graphs. In one embodiment, the execution of one or more sub-graphs is based on heuristics such as the expected size of the model on the screen and quality targets defined by the game engine system 102 (or simulation engine).
[0076] In one example, during a multi-participant game in a game view, a first participant is a first distance (e.g., 2 feet) from a player and / or a second participant, and the first participant is a second distance (e.g., 50 feet) from a player and / or a third participant, the second distance being greater than the first distance.
[0077] The deformation engine system 104 determines the resulting first distance and second distance. Rather than deforming both the second participant and the third participant with high fidelity, the deformation engine system 104 deforms the second participant with high fidelity but the (more distant) third participant with a lower fidelity than the high fidelity associated with the second participant. As a result, at least one technical improvement associated with this real-time deformation of assets based on distance from players and / or other participants is that a smaller amount of computational time is spent on deformations of at least the third participant (compared to the second participant). Stated differently, characters farther away from a particular player or character do not need to be deformed or detailed to the same degree, since their details are not visible. In one embodiment, the deformation engine system 104 deforms a first set of deformation layers for the second participant with a higher LOD and a second set of deformation layers (smaller than the first set of deformation layers) for the third participant with a lower LOD.
[0078] In step 313, the deformation engine system 104 performs / calculates the character's deformation. In one embodiment, the deformation engine system 104 updates the internal state of the geometry deformation, such as vertex positions, UVs, or mapping coordinates. For example, a character's face may be transformed from a neutral mouth expression to a smiling mouth. If the user or artist provided one or more custom deformation operators during asset creation or transformation, these operations are performed during step 313, if necessary and possible.
[0079] In various embodiments, the transformations performed by the transformation engine system 104 include mathematical or numerical operations such as, but not limited to, move, rotate, scale, curve; slide, curve; rotate, curve; scale, curve; warp, morph, single axis bend, slide on surface, relax, wrap, lattice, spherify, item influence deformer, multi-axis bend, multi-axis multi-bend, constraints: position, constraint; rotation, constraint; scale, constraint; target, constraint; projection onto surface; etc. In various embodiments, a user can define a pose for a character (e.g., a smile) that is a combination of one or more transformations.
[0080] In step 314, the deformation engine system 104 pre-optimizes image rendering. In one embodiment, the deformation engine system 104 prepares the deformed geometry for uploading to the GPU and / or CPU. Whether in the GPU or the CPU, the deformation engine system 104 identifies which geometry buffers and caches (or portions thereof) to update. In at least one embodiment, the deformation engine system 104 manages a pre-allocated vertex buffer sufficient to contain the results of the geometry subdivision. In one embodiment, the deformation engine system 104 manages or provides to the game engine system 102 or DCC a GPU program for on-GPU geometry creation or on-GPU deformers. In one embodiment, it is determined that at least a portion of an object in a video game is off-screen. Various heuristics and algorithms are used to update the geometry metadata provided to the game engine, particularly when the object or asset is off-screen. As a result, the GPU or CPU does not execute geometry related to portions of the object or asset that are not displayed on-screen. Therefore, at least one technical improvement associated with pre-optimization includes reduced processing time and reduced memory requirements. For example, by determining during gameplay that some of the assets are off-screen, the off-screen portions of the assets do not need to be rendered or transformed, speeding up processing and reducing memory requirements.
[0081] In step 315, the game engine system 102 performs image rendering based on the transformations performed by the transformation engine system 104. In one embodiment, after updating the geometry of the asset (e.g., on the GPU), the game engine system 102 finishes the frame with a rasterization process to create the final image.
[0082] FIG. 4 illustrates an example process 400 for an animation phase render loop, such as during an animation phase that occurs during gameplay, according to at least one embodiment. In various embodiments, steps 401-407 relate to input value scripting, such as step 311 of FIG. 3. In step 401, the game engine system 102 updates characters / objects. The characters / objects may be updated by artificial intelligence (AI) or user control. For example, a character or asset moves within a game environment in response to user input (e.g., a user selecting a button on a game controller).
[0083] In step 402, the game engine system 102 stores script output values. For example, in one embodiment, preliminary results of scripting / AI and user input are provided. A subset of the preliminary results may relate to asset transformations and animations.
[0084] In step 404, the game engine system 102 stores inverse kinematics (IK) constraint values, as will be understood by those skilled in the art. In one embodiment, physical constraints from the game environment or game world and / or other spatial objectives (e.g., reach objectives) are calculated. In at least one embodiment, step 404 is performed in combination with step 403. In at least one embodiment, step 404 may be optional based on the goals of the author or artist. For example, the IK functionality of the game engine system 102 may be on or off. Thus, when the game engine system 102 is off, the deformation engine system 104 remains functional with other inputs. In other words, in at least some embodiments, the deformation engine system 104 can function in place of the game engine system 102 to facilitate gameplay without the assistance of the game engine system 102 and / or without the assistance of at least some functionality, such as IK functionality, typically provided by the game engine system 102.
[0085] In step 405, the game engine system 102 performs physics and environmental updates. In at least one embodiment, the physics objects or assets in the scene are updated, providing new data about the shape of the game environment or world around the animated deformable objects or assets. In at least one embodiment, step 405 is performed in combination with step 401.
[0086] In step 406, the game engine system 102 receives camera updates based on the movement of the player's character within the game environment or controlled by the player to move within the game environment. In one embodiment, the camera updates include camera position, view frustum, occlusion, ray tracing settings, etc.
[0087] In step 407, the deformation engine system 104 determines the amount of influence associated with the deformable model or asset to select the optimal set of deformation layers to enable or disable, optimizing for the visual quality goals and available CPU / GPU budget determined by the simulation creator and / or game engine system 102. For example, the size of a given deformable feature (e.g., a smile) on a display device (e.g., display device 108) may be determined depending on the determined camera frustum size. In at least one embodiment, the deformation engine system 104 determines the deformers and influences (e.g., reflections, color bleeding, etc.) required to deform the deformable object or asset. For example, the deformation engine system 104 may use camera information associated with the deformable object or asset to make decisions regarding various deformers that need to be applied during gameplay.
[0088] In step 403 (e.g., upon completion of one or more of steps 401-407), the game engine system 102 synchronizes input values. In one embodiment, values used to modify a deformable model or asset are sent to the transformation engine system 104. These values include the character's gaze direction, the position of objects attached to the character, their relative positions, the shape of the ground beneath the character, etc. Upon receiving these values, the transformation engine system 104 applies one or more transformations to the asset, such as transforming a portion of the asset's geometry depending on the asset's gaze direction, etc.
[0089] In some embodiments, an asset (e.g., an object, character, actor, etc.) has a dependency relationship with another asset (e.g., another object, character, actor, etc.). To account for the dependency, at least some embodiments resynchronize the coordinate system maps of one or both assets to ensure that these generally independently moving assets have the appropriate dependency values updated between them before performing a transformation. For example, transforming the arm of a first asset depends on knowing the result of transforming the arm of a second asset, and both assets may be arbitrarily far from each other in world space.
[0090] In some embodiments, the deformation rig emits or provides zero or more target points (also called control points and / or interest points), such as the top of a character's head, the tip of a character's right index finger, or the bottom of a character's tie, to name a few. In other embodiments, these target points also include orientation, frame, normal, tangent, and / or other direction vectors that are transformed corresponding to the deformed character's surface. This information can be queried by a rendering engine included in game engine system 102 and / or deformation engine system 104 and used in other scripting or physical activities in the current and / or subsequent iterations of the loop.
[0091] Steps 408 and 409, in at least one embodiment, relate to performing transformations, such as step 313 described above. In step 408, the transformation engine system 104 performs selective cache invalidation and / or layer enabling / invalidation (e.g., according to the results of step 407). In at least one embodiment, individual transformations are enabled / disabled based on input value synchronization (step 403) and updating input values if they have changed.
[0092] In at least one embodiment, selective caching or selective caching is performed. That is, previous work on a deformable object or asset can be used for the current transformation of the deformable object or asset. For example, if a smile transformation does not change between a first frame and a second frame, calculation of the smile transformation can be skipped for the second frame because it has already been calculated for the first frame. At least one technical improvement related to selective caching or caching is that improved processor speed and / or reduced memory requirements can be achieved by reusing transformation information for assets that have not changed or moved and / or assets or portions thereof that do not require a visual refresh in subsequent frames.
[0093] In step 409, execution of the data graph begins. In at least one embodiment, the transformation engine system 104 can determine that the system (e.g., data dependencies) is ready for execution by the transformation engine system 104 to begin.
[0094] Steps 410-413 relate to node task queuing and processing (e.g., within a CPU / GPU loop). In at least one embodiment, these steps can allocate parallelizable deformation calculations to multiple independent threads and / or multiple independent CPUs / GPUs. In at least one embodiment, task queuing can cross-compile, recompile, or dynamically link to deformer calculation routines optimized for the CPU / GPU architecture to enable the same asset performance, regardless of device type, in the most time-efficient manner for the device type present. In at least one embodiment, steps 410-413 correspond to step 313, as described above.
[0095] Thus, in step 410, the transformation engine system 104 may identify invalid / uncacheable dependent data. For example, the transformation engine system 104 may determine what output data is required by the game engine system 102, in response to player input for controlling assets during game play, etc.
[0096] In step 411, the transformation engine system 104 may queue the execution of invalid / uncached dependent data nodes. In at least one embodiment, the transformation engine system 104 builds an ordered task list of transformable objects or assets to execute, which allows it to determine the minimum amount of work to perform to achieve the desired result, given the information gathered or configured in previous steps.
[0097] In step 412, the transformation engine system 104 executes operators, such as transformation operators and transformation channels, on the upstream data of invalid / uncached nodes (if ready). In one embodiment, the operators complete tasks that modify the input data by either (1) creating new output data or (2) modifying the input data in-place.
[0098] In step 413, the transformation engine system 104 stores the node manipulation output data in-place or in-cache. In one embodiment, the calculated data is either (1) stored over the original data or (2) set as new output data. An execution system, such as the game engine system 102 and / or the transformation engine system 104, is then notified that the work is complete. If the user or artist provided one or more custom transformation operators, these operations are performed in step 412 if necessary and possible.
[0099] Steps 414 and 415 relate to pre-optimization of image rendering, such as at step 314 as described above.
[0100] In step 414, the deformation engine system 104 performs selective geometry division or subdivision. In at least one embodiment, a subset of vertex positions of the renderable, subdivided mesh is selectively calculated and updated to focus the subdivision or subdivision updates where visual fidelity is most needed for the current iteration of the animation or rendering loop. The calculations are based on the portion of data (e.g., mesh data) that has changed during the processing step. Furthermore, reusing work from previous frames can reduce computational costs. As a result, at least one technical improvement, such as increased processing speed and / or reduced memory requirements, is achieved, as described herein.
[0101] In at least some conventional systems, deforming a model or asset requires moving a large number of points on the mesh of the model or asset, resulting in high computational costs. Therefore, in exemplary embodiments, it is desirable to move only a minimal number of points to maintain high fidelity. In at least one embodiment, low-resolution geometry is used as input to perform the deformation in conjunction with step 414, which uses a triangulation algorithm to convert the deformed geometry state back into a high-resolution geometry estimate. As a result, a high-fidelity deformation of the asset can be created using a smaller number of points.
[0102] In step 415, the deformation engine system 104 creates or recreates selective ray tracing structures. In at least one embodiment, a subset of the ray tracing acceleration structures is updated. The subset is based on the portions of data (e.g., mesh data) that were modified in the processing step, the degree to which they moved relative to the bounding volume tolerance of the ray tracing acceleration structures (set by the deformation engine), and the degree to which the subdivision results are required for the particular ray tracing effect required by the game engine system 102 or DCC; for example, a low-fidelity ray tracing acceleration structure may be sufficient (and fast to compute) for the requirements of some ray tracing effects. The update can be none, some, all, or an approximate (fast) subset of data for the ray tracing acceleration structures.
[0103] Step 416, in some embodiments, corresponds to image rendering, such as step 315 described herein. In step 416, the game engine system 102 performs rasterization and / or ray tracing of deformed geometry. In at least one embodiment, once the geometry of the deformable model or asset is updated on the GPU (and / or CPU), the game engine system 102 finishes the rasterization process for the frame and creates the final image. In at least one embodiment, step 416 corresponds to output being displayed in the end-user application 206.
[0104] Step 417 corresponds to updating physical properties. In various embodiments, step 417 is the same as or similar to step 405. In at least one embodiment, the animated object or asset corresponds to a physical object or asset (e.g., for purposes of physics simulation). This step analyzes the resulting deformations. Additionally, based on changes in physical properties compared to the last frame and other factors, deformation engine system 104 performs optimized updates to collision shapes and other physical properties as required by deformation engine system 104. Other factors may include desired physical fidelity, consistency, importance (e.g., size on screen), etc.
[0105] 5 shows an example of a process 500 for creating a deformable asset or model. In at least some embodiments, process 500 is the same as or similar to the creation of a deformable model phase in process 200, for example, as described herein. Furthermore, as described herein, the creation of a deformable asset or model, including the application of one or more deformers to the asset or model, is performed using deformation engine system 104.
[0106] In step 510, the deformation engine system 104 (e.g., in conjunction with the animation tools 202 and / or the creation tools 204, as the case may be) imports a base model or base asset, such as naked asset geometry, as described herein. The base model includes geometry, textures, and possibly other details. However, as described herein, the base model or base asset does not have any deformers applied or included upon import. Thus, the base model or base asset is imported into the deformation engine system 104 for rigging, deformation, animating, etc., as described herein.
[0107] Thus, in at least some embodiments, a pre-built deformation rig is applied to the imported geometry in step 501. In some embodiments, in step 503, a new deformation rig, including deformations, deformation channels, etc., as described herein, may be created from scratch or added to or reused from an existing deformation template (e.g., an existing template applied to another asset, etc.).
[0108] In various embodiments, one or more outputs of steps 501 and / or 503 are imported into transformation engine system 104. As described herein, in various embodiments, transformation engine system 104 may include specialized tools for creating transformation and animation data, such as specialized tools for creating custom transformations (e.g., as described with reference to FIGS. 6-21 ).
[0109] In step 508, a weight map is created and assigned to the asset or portion of the asset with weight values defined for the geometry, as described herein. In one embodiment, an artist can apply weights to various portions of an asset, such as a character, for example, above / near the lips of a character or other asset locations. Weight maps may or may not overlap each other (e.g., one or more layers). In one embodiment, an artist can attach additional semantics to a map, for example, whether the map or operator is for "chin up / down" movement or "eye left / right" movement. This information can be used later when exporting a description of the behavioral requirements to create a physical version of the model.
[0110] Additionally, to further illustrate, you may want your character to have a smile or another facial expression. You can have different deformation layers on your character (for example, using non-linear deformation operators and deformation channels). Depending on the user input to create a smile on the model or asset, you determine which subset of the model should be affected by the non-linear deformation operator. The different deformation layers (or non-linear deformation operators) may include a jaw open to the right, a jaw open to the left, a part of the smile on the right side of the lips, a part of the smile on the left side of the lips, a part of the smile in the center of the lips, etc.
[0111] Step 509 creates an author-corrective shape. In one embodiment, corrective shapes (e.g., user-driven vertex shaping) are created or created to augment and complement the final deformed shape. Corrective shapes can be an optional type of deformation created to allow for shape modification for final touches and nuances. The corrective shapes themselves are applied gradually within the rig, and their strength can be set to depend on other channel values within the rig. For example, a corrective shape for a forehead wrinkle can be set to appear more strongly when the brow channel value is high and to be virtually invisible when the brow channel value is low.
[0112] In step 510, rig fitting is performed. For example, a pre-built rig template or a custom-created rig can be fitted to the asset geometry. In addition, weight maps may be created and attached to the asset geometry. Additional specific types of deformers that use control points or control lines can adjust the points or lines at this point (see, for example, Figure 17).
[0113] Step 511 performs LOD, user channel, and / or other metadata tagging. In at least one embodiment, a user, such as an artist, identifies layers in a deformation rig and associates them with one or more LOD groups or LOD importance levels. In various embodiments, one or more outputs of steps 508, 509, 510, and / or 511 are provided to or facilitated by the deformation engine system 104.
[0114] Step 512 exports the deformation model data and animation data to, for example, an output file 316, as described herein. For example, the deformation engine system 104 (e.g., in conjunction with the animation tools 202 and / or creation tools 204, as the case may be) bundles asset geometry, deformation layers (e.g., layers that affect geometry, UV and / or time domain, and other parameters), weight maps, animations, rigs, suggested or user-selected input channels, suggested or user-selected output channels, etc. In various embodiments, the output file 316 is sent to the game engine system 102 (or simulation engine) and is ready to be loaded and executed by the game engine system 102 with the aid of the deformation engine system 104, as described herein.
[0115] In step 513, a user or artist creates an animation clip, for example, using the deformation engine system 104 (e.g., possibly in conjunction with the animation tools 202 and / or the creation tools 204) to create an animation. In various embodiments, the geometry is bound to the rigging, which is then bundled into one or more files (e.g., output files 316, pose files, etc.).
[0116] In some embodiments, static poses are created by a user or artist with arbitrary human-readable names. These poses are then bundled into a saved output file 316 and / or into separate files, for example, for combining and later retrieving the poses. As described herein, these poses include a collection of key-value pairs, such as deformer channels, where one or more key-value pairs or channels available in a deformation rig have pre-set values.
[0117] In some embodiments, a game creator, artist, or user selects a subset of existing poses to be combined to create a new pose. For example, a user may choose to combine the eyebrow subset of channels for an "angry" pose with the lip subset of channels for a "shocked" pose. This new pose can then be assigned a new name, such as "angry-shocked," and saved. In some embodiments, a user may choose to combine multiple poses by weighted combination, with independent weights for each combined pair of channels, and assign a new name to the resulting new pose for subsequent saving.
[0118] In at least some embodiments, a user can initiate a pose-motion analysis before and / or after step 512. This pose-motion analysis receives as one or more inputs one or more physical material properties (e.g., metal or plastic type or thickness, etc.) and generates a description of one or more required actuator calibration values and / or material properties, such as metal or plastic folds, hinge locations / types, etc., to prepare a physical or animatronic version of the transformable rig for 3D printing or assembly. For example, a 3D printer communicatively connected to the transformation engine system 104 can receive the rigged asset, including the actuator calibration values and / or one or more material properties, and create a real-world physical 3D model of the rigged asset.
[0119] In some embodiments, this pose-motion analysis can also alert creators to problematic poses or deformation stack configurations that do not leave sufficient internal passage or safety for animatronic cables, either signal or motion cables, or that do not leave enough space to install other components, such as synthetic eyeballs. In some embodiments, creator-configured deformation stacks and weight maps are analyzed according to their possible motion ranges and the impact of channel value ranges, allowing for the automatic creation of segments into asset geometry, such as independent segments that a user can choose to tag as eyes, ears, necks, etc. Furthermore, these automatic segmentations can include automatic recommendations of material types to utilize for each segment; for example, a segment that exhibits noticeable wrinkles in the deformation rig system can identify a suitable type of latex cover that exhibits the same degree of wrinkles when physically deformed. This automatic segmentation can be used to assist in 3D printing of assembleable physical statues or animatronic models. The automatic segmentation can also include smoothness and curvature parameters for the continuity of curvature across segment boundaries, such as order 0 or order 1.
[0120] In some embodiments, such as during or before step 512, a user can select to export the deformation rig in a conventional format, such as a skin cluster or skin-and-bone system format. This conventional format has limited functionality compared to the operation order format created by the deformation engine system 104, and not all operation order functionality can be fully expressed in this conventional format. Thus, in at least some embodiments, a target maximum bone count is optionally specified by the user, and automatic creation of bone count, bone topology, and skin cluster weights is calculated to best approximate the original behavior of the operation order-based deformation rig, and the rig can be exported to the conventional format.
[0121] In step 512, the user can also "compile" a runtime-optimized version of the operational sequence deformation rig. This optimization process includes detecting redundant or unused rig channels or operator instances, minimally used or least effective rig channels, operator instances, or unnecessary weight maps, and simplifying or removing them during file saving. This optimization process can also perform a machine learning process to learn an approximate inference model for the deformation rig instance by synthesizing a training set consisting of a set of salient or pose-referenced channel values and deviation regions centered around them. This inference can be optimized for execution on hardware-accelerated inference systems, such as GPU- or TPU-based technologies. For some types of 3D models, at least one technical improvement may be improved memory usage and / or execution speed for the resulting inference-based deformation system.
[0122] In step 514, the deformation engine system 104 (e.g., in conjunction with the animation tool 202 and / or the creation tool 204, as the case may be) creates a "trimmed" file 515. In at least one embodiment, the trimmed file 515 includes at least one of a deformation rig and a set of weight maps.
[0123] The trimmed files 515 are stored in a library 506 containing multiple deformation rig templates, as described herein. The library 506 contains a collection of rigs that are accessible to future deformable models. In one embodiment, the rigs are created by a user, such as in the form of templates 507. The collection of rigs may be searchable by rig characteristics, such as number of operators / layers, computational complexity, character type (biped, facial, etc.), level of detail (LOD) support, etc. The created files 516 generally contain rig deformation settings, poses, clips, geometry, geometry texture data, and any combination thereof.
[0124] Example of operation order and weighting using a transforming engine system
[0125] Figure 6 is a diagram illustrating an asset 600 created and edited using the transformation engine system 104 (shown in Figures 1 and 2). Figure 7 is a diagram illustrating the sequence of operations for the asset 600 shown in Figure 6. As described herein, in some embodiments, an asset such as asset 600 may be created using the transformation engine system 104 in conjunction with animation tools 202 and / or creation tools 204. For example, the transformation engine system 104, in at least some cases, functions as a plug-in (or a software extension thereof) to the animation tools 202 and / or creation tools 204 provided by the skin-and-bone game engine system 102.
[0126] As used herein, the animation tool 202 and / or creation tool 204 may also be referred to as an "editor" or "GUI editor" 602 for simplicity, and in such cases the deformation engine system 104 adds functionality to the skin-and-bone GUI editor 602, such as specifying operation order, layering, weighting, and various other options, as described herein.
[0127] Thus, as shown, asset 600 may include a cylinder 604. It should be understood that a variety of other asset objects, shapes, and characters are contemplated within the scope of this disclosure. Cylinder 604 is provided merely as an example shape. As described herein, one advantage of using deformation engine system 104 is that asset 600 does not need to include an internal framework or "skeleton" of "bones" as in a traditional skin-and-bone game engine system, such as game engine system 102.
[0128] Instead, the deformation engine system 104 may create the asset 600 (which is imported into the deformation engine system 104 as described herein) in a format that includes an external mesh 606 but does not include an internal skeleton or network of articulating bones. In other words, the cylinder 604 includes a mesh 606 but does not include an internal architecture, such as an internal network of articulating bones.
[0129] In an exemplary embodiment, the GUI editor 602 may include one or more panes, editing windows, editors, etc., such as a deformer editor (not shown) and / or an order of operations or OOO editor 608. In at least some embodiments, the deformer pane includes multiple deformers, each of which is selectively associated with or applied to the asset 600. Furthermore, as described above, in some embodiments, the deformers selected from the deformer pane may include pre-built deformers, such as those imported from other assets, or custom deformers created using, for example, a custom deformer API provided by the deformation engine system 104. As a result, although not shown, a user may select one or more deformers from a drop-down list or the like in the deformer pane. In the example of FIGS. 6 and 7, a deformer 610 named "TeaPot_CS" is selected. Selecting the deformer 610 causes the OOO editor 608 to appear adjacent to the asset 600.
[0130] 6 and 7, multiple deformer channels are displayed in OOO editor 608, e.g., first deformer channel 612, second deformer channel 614, and third deformation channel 616. In this example, deformer 610 includes three channels 612-616, but a deformer such as deformer 610 can include any number of channels, each of which can be used to control a deformation applied to the visual appearance of an asset, such as asset 600, as described herein.
[0131] In the OOO editor 608, a user can adjust the order in which one or more deformer channels 612-616 are displayed in the deformer stack 618 by selecting them (e.g., by dragging them using a mouse, stylus, touchscreen interface, etc.). Specifically, by rearranging the order of one or more channels 612-616 in the stack 618, the user can visually control the order of operations associated with the channels 612-616. Specifically, in at least some embodiments, the order of the channels 612-616 in the stack 618 can specify the order in which each deformer 612-618 is executed during simulation of the asset 600, such as during creation in the editor 602. Similarly, the order in the stack 618 can specify the order of operations during game execution on a personal computer, game console, etc., upon completion of game creation.
[0132] By adjusting the order of operations, a user can achieve various visual effects. For example, if the first channel 612 is a "bend" channel, the second channel 614 is a "rotate" channel, and the third channel 616 is a "translate" channel, a user can, for example, drag the "bend" channel 612 below the "rotate" channel 614 to bend the asset before rotating it. On the other hand, if the bend channel 612 remains at the top of the stack 618 without being moved, during the simulation or game, the asset 600 is first bent and deformed as specified by the bend channel 612, and then rotated as specified by the rotate channel 614. Figure 7 shows the asset 600 after it has been bent and then rotated. Note that the rotation of the asset 600 is not visible in this still image.
[0133] As a result, the visual or graphical effect achieved can be simply changed based on the placement or order of operation of each deformer channel in stack 618. It should be understood that this is a simple example of an order of operation for game creation, and that in many cases deformers with three or more channels will be selected. Similarly, by applying many deformers to a given asset, such as asset 600, and specifying the order of operation for each deformer, as described herein, beautiful, high-fidelity, cinematic-quality graphics can be achieved.
[0134] In addition to these functions, as shown, each channel 612-616 is associated with a channel weight that is used to adjust the degree to which the respective channel 612-616 affects the appearance of the asset 600. For example, the first channel 612 is associated with a first weight 620, the second channel is associated with a second weight 622, and the third channel is associated with a third weight 624. In this exemplary embodiment, each channel weight 620-624 can be adjusted left or right, such as by using a slider, to adjust the degree to which the channel affects the asset 600. For example, adjusting the weight 620 of the bend channel 612 left or right can increase or decrease the amount that the asset 600 bends left or right. Similarly, adjusting the weight 622 of the rotation channel 614 left or right can control the speed of the asset 600's clockwise and / or counterclockwise rotation.
[0135] As a result, the deformation engine system 104 not only facilitates the ability to control the order of operations during game creation, but also facilitates intuitive and easy-to-use weighting of each deformer channel, allowing for a variety of realistic deformations to be easily achieved without requiring the manipulation of multiple interconnected bones or joints in traditional skin-and-bone systems, as described herein. Instead, each deformer channel 612-616 can be simulated and / or executed independently of all other deformer channels 612-616, and the execution of any given deformer channel 612-616 does not affect or cascade with the execution of other deformer channels 612-616. This is also true for deformers that include multiple deformer channels.
[0136] Input File Consistency and Portability Example
[0137] In some embodiments, leveraging the portability and consistency of input file formats as described herein, an author can start authoring rigs, weight maps, and fittings in one DCC (e.g., MODO), continue authoring those rigs, weight maps, and fittings in another DCC (e.g., MAYA), capture and save live-action animation or "clips" in another DCC (e.g., UNREAL ENGINE), open and refine those clips in another DCC (e.g., MAYA again), and finally save and load those clips and rig data in an end-user experience built in another DCC (e.g., UNITY or UNREAL ENGINE). At every step, the transformation system and rig file format ensure identical on-screen performance regardless of different DCCs or hardware platforms.
[0138] Example of weight maps and layering using the transformation engine system
[0139] 8 illustrates a partial character asset 80 created and edited using deformation engine system 104 (shown in FIGS. 1 and 2). In an exemplary embodiment, asset 800 includes a mesh 802 and does not include an internal framework or internal articulated skeletal structure, as described herein. Instead, as described herein, asset 800 has applied to it only multiple layered deformers containing multiple deformation channels executed according to an operation order specified by the game creator when asset 800 was constructed.
[0140] Thus, in an exemplary embodiment, an OOO editor pane 804 (as described above) is provided adjacent to asset 800, e.g., in response to a selection of one or more deformers. Briefly, a "Head_LR" channel 806 may be used (by adjusting the weight of an associated slider) to move the asset's head left and right. Similarly, a "Head_FB" channel 808 may be used (by using an associated slider) to move the asset's head forward and back. Additionally, a "Jaw_Open" channel 810 may be similarly used to open and close the jaw of asset 600. Consequently, as described herein, in at least some embodiments, deforming an asset such as asset 800 includes representing a change in the asset between a first position or geometry and a second position or geometry, e.g., by changing the view and / or geometry of asset 800 from a first position or geometry to a second position or geometry that differs from the first position or geometry.
[0141] In an example embodiment, an asset, such as asset 800, may also be associated with one or more weight maps, as shown with reference to FIG. 9. Additionally, as described herein, weight maps may be associated with respective deformer channels, layered relative to one another, and executed according to a specified order of operations associated with multiple deformer channels. As shown, in at least some embodiments, a higher density of dots or stippling generally indicates a higher weight value, while a lower density or absence of dots or stippling indicates a lower or zero weight value.
[0142] For example, in this exemplary embodiment, a deformer 902 named "Jaw_CS" may be selected and displayed adjacent to asset 800. Deformer 902 includes a stack 904 of channels, such as channel 906, which is responsible for opening and closing the jaw of asset 800. Stack 904 can be ordered, or reordered, according to user preferences, as described herein. Each channel in stack 904 includes a slider that is used to adjust its associated weight.
[0143] In addition to providing adjustable weighting associated with each channel of stack 904, at least some embodiments may provide a weight map for each weighting channel of stack 904 and display it in association with asset 900 to provide a simplified visual creation. For example, as shown in FIG. 9 , a weight map 908 may be displayed on mesh 802 to show the effect that adjusting the weighting associated with jaw opening / closing channel 906 has on a region or domain 910 influenced by the weight map 908 of channel 906.
[0144] For example, in the illustrated example, domain 910 of weight map 908 spans most of the cheek and chin regions of asset 800, but not the forehead or brow regions. Additionally, weight map 908 is weighted more heavily in portions of domain 910 to indicate areas that are more affected or deformed by adjusting the channel weighting of jaw open / close channel 906. In the example of FIG. 9 , jaw region 912 below the mouth of asset 800 is included in domain 910 and is shaded darker than cheek region 914, which is also included in domain 910. As a result, by adjusting the weighting associated with jaw open / close channel 906, mouth movement in jaw region 912 results in greater deformation than mouth movement in cheek region 914. Additionally, as can be seen, weight map 908 is shaded continuously across domain 910, blending from the darker shading of jaw region 912 to cheek region 914. As a result, the deformation of domain 910 as the jaws of asset 800 open and close is smoothly blended over the surface of mesh 802, resulting in a smooth deformation or change of mesh 802 or the mesh surface, rather than the gradual deformation of discrete bone vertices below the mesh surface as in traditional skin-and-bone systems.
[0145] 10 is a diagram illustrating a partial asset 800 (shown in FIG. 9) showing a weight map 1000 associated with a deformation channel 1002. More specifically, the deformation channel 1002 is associated with a "lift left corner of mouth" deformation of the asset 800; for example, adjusting the weighting associated with channel 1002 can increase or decrease the upward deformation or upward lift of the left corner of the mouth 1004.
[0146] In this exemplary embodiment, weight map 1000 shows the effect that adjusting the weighting associated with channel 1002 has on an affected region or domain 1006 of weight map 1000 for channel 1002. For example, domain 1006 of weight map 1000 spans most of the cheek region of asset 800, but not the forehead or brow regions. Additionally, weight map 1000 is heavier in portions of domain 1006 to indicate those areas that are more affected or deformed by adjusting the channel weighting of "Lift left corner of mouth" channel 1002.
[0147] Deformation engine system 104 not only enables weight maps such as weight map 908 and weight map 1000, but also facilitates the layering of multiple weight maps to create, for example, complex, high-fidelity, beautifully rendered facial expressions and other asset movements and deformations. For example, referring to FIGS. 9 and 10 in combination, an author can specify that a "jaw open" deformation be combined with a "left mouth corner up" deformation by layering or combining weight map 908 and weight map 1000 on asset 800. Weight map 908 and weight map 1000 can independently control not only such facial expressions but also the impact that the associated deformations have on their respective domains 910 and 1006, resulting in a total deformation achieved that differs from that achieved using either weight map 908 or weight map 1000 alone.
[0148] Furthermore, while only two weight maps, weight map 908 and weight map 1000, are illustrated herein, it should be understood that any suitable number of weight maps may be added to asset 800. However, in many cases, the flexibility and robust deformation characteristics provided by the individual transformations and associated weight maps may be sufficient to achieve a desired overall transformation using only a small number of transformations and weight maps. In other words, while any number of transformations and / or weight maps may be applied to an asset, in many cases these techniques are so robust that additional technical improvements can be achieved using a limited number of transformations and weight maps.
[0149] Additionally, in at least some embodiments, the deformation engine system 104 may allow a user, such as a game creator, to turn one or more layers on and / or off to “mute” one or more deformations associated with the rigging of the asset 800. This muting feature may, for example, return execution budget to a processor, such as the processor 110, to facilitate faster game execution. Meanwhile, muting off or becoming more restrictive may allow for more detailed deformations. As a result, the deformation engine system 104 provides a range of options for independently customizing and adjusting asset rigs, including deformations, weighting, layers, and the like, to achieve a desired balance between execution time, graphical quality, and the like. Furthermore, the LOD system described above may automatically manage the muting or unmuting of deformations according to desired fidelity and performance policies set by the user.
[0150] An example of animating weights using the deformation engine system
[0151] FIG. 11 illustrates an asset 1100 created using the deformation engine system 104 (shown in FIGS. 1 and 2) with multiple orderable deformation channels shown adjacent to the object. FIG. 12 illustrates the asset shown in FIG. 11 with one deformation channel adjusted to affect corresponding graphical adjustments of the asset. FIG. 13 illustrates the asset shown in FIGS. 11 and 12 with two deformation channels adjusted to affect several corresponding graphical adjustments of the asset. FIG. 14 illustrates the asset shown in FIGS. 11-13 with a deformation channel editor that can be used to adjust the animated weights of each deformation channel.
[0152] 11-14 in combination, as described herein, the asset 1100 includes a mesh 1102 and does not include an internal skeletal framework. Further, as described herein, in some embodiments, the asset 1100 is imported into the deformation engine system 104 in a naked format that does not include rigging operations (e.g., deformations), such as by using an input file. In some embodiments, the naked asset 1100 may also be created using the deformation engine system 104.
[0153] In this exemplary embodiment, mesh 1102 defines a generally spherical object that includes a mouth 1104 having an upper lip 1106 and a lower lip 1108. An OOO editor 1110 is displayed adjacent to asset 1100. OOO editor 1110 includes a number of channels 1112, each of which can be used to control an aspect of the deformation of asset 1100, as described herein. For example, an "open" channel 1114 can cause mouth 1104 to open or close. Similarly, a "compress" channel 1116 can cause lips to purse or release, and a "slide" channel 1118 can cause mouth 1104 to slide left or right on asset 1100. Thus, as shown in FIG. 12 , adjusting open channel 1114 can cause mouth 1104 to open. The degree to which mouth 1104 is deformed to open can be adjusted using a slider associated with open channel 1114, as shown. Similarly, as shown in FIG. 13, the degree to which the mouth 1104 deforms to purse the lips can be adjusted using a slider associated with the compression channel 1116 .
[0154] 14, in an exemplary embodiment, a game creator or artist can display and use a deformer channel editor 1402 to customize deformation channel properties, such as the shape of the deformation created by the channel. In various embodiments, such customized channel shapes or channel properties are referred to as "animated deformations."
[0155] In the illustration of FIG. 14 , the deformer channel editor 1402 displays a curve 1404 associated with the shape of the open channel 1114. Further, as shown, the curve 1404 can be edited and / or tweaked in the editor 1402 to affect a corresponding change in the shape of the mouth 1104. Specifically, in the exemplary embodiment, the shape of the curve 1404 corresponds not only to the shape of the upper lip 1106, but also to the shape of the lower lip 1108, which is symmetrical to the lower lip 1108 about a horizontal axis of symmetry (i.e., the centerline of the mouth 1104). As a result, by changing the shape of the curve in the editor 1402, the shape of the mouth 1104 can be changed, as shown in FIG. 14 .
[0156] Thus, as described herein, deformer channels are not only associated with individual weights and / or weight maps, but, in at least some embodiments, can be independently adjusted, using, for example, channel editor 1402, to adjust the shape of the deformations created or affected by each deformer channel. It should be appreciated that the range of deformation shapes that can be achieved using a nearly infinite variety of customizable animation deformations further contributes to the realism and flexibility associated with the computer animation techniques and systems described herein.
[0157] Example of shape correction using a transformation engine system
[0158] Figure 15 is a diagram illustrating asset 1100 (shown in Figures 11-14) where, in response to adjustment of a deformation channel, the shape correction associated with the adjusted deformation channel is automatically adjusted. Figure 16 is another diagram illustrating asset 1100 where, in response to adjustment of a deformation channel, the shape correction associated with the adjusted deformation channel is automatically adjusted.
[0159] 15 , a mouth 1104 of the asset 1100 is shown. More particularly, as shown, an upper lip 1106 and a lower lip 1108 are shown. As shown, by adjusting one or more channels 1112, a deformation of the depicted mouth 1104 is created, and as can be seen, the mouth 1104 has a curved portion 1502 of the upper lip 1106 that puckered or protruded toward the lower lip 1108. In this exemplary embodiment, a domain 1504 near the curved portion 1502 is stretched or relatively unbunched, thereby creating a lifelike deformation in the domain 1504 that represents the mesh 1102 being pulled tight or stretched when the upper lip 1106 includes the curved portion 1502.
[0160] Also, as shown with reference to FIG. 16 , adjusting one or more channels 1112 (e.g., open channel 1114) to open the mouth 1104 wider pulls back or lifts the curved portion 1502 of the upper lip 1106, bunching or gathering the domain 1504 near the curved portion 1502, creating lifelike deformations in the domain 1504 representing the bunched or gathered mesh 1102 near the upper lip 1106.
[0161] These deformations are achieved using the deformation engine system 104 without the aid of bones or joints typically required in skin-and-bone systems. Similarly, the deformations shown in Figures 14 and 15 are achieved without the use of blend shapes, which are used in traditional skin-and-bone systems to create the illusion of one shape changing or transforming into another. Instead, as the mouth 1104 deforms, the deformation engine system 104 automatically and dynamically adjusts the domain 1504 to account for the deformation of the upper lip 1106.
[0162] Poses, rig reuse, and mesh editing examples
[0163] In various embodiments, and as described herein, the deformation engine system 104 can facilitate the creation of various poses, where a pose can include a collection of deformer channels (and associated channel weightings, etc.) for subsequent reuse. For example, example poses can include, but are not limited to, "happy," "snarl," etc., where the "happy" pose includes preset channel weightings for creating a happy asset expression (e.g., a happy face), and the "snarl" pose includes preset channel weightings for creating an angry or unhappy asset expression. As a result, poses embody preset or predefined "rigs" that can be quickly reused to impart various facial expressions and / or other geometry to blank assets.
[0164] In an exemplary embodiment, to facilitate faster and easier game creation, the deformation engine system 104, as described herein, allows game creators to save and reuse collections of deformations, including various weights, weight maps, layers, animated deformations, etc., as pose files, rig files, or combinations thereof. A rig file may contain pre-set channel values that can be restored to the original character asset or a different character asset (with multiple matching channel names). A rig file contains a unique combination of previously created deformation values for an asset that can be applied to other assets with the same, derived, or re-shrinkwrap topology.
[0165] To reuse pose or rig files, a game creator can selectively apply a saved pose file to another asset, regardless of whether the pose is the same as the asset that was originally created. For example, a game creator can create a pose (e.g., "happy") for a female character and then import or apply that pose to another character, such as a male character.
[0166] To apply poses to a subsequent character, the deformation engine system 104 can select a rig file originally created by the game creator for a female character and apply it to the subsequent character. In response to the selection of the rig file, the deformation engine system 104 can apply different deformation values and / or deformation settings stored in the rig file to the subsequent character, even if the subsequent character includes geometry that differs from the geometry of the original (female) character. Stated another way, in at least some embodiments, animation can be shared between two different characters by normalizing the range of values associated with deformers common to both characters, thereby effectively sharing animation between both characters using the normalized range of values for the deformers.
[0167] For example, in at least one example, a puppy character asset having a "left eye open" deformer and a "right eye open" deformer can share animation with a kitten (or other animal) asset, a character with a different topology from the puppy character, such as by using a normalized channel value range. For example, the same two channels (e.g., "left eye open" and "right eye open") can be used for both character assets, even if the mesh topology of each character is different. Furthermore, not all channels need to be common between two animal asset characters (e.g., a puppy and a kitten). Indeed, for example, a kitten may have one or more "whisker bending" channels, while a dog may not have such deformation channels. The deformation engine system 104 is flexible and robust enough to allow animation of channels common to both character assets, such as a puppy and a kitten (e.g., a "right eye open" channel and a "left eye open" channel), while also allowing the use of other channels (e.g., a "whisker bending" channel) that are not shared between the assets.
[0168] In addition to these functions, for example, by applying a saved pose or rig to a new asset or character, the deformation engine system 104 can also facilitate adjusting or fine-tuning the deformation path associated with a given asset, such as compensating for changes in the geometry of the asset or character that received the saved pose compared to the asset or character for which the pose was originally created.
[0169] For purposes of explanation, Figure 17 shows asset 1700. In an exemplary embodiment, a saved pose is associated with asset 1700. Specifically, asset 1700 is a male face, and the pose associated with asset 1700 was originally created for a female face. As a result, deformation path 1702 associated with eyebrows 1704 of asset 1700 may be higher or otherwise different than an optimal or desired deformation path for a male character.
[0170] A deformation channel curve 1706 is displayed adjacent to the eyebrow 1704 of the asset 1700 to correct the deformation path 1702 for the eyebrow 1704 (again, previously created for a female character). A user or game creator can selectively adjust (e.g., using a mouse, touchscreen, etc.) the deformation channel curve 1706 to bring the deformation path 1702 to a new position or orientation that is more suitable or natural for the deformation desired for a male character, for example. This fine-tuning process is applied to either the deformation or deformation channel associated with the saved pose after applying the pose to the new asset, thereby facilitating the reuse of saved poses. This also provides the advantage and technical improvement of being able to quickly and easily adjust saved poses to accommodate new asset geometry, rather than recreating all of the rigging for the new asset from scratch. This pose reuse process can, for example, reduce the rigging time for a given asset from days to hours.
[0171] 18A-18D illustrate additional exemplary embodiments of a deformable asset, such as a ribbon, and its corresponding deformation channel values, according to at least one embodiment. As described elsewhere herein, the assets shown in FIGS. 18A-18D can be deformed using multiple deformation channels, as shown in FIG. 18D.
[0172] 19A-19D illustrate additional example embodiments of a naked asset, such as a human character, in an undeformed state. As described herein, the asset includes a mesh, as shown in FIGS. 19A-19C. As described elsewhere herein, the asset shown in FIGS. 19A-19D can be deformed using multiple deformation channels, as shown in FIG. 19D.
[0173] 20A-20D illustrate additional exemplary embodiments of a deformable asset, such as a human character, in a deformed state. As described herein, the asset includes a mesh, as shown in FIGS. 20A-20C. As described elsewhere herein, the asset shown in FIGS. 20A-20D can be deformed using multiple deformation channels, as shown in FIG. 20D.
[0174] FIG. 21 illustrates an additional example embodiment of a weight map associated with an asset (e.g., a weight map for an asset's jaw), as described herein.
[0175] As used herein, the systems and methods of the present disclosure may be implemented using computer programming or engineering techniques, including computer software, firmware, hardware, or any combination or subset thereof.
[0176] In this specification and the claims that follow, various terms are used that have the following meanings.
[0177] As used herein, elements or steps described in the singular and preceded by the word "a" or "an" should be understood as not excluding a plurality of elements or steps, unless the exclusion of a plurality of elements or steps is expressly stated. Furthermore, references to an "exemplary embodiment" or "one embodiment" of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features.
[0178] Approximate language (terms expressing approximation) used throughout this specification and claims can be applied to modify any quantitative expression that can vary within a permissible range without resulting in a change in the basic function associated therewith. Thus, values modified by terms such as "about," "approximately," "substantially," etc. are not limited to the exact value specified. In at least some instances, the approximation may correspond to the precision of the instrument used to measure the value. Throughout this specification and claims, range limitations are combinable and / or interchangeable. Such ranges include all subranges (subranges) contained therein, unless the context or language dictates otherwise.
[0179] Unless otherwise specified, descriptive language such as "at least one of X, Y, or Z" is generally understood within the context to be used to indicate that a certain item, term, etc. is either X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z). Thus, such descriptive language generally does not intend or imply that a particular embodiment requires that at least one X, at least one Y, or at least one Z, respectively, be present. Additionally, unless otherwise specified, descriptive language such as "at least one of X, Y, and Z" should also be understood to mean X, Y, Z, or any combination thereof, i.e., "X, Y, and / or Z."
[0180] Some embodiments involve the use of one or more electronic processing or computing devices. As used herein, the terms “processor” and “computer,” and related terms such as “processing device,” “computing device,” and “controller,” are not limited solely to integrated circuits referred to in the art as computers, but rather refer broadly to processors, processing devices, controllers, general-purpose central processing units (CPUs), graphics processing units (GPUs), tensor processing or inference units (TPUs), microcontrollers, microcomputers, programmable logic controllers (PLCs), reduced instruction set computer (RISC) processors, field programmable gate arrays (FPGAs), digital signal processing (DSP) devices, application-specific integrated circuits (ASICs), and other programmable circuits or processing devices capable of performing the functions described herein, and these terms are used interchangeably herein. The above examples are merely illustrative and thus are not intended to limit in any way the definition or meaning of processor, processing device, and related terms.
[0181] In the embodiments described herein, memory includes non-transitory computer-enabled media such as, but not limited to, flash memory, random access memory (RAM), read-only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), and non-volatile RAM (NVRAM). As used herein, the term "non-transitory computer-enabled media" refers to non-transitory computer-enabled media such as, but not limited to, non-transitory computer storage. Non-transitory computer storage includes, but is not limited to, volatile or non-volatile media, removable or non-removable media, such as firmware, physical storage, virtual storage, CD-ROM, DVD, and other digital sources such as networks, the Internet, and digital means yet to be invented, with the sole exception of transitory propagated signals. Also, a floppy disk, CD-ROM, magneto-optical disk (MOD), digital versatile disk (DVD), or any other computer-based device implemented by any method or technology for short-term or long-term storage of information, such as computer-readable instructions, data structures, program modules, program sub-modules, or other data, may be used. Accordingly, the methods described herein may be embodied in a non-transitory computer-readable medium, encoded as executable instructions, such as "software" or "firmware." Furthermore, as used herein, the terms "software" and "firmware" are used interchangeably and include any computer program stored in memory for execution by personal computers, workstations, clients, and servers. Such instructions, when executed by a processor, cause the processor to perform at least a portion of the methods described herein.
[0182] Additionally, in the embodiments described herein, the additional input device may be a computer peripheral associated with an operator interface, such as, but not limited to, a mouse or keyboard, or other computer peripherals, such as, but not limited to, a camera or scanner.
[0183] The systems and methods of the present disclosure described herein are not limited to the specific embodiments described herein; rather, the system components and / or method steps may be used independently and separately from other components and / or steps described herein.
[0184] Although particular features of various embodiments of the present disclosure may be shown in some drawings and not in others, this is for convenience and in accordance with the principles of the present disclosure, any feature of one drawing may be referenced and / or claimed in combination with any feature of any other drawing.
[0185] This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to practice the invention, including making and using any devices or systems, and practicing any methods incorporated herein. The patentable scope of the invention is defined by the claims, and may include other embodiments that occur to those skilled in the art. Such other embodiments are within the scope of the claims if they contain elements that do not differ from the literal language of the claims, or if they contain equivalent elements that do not differ substantially from the literal language of the claims.
Claims
1. 1. A method for computer animation comprising: receiving an input file including asset geometry defining an asset mesh structure, the input file being executed by a processor running a multi-platform transformation engine system in conjunction with a third-party game engine system; a step executed by the processor of associating at least one deformer instance with the asset mesh structure, the at least one deformer instance including a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust a visual appearance of the associated portion; receiving, by the processor, a customizable operation order for executing at least a subset of the plurality of deformer channels based on user input, the operation order specifying an order in which each deformer channel is to be executed in real time during animation of the asset geometry; and creating an output file executed by the processor, the output file including the asset geometry, the at least one deformer instance, and the operation order.
2. 10. The method of claim 1, A method wherein the operation order specifies an order in which each deformer channel of the subset of the plurality of deformer channels is executed independently of all other deformer channels of the subset, such that no deformer channel of the subset is executed as a graphical transformation of other deformer channels of the subset.
3. 10. The method of claim 1, When the transformation engine system is executed in association with any of a variety of third-party game engine system products and any of a variety of hardware platforms, including at least one of a mobile device, a gaming console, an entertainment console, a cloud environment, and a personal computer, The method further comprises the step, executed by the processor, of formatting the output file for use in the transformation engine system.
4. 10. The method of claim 1, controlling, executed by the processor, a display device that displays the asset mesh structure; controlling the display device to display the user-selectable deformer channels adjacent to the asset mesh structure, the display device being executed by the processor; The method further includes receiving, executed by the processor, a user selection of at least one of the user-selectable deformer channels for calibration thereof.
5. 5. The method of claim 4, The method further includes a step executed by the processor of receiving a user selection of a weight value for at least one deformer channel selected by the user, the weight value being adjustable within a predetermined range to control the degree of deformation of a portion of the asset mesh structure associated with the deformer channel.
6. 6. The method of claim 5, The method further includes a step executed by the processor of deforming a portion of the asset mesh structure associated with the deformer channel in response to the received user-selected weight value.
7. 7. The method of claim 6, retrieving, from a storage device, a weight map of a neighborhood of the asset mesh structure defined in the neighborhood of a portion of the asset mesh structure associated with the deformer channel; the step of deforming the nearby region of the asset mesh structure based on the weight map in response to a deformation of the portion of the asset mesh structure associated with the deformer channel, executed by the processor, wherein at least a first portion of the nearby region is deformed by a first degree of deformation and a second portion of the nearby region is deformed by a second degree of deformation, the first portion being located near the portion of the asset mesh structure associated with the deformer channel and the second portion being located farther from the portion of the asset mesh structure associated with the deformer channel than the first portion, and the first degree of deformation being greater than the second degree of deformation.
8. 10. The method of claim 1, The method further includes a step, executed by the processor, of associating a plurality of deformer instances with the asset mesh structure in response to the user input, the plurality of deformer instances defining a predefined asset rig, the predefined asset rig being configured to control movement of the asset geometry.
9. A tangible, non-transitory, computer-readable medium having computer-executable instructions stored thereon, comprising: The computer-executable instructions, when executed by a processor executing a multi-platform transformation engine system in conjunction with a game engine system, cause the processor to perform at least: receiving an input file including asset geometry, the asset geometry defining an asset mesh structure, and the asset geometry not including an internal framework; associating at least one deformer instance with the asset mesh structure, the at least one deformer instance including a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust a visual appearance of the associated portion; receiving a customizable operational order for executing at least a subset of the plurality of deformer channels based on user input, the operational order specifying an order in which each deformer channel is to be executed in real time during animation of the asset geometry; creating an output file containing the asset geometry, at least one deformer instance, and the operation order; A non-transitory computer-readable medium configured to cause execution of
10. 10. The non-transitory computer-readable medium of claim 9, A non-transitory computer-readable medium, wherein the operation order specifies an order in which each deformer channel of the subset of the plurality of deformer channels is executed independently of all other deformer channels of the subset, such that no deformer channel of the subset is executed as a graphical transformation of other deformer channels of the subset.
11. 10. The non-transitory computer-readable medium of claim 9, The computer-executable instructions, when executed by the processor, cause the processor to: When the transformation engine system is executed in conjunction with any of a variety of third-party game engine system products and any of a variety of hardware platforms, A non-transitory computer-readable medium further causing the processor to perform the step of formatting the output file for use in the transformation engine system.
12. 10. The non-transitory computer-readable medium of claim 9, The computer-executable instructions, when executed by the processor, cause the processor to: controlling a display device to display the asset mesh structure; controlling the display device to display a plurality of user-selectable deformer channels adjacent to the asset mesh structure; receiving a user selection of at least one of the user-selectable deformer channels for calibration thereof.
13. 13. The non-transitory computer-readable medium of claim 12, The computer-executable instructions, when executed by the processor, cause the processor to: A non-transitory computer-readable medium that further causes the computer to perform the step of receiving a user selection of a weight value for at least one deformer channel selected by the user, the weight value being adjustable within a predetermined range to control the degree of deformation of a portion of the asset mesh structure associated with the deformer channel.
14. 14. The non-transitory computer-readable medium of claim 13, The computer-executable instructions, when executed by the processor, cause the processor to: The non-transitory computer-readable medium further causes the computer to perform the step of deforming a portion of the asset mesh structure associated with the deformer channel in response to the received user-selected weight value.
15. 15. The non-transitory computer-readable medium of claim 14, The computer-executable instructions, when executed by the processor, cause the processor to: retrieving, from a storage device, a weight map of a neighborhood region of the asset mesh structure defined near a portion of the asset mesh structure associated with the deformer channel; and deforming the nearby region of the asset mesh structure based on the weight map in response to a deformation of the portion of the asset mesh structure associated with the deformer channel, wherein at least a first portion of the nearby region is deformed by a first degree of deformation and a second portion of the nearby region is deformed by a second degree of deformation, the first portion being located closer to the portion of the asset mesh structure associated with the deformer channel and the second portion being located farther from the portion of the asset mesh structure associated with the deformer channel than the first portion, and the first degree of deformation being greater than the second degree of deformation.
16. 15. The non-transitory computer-readable medium of claim 14, The computer-executable instructions, when executed by the processor, cause the processor to: a non-transitory computer-readable medium further causing the computer to perform the step of associating a plurality of deformer instances with the asset mesh structure in response to the user input, the plurality of deformer instances defining a predefined asset rig, the predefined asset rig being configured to control movement of the asset geometry.
17. 1. A system for computer animation, comprising: a storage device storing computer-executable instructions; a processor configured to execute the computer-executable instructions stored on the storage device; The computer-executable instructions, when executed by the processor, cause the processor to perform at least: receiving an input file including asset geometry, the asset geometry defining an asset mesh structure, and the asset geometry not including an internal framework; associating at least one deformer instance with the asset mesh structure, the at least one deformer instance including a plurality of user-selectable deformer channels, each deformer channel being associated with at least a portion of the asset mesh structure and configured to adjust a visual appearance of the associated portion; receiving a customizable operational order for executing at least a subset of the plurality of deformer channels based on user input, the operational order specifying an order in which each deformer channel is to be executed in real time during animation of the asset geometry; creating an output file containing the asset geometry, at least one deformer instance, and an operation order; A system that is configured to run
18. 18. The system of claim 17, The system, wherein the operation order specifies an order in which each deformer channel of the subset of the plurality of deformer channels is executed independently of all other deformer channels of the subset, such that no deformer channel of the subset is executed as a graphical transformation of any other deformer channel of the subset.
19. 18. The system of claim 17, The computer-executable instructions, when executed by the processor, cause the processor to: controlling a display device to display the asset mesh structure; controlling the display device to display the plurality of user-selectable deformer channels adjacent to the asset mesh structure; receiving a user selection of at least one of the user-selectable deformer channels for calibration thereof.
20. 18. The system of claim 17, The computer-executable instructions, when executed by the processor, cause the processor to: The system further performs a step of receiving a user selection of a weight value for at least one deformer channel selected by the user, the weight value being adjustable within a predetermined range to control the degree of deformation of the portion of the asset mesh structure associated with the deformer channel.
Citation Information
Patent Citations
Three-dimensional object deforming method for video game, video game device and computer readable recording medium with recorded program for video game
JP2001209823A
Method and apparatus for transformation control of 2D and 3D images
JP2002508867A
Three-dimensional animation of soft tissue of character using control relevant to surface mesh
JP2007042101A
Three-dimensional model display system
JP2010267241A
Systems and methods for real-time complex character animations and interactivity
WO2019023384A1