Simulation/rendering stream pipeline for VFX.
Some implementations of the disclosure are directed to a pipeline that enables real time engines such as gaming engines to leverage high quality simulations generated offline via film grade simulation systems. In one implementation, a method includes: obtaining simulation data and skeletal mesh data of a character, the simulation data and skeletal mesh data including the character in the same rest pose; importing the skeletal mesh data into a real-time rendering engine; and using at least the simulation data and the imported skeletal mesh data to derive from the simulation data a transformed simulation vertex cache that is usable by the real-time rendering engine during runtime to be skinned in place of the rest pose.
DESCRIPTION OF THE RELATED ART(1) Animating dynamic objects such as characters (e.g., people or creatures) is a demanding area of animation that requires the animated object to move and deform in a visually plausible manner. Skinning of a skeleton-driven model is a technique used for animation of such objects. Skeletal animation is a computer animation technique that represents an object in two primary parts: 1) a mesh that is a surface representation of the object (e.g., defined by vertices, edges, and/or faces), and 2) a set of interconnected joints (i.e., a rig) used to animate the mesh. Generally, a joint may refer to a bone and the pivot about which it rotates, or a joint may just refer to a pivot. Joints may be related in a hierarchy by joint transformations. Skeletal animation may be applied to transform any object that implements this mesh and rig structure. For example, it may be applied to a whole or a part (e.g., arm, leg, hand, foot, torso) of an animated character, creature, or similar object. Alternatively, it may be applied to animations of other objects, such as clothing, a door, etc.(2) In order to achieve realistic animation of objects such as clothing, the skeletal mesh may require a very high resolution, including many different vertices that describe the mesh. As more detail is added to such an object, the cost of animating the object may become computationally prohibitive, reaching a point where the object cannot be dynamically animated at an acceptable
1. A non-transitory computer readable medium having executable instructions stored thereon, that when executed by a processor, performs operations comprising: obtaining simulation data and skeletal mesh data of a character, the simulation data and skeletal mesh data comprising the character in the same rest pose; importing the skeletal mesh data into a real-time rendering engine; and deriving, using at least the simulation data and the skeletal mesh data imported into the real-time rendering engine, a transformed simulation vertex cache that is usable by the real-time rendering engine during runtime to be skinned in place of the rest pose, wherein deriving the transformed simulation vertex cache comprises: deriving a processed vertex cache comprising frames of vertex and index buffers, wherein deriving the processed vertex cache comprises converting at least some of the simulation data to the frames of vertex and index buffers; creating a mapping between vertices in the processed vertex cache and vertices in vertex buffers created in the real-time rendering engine by importing the skeletal mesh data; and using at least the mapping to reorder the processed vertex cache and derive inverse-transformed tangent spaces computed on skinned vertex caches.
7. A method comprising: obtaining simulation data and skeletal mesh data of a character, the simulation data and skeletal mesh data comprising the character in the same rest pose; importing the skeletal mesh data into a real-time rendering engine; and deriving, using at least the simulation data and the skeletal mesh data imported into the real-time rendering engine, a transformed simulation vertex cache that is usable by the real-time rendering engine during runtime to be skinned in place of the rest pose, wherein deriving the transformed simulation vertex cache comprises: deriving a processed vertex cache comprising frames of vertex and index buffers, wherein deriving the processed vertex cache comprises converting at least some of the simulation data to frames of the vertex and index buffers; creating a mapping between vertices in the processed vertex cache and vertices in vertex buffers created in the real-time rendering engine by importing the skeletal mesh data; and using at least the mapping to reorder the processed vertex cache and derive inverse-transformed tangent spaces computed on skinned vertex caches.
13. A system, comprising: a processor; and a non-transitory computer readable medium having executable instructions stored thereon, that when executed by the processor, performs operations comprising: obtaining simulation data and skeletal mesh data of a character, the simulation data and skeletal mesh data comprising the character in the same rest pose; importing the skeletal mesh data into a real-time rendering engine; and deriving, using at least the simulation data and the skeletal mesh data imported into the real-time rendering engine, a transformed simulation vertex cache that is usable by the real-time rendering engine during runtime to be skinned in place of the rest pose, wherein deriving the transformed simulation vertex cache comprises: deriving a processed vertex cache comprising frames of vertex and index buffers, wherein deriving the processed vertex cache comprises converting at least some of the simulation data to frames of the vertex and index buffers; creating a mapping between vertices in the processed vertex cache and vertices in vertex buffers created in the real-time rendering engine by importing the skeletal mesh data; and using at least the mapping to reorder the processed vertex cache and derive inverse-transformed tangent spaces computed on skinned vertex caches.