Skeletal animation

Skeletal animation is a technique in computer animation in which a character (or other articulated object) is represented in two parts: a surface representation used to draw the character (called skin or mesh) and a hierarchical set of interconnected bones (called the skeleton or rig) used to animate (pose and keyframe) the mesh.[1] While this technique is often used to animate humans or more generally for organic modeling, it only serves to make the animation process more intuitive, and the same technique can be used to control the deformation of any object—such as a door, a spoon, a building, or a galaxy. When the animated object is more general than, for example, a humanoid character, the set of bones may not be hierarchical or interconnected, but it just represents a higher level description of the motion of the part of mesh or skin it is influencing.

The technique was introduced in 1988 by Nadia Magnenat Thalmann, Richard Laperrière, and Daniel Thalmann.[2] This technique is used in virtually all animation systems where simplified user interfaces allows animators to control often complex algorithms and a huge amount of geometry; most notably through inverse kinematics and other "goal-oriented" techniques. In principle, however, the intention of the technique is never to imitate real anatomy or physical processes, but only to control the deformation of the mesh data.

Sintel-hand (cropped)
'Bones' (in green) used to pose a hand. In practice, the 'bones' themselves are often hidden and replaced by more user-friendly objects. In this example from the open source project Blender, these 'handles' (in blue) have been scaled down to bend the fingers. The bones are still controlling the deformation, but the animator only sees the 'handles'.

Technique

Rigging is making our characters able to move. The process of rigging is we take that digital sculpture, and we start building the skeleton, the muscles, and we attach the skin to the character, and we also create a set of animation controls, which our animators use to push and pull the body around.[3]

This technique is used by constructing a series of 'bones,' sometimes referred to as rigging. Each bone has a three-dimensional transformation from the default bind pose (which includes its position, scale and orientation), and an optional parent bone. The bones therefore form a hierarchy. The full transform of a child node is the product of its parent transform and its own transform. So moving a thigh-bone will move the lower leg too. As the character is animated, the bones change their transformation over time, under the influence of some animation controller. A rig is generally composed of both forward kinematics and inverse kinematics parts that may interact with each other. Skeletal animation is referring to the forward kinematics part of the rig, where a complete set of bone configurations identifies a unique pose.

Each bone in the skeleton is associated with some portion of the character's visual representation in a process called skinning. In the most common case of a polygonal mesh character, the bone is associated with a group of vertices; for example, in a model of a human being, the 'thigh' bone would be associated with the vertices making up the polygons in the model's thigh. Portions of the character's skin can normally be associated with multiple bones, each one having a scaling factors called vertex weights, or blend weights. The movement of skin near the joints of two bones, can therefore be influenced by both bones. In most state-of-the-art graphical engines, the skinning process is done on the GPU thanks to a shader program.

For a polygonal mesh, each vertex can have a blend weight for each bone. To calculate the final position of the vertex, a transformation matrix is created for each bone which, when applied to the vertex, first puts the vertex in bone space then puts it back into mesh space. After applying a matrix to the vertex, it is scaled by its corresponding weight. This algorithm is called matrix palette skinning, because the set of bone transformations (stored as transform matrices) form a palette for the skin vertex to choose from.

Benefits and drawbacks

Strengths

  • Bone represent set of vertices (or some other objects, which represent for example a leg).
    • Animator controls fewer characteristics of the model
      • Animator can focus on the large scale motion.
    • Bones are independently movable.

An animation can be defined by simple movements of the bones, instead of vertex by vertex (in the case of a polygonal mesh).

Weaknesses

  • Bone represents set of vertices (or some other object).
    • Does not provide realistic muscle movement and skin motion
    • Possible solutions to this problem:
      • Special muscle controllers attached to the bones
      • Consultation with physiology experts (increase accuracy of musculoskeletal realism with more thorough virtual anatomy simulations)

Applications

Skeletal animation is the standard way to animate characters or mechanical objects for a prolonged period of time (usually over 100 frames). It is commonly used by video game artists and in the movie industry, and can also be applied to mechanical objects and any other object made up of rigid elements and joints.

Performance capture (or motion capture) can speed up development time of skeletal animation, as well as increasing the level of realism.

For motion that is too dangerous for performance capture, there are computer simulations that automatically calculate physics of motion and resistance with skeletal frames. Virtual anatomy properties such as weight of limbs, muscle reaction, bone strength and joint constraints may be added for realistic bouncing, buckling, fracture and tumbling effects known as virtual stunts. However, there are other applications of virtual anatomy simulations such as military[4] and emergency response. Virtual soldiers, rescue workers, patients, passengers and pedestrians can be used for training, virtual engineering and virtual testing of equipment. Virtual anatomy technology may be combined with artificial intelligence for further enhancement of animation and simulation technology.

See also

References

  1. ^ Soriano, Marc. "Skeletal Animation". Bourns College of Engineering. Retrieved 2011-01-05.
  2. ^ N. Magnenat-Thalmann, R.Laperrière, D. Thalmann, Joint-Dependent Local Deformations for Hand Animation and Object Grasping, Proc. Graphics Interface'88, Edmonton, 1988, pp.26-33
  3. ^ Petty, Josh. "What is 3D Rigging For Animation & Character Design?". Concept Art Empire. Retrieved 2018-11-28.
  4. ^ "Defense". Santos Human Inc. Retrieved 2011-01-05.
Away3D

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor (Away Builder), a 3D graphics engine (Away3D or AwayJS), a 3D physics engine (Away Physics) and a compressed 3D model file format (AWD).Development is managed by the Away Foundation, a UK-based non-profit focussed on building and maintaining free and open-source software resources for high-performance mobile games and applications. The foundation is supported by corporate sponsorship (Adobe, JetBrains among others) and individual donors.

Cal3D

Cal3D is a skeletal animation based 3D character animation library written in C++ in a platform-/graphic API-independent way. Originally designed to be used in a 3D client for Worldforge, it evolved into a stand-alone product which can be used in many different kinds of projects. It supports combining animations and actions through a "mixer" interface, and work has been done to integrate morph targets (used for facial expression) easily into the system.

Clara.io

Clara.io is a web-based freemium 3D computer graphics software developed by Exocortex, a Canadian software company. Clara.io was announced in July 2013 and first presented as part of the official SIGGRAPH 2013 program later that month. By November 2013 when the open beta period started, Clara.io had 14,000 registered users. Clara.io claimed to have 26,000 registered users in January 2014, which grew to 85,000 by December 2014.

Computer facial animation

Computer facial animation is primarily an area of computer graphics that encapsulates methods and techniques for generating and animating images or models of a character face. The character can be a human, a humanoid, an animal, a fantasy creature or character, etc. Due to its subject and output type, it is also related to many other scientific and artistic fields from psychology to traditional animation. The importance of human faces in verbal and non-verbal communication and advances in computer graphics hardware and software have caused considerable scientific, technological, and artistic interests in computer facial animation.

Although development of computer graphics methods for facial animation started in the early-1970s, major achievements in this field are more recent and happened since the late 1980s.

The body of work around computer facial animation can be divided into two main areas: techniques to generate animation data, and methods to apply such data to a character. Techniques such as motion capture and keyframing belong to the first group, while morph targets animation (more commonly known as blendshape animation) and skeletal animation belong to the second. Facial animation has become well-known and popular through animated feature films and computer games but its applications include many more areas such as communication, education, scientific simulation, and agent-based systems (for example online customer service representatives). With the recent advancements in computational power in personal and mobile devices, facial animation has transitioned from appearing in pre-rendered content to being created at runtime.

D3DX

In computing, D3DX (Direct3D Extension) is a deprecated high level API library which is written to supplement Microsoft's Direct3D graphics API. The D3DX library was introduced in Direct3D 7, and subsequently was improved in Direct3D 9. It provides classes for common calculations on vectors, matrices and colors, calculating look-at and projection matrices, spline interpolations, and several more complicated tasks, such as compiling or assembling shaders used for 3D graphic programming, compressed skeletal animation storage and matrix stacks. There are several functions that provide complex operations over 3D meshes like tangent-space computation, mesh simplification, precomputed radiance transfer, optimizing for vertex cache friendliness and strip reordering, and generators for 3D text meshes. 2D features include classes for drawing screen-space lines, text and sprite based particle systems. Spatial functions include various intersection routines, conversion from/to barycentric coordinates and bounding box/sphere generators.

The D3DX library contains pre-written routines for doing things common to most 2D/3D applications, such as games. Since the Direct3D API is relatively low-level, using the D3DX library is usually much simpler.

In 2012, Microsoft announced that D3DX would be deprecated in the Windows 8 SDK, along with other development frameworks such as XNA. Shader effects, texture management, geometry optimizations and mesh models are available as separate sources published through CodePlex. The mathematical constructs of D3DX, like vectors and matrices, would be consolidated with XNAMath into a DirectXMath and spherical harmonics math is provided as separate source.

Digital puppetry

Digital puppetry is the manipulation and performance of digitally animated 2D or 3D figures and objects in a virtual environment that are rendered in real time by computers. It is most commonly used in filmmaking and television production, but has also been used in interactive theme park attractions and live theatre.

The exact definition of what is and is not digital puppetry is subject to debate among puppeteers and computer graphics designers, but it is generally agreed that digital puppetry differs from conventional computer animation in that it involves performing characters in real time, rather than animating them frame by frame.

Digital puppetry is closely associated with motion capture technologies and 3D animation, as well as skeletal animation. Digital puppetry is also known as virtual puppetry, performance animation, living animation, live animation and real-time animation (although the latter also refers to animation generated by computer game engines). Machinima is another form of digital puppetry, and Machinima performers are increasingly being identified as puppeteers.

Dim3

Dim3, also known as Dimension 3, is a free and open-source 3D game engine created by Brian Barnes. It has been chosen as a staff pick for OS X development software by Apple. and featured as one of their "hot game building tools." dim3 has an entry in DevMaster's 3D engines database.dim3 uses OpenGL for rendering, JavaScript for scripting, XML for data and Simple DirectMedia Layer for resolution switching, input, and sound.

Geometry instancing

In real-time computer graphics, geometry instancing is the practice of rendering multiple copies of the same mesh in a scene at once. This technique is primarily used for objects such as trees, grass, or buildings which can be represented as repeated geometry without appearing unduly repetitive, but may also be used for characters. Although vertex data is duplicated across all instanced meshes, each instance may have other differentiating parameters (such as color, or skeletal animation pose) changed in order to reduce the appearance of repetition.

IClone

iClone is a real-time 3D animation and rendering software program that enables users to make 3D animated films. Real-time playback is enabled by using a 3D videogame engine for instant on-screen rendering.Other functionality includes: full facial and skeletal animation of human and animal figures; lip-syncing; import of standard 3D file types including FBX; a timeline for editing and merging motions; a scripting language (Lua) for character interaction; application of standard motion-capture files; the ability to control an animated scene in the same manner as playing a videogame; and the import of models from Google 3D Warehouse, among many other features. iClone is also notable for offering users royalty-free usage of all content that they create with the software, even when using Reallusion's own assets library.iClone is developed and marketed by Reallusion.

Id Tech 3

id Tech 3, popularly known as the Quake III Arena engine, is a game engine developed by id Software for their video game Quake III Arena. It has been adopted by numerous games. During its time, it competed with the Unreal Engine; both engines were widely licensed.

While id Tech 3 is based on id Tech 2 engine; a large amount of the code was rewritten. Successor id Tech 4 was derived from id Tech 3, as was Infinity Ward's IW engine used in Call of Duty 2 onwards.

At QuakeCon 2005, John Carmack announced that the id Tech 3 source code would be released under the GNU General Public License (version 2), and it was released on August 19, 2005. Originally distributed by id via FTP, the code can be downloaded from id's GitHub account.

Materials system

In Computer graphics, Materials are an enhancement of texture mapping (and a pre-requisite for advanced shading effects) that allows for objects in 3D modelling packages and video games to simulate different types of materials in real life. They are typically used to enhance the realism of polygon meshes and other forms 3D model data.

They associate additional properties such as: advanced rendering parameters (e.g. specularity, BRDF); physics behavioural properties (such as friction, density); or sound triggers alongside texture information for surfaces. For example, if a texture makes an object look like wood, it will sound like wood (if something hits it or is scraped along a surface), break like wood, and even float like wood. If it was made of metal, it will sound like metal, dent like metal, and sink like metal. This allows more flexibility when making objects in games.

Such materials are also of value for procedural generation, where a high level description of a model may be augmented with layers of processing to produce a more detailed result (e.g. adding weathering or vegetation). Material properties may also be tied to animation channels to exhibit time dependant behaviour.

A materials system allows a digital artist or game designer to think about objects in a different way. Instead of the object just being a model with a texture applied to it, the object, or part of the object, is made up of a material.

Examples of major materials found in a video game might be: wood, concrete (or stone), metal, glass, dirt, water, and cloth (such as carpeting, curtains, or clothing on a character with skeletal animation).

Morph target animation

Morph target animation, per-vertex animation, shape interpolation, shape keys, or blend shapes is a method of 3D computer animation used together with techniques such as skeletal animation. In a morph target animation, a "deformed" version of a mesh is stored as a series of vertex positions. In each key frame of an animation, the vertices are then interpolated between these stored positions.

Oak3D

Oak3D is a free JavaScript library for 3D graphics development based on the HTML5 WebGL standard, dedicated in realizing the Web3D applications with GPU acceleration for all the front-end developers in an easy and efficient way.

Developed with JavaScript, Oak3D can provide originally a cross-platform solution in Windows, Linux, Mac and Android. Without any plugin installed or downloaded, web3D applications based on Oak3D can run on all the modern internet browsers that support WebGL.

Oak3D provides a set of simple and ease-to-use API which allows web developers developing web3D application without concerning the details of 3D graphics implementation. Besides, Oak3D also provides many kinds of functional libraries, such as Math Library, Model Library, Skeletal Animation Library etc.

Oak3D additionally provides tools to convert traditional art asset to the format acceptable directly by Oak3D.

Oak3D is composed by two layers, Oak3D Core and Oak3D Engine. The following form shows the architecture.

Polygon mesh

A polygon mesh is a collection of vertices, edges and faces that defines the shape of a polyhedral object in 3D computer graphics and solid modeling. The faces usually consist of triangles (triangle mesh), quadrilaterals, or other simple convex polygons, since this simplifies rendering, but may also be composed of more general concave polygons, or polygons with holes.

The study of polygon meshes is a large sub-field of computer graphics and geometric modeling. Different representations of polygon meshes are used for different applications and goals. The variety of operations performed on meshes may include Boolean logic, smoothing, simplification, and many others. Volumetric meshes are distinct from polygon meshes in that they explicitly represent both the surface and volume of a structure, while polygon meshes only explicitly represent the surface (the volume is implicit). As polygonal meshes are extensively used in computer graphics, algorithms also exist for ray tracing, collision detection, and rigid-body dynamics of polygon meshes.

Qfusion

Qfusion is a 3D game engine. The project was started by Victor Luchitz along with several others. It is written in C for use on Windows and Unix-based systems. The engine also supports the data of Quake III as maps, 3D models and shaders.

Qfusion is a fork of id Tech 2, popularly known as the Quake II engine. Qfusion is free and open-source software subject to the terms of the GNU General Public License (GPL).

The engine supports Ogg Vorbis sound and KTX (ETC1), TGA, JPEG, PNG for images. More recent versions of Qfusion engine also extend the Q3 rendering scheme to include Normal Mapping, GLSL shaders (including bump mapping and cel shading), and skeletal animation.

Rich Representation Language

The Rich Representation Language, often abbreviated as RRL, is a computer animation language specifically designed to facilitate the interaction of two or more animated characters. The research effort was funded by the European Commission as part of the NECA Project. The NECA (Net Environment for Embodied Emotional Conversational Agents) framework within which RRL was developed was not oriented towards the animation of movies, but the creation of intelligent "virtual characters" that interact within a virtual world and hold conversations with emotional content, coupled with suitable facial expressions.RRL was a pioneering research effort which influenced the design of other languages such as the Player Markup Language which extended parts of the design of RRL. The language design specifically intended to lessen the training needed for modeling the interaction of multiple characters within a virtual world and to automatically generate much of the facial animation as well as the skeletal animation based on the content of the conversations. Due to the interdependence of nonverbal communication components such as facial features on the spoken words, no animation is possible in the language without considering the context of the scene in which the animation takes place - e.g. anger versus joy.

Skinning (disambiguation)

Skinning may refer to:

Skinning, removing the skin, usually from a dead animal

Uphill skiing using ski skins

Skinning (film), a 2010 Serbian filmIn computing:

Surface representation used to draw a character in skeletal animation in 3D computer graphics and computer animation

Creating a "skin" or "theme" to change the appearance of a computer program or websiteIn sports:

In Association Football, refers to an attacking player beating a defender with pace or skill

Starling Framework

Starling is an open source game framework used to create 2D games that run both on mobile and desktop platforms. It recreates the traditional Flash display list architecture on top of accelerated graphics hardware. Several commercial games have been built with Starling, including Angry Birds Friends and Incredipede.

Vertex painting

in 3D computer graphics software, vertex painting refers to interactive editing tools for modifying vertex attributes directly on a 3D polygon mesh, using painting tools similar to any digital painting application but working in a 3D viewport on a perspective view of a rotated model. It is similar to a 3D paint tool but operates specifically to vertex data rather than texture maps.

It is most often used for modifying weight maps for skeletal animation, to tweak the influence of individual bones when deforming surfaces around joints.

Animation topics
By country
Industry
Works
Techniques
Variants
Related topics

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.