Goldsmiths, University of London. Computer Animation. Goldsmiths, University of London



Similar documents
animation animation shape specification as a function of time

Fundamentals of Computer Animation

Two hours UNIVERSITY OF MANCHESTER SCHOOL OF COMPUTER SCIENCE. M.Sc. in Advanced Computer Science. Friday 18 th January 2008.

animation shape specification as a function of time

The 3D rendering pipeline (our version for this class)

Computer Animation. Lecture 2. Basics of Character Animation

Animation (-4, -2, 0 ) + (( 2, 6, -4 ) - (-4, -2, 0 ))*.75 = (-4, -2, 0 ) + ( 6, 8, -4)*.75 = (.5, 4, -3 ).

Interactive Computer Graphics

CS 4204 Computer Graphics

Mocap in a 3D Pipeline

Fundamentals of Computer Animation

Graphics. Computer Animation 고려대학교 컴퓨터 그래픽스 연구실. kucg.korea.ac.kr 1

Chapter 1. Animation. 1.1 Computer animation

Math for Game Programmers: Dual Numbers. Gino van den Bergen

Kinematical Animation

Computer Graphics CS 543 Lecture 12 (Part 1) Curves. Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

Blender 3D Animation

Metrics on SO(3) and Inverse Kinematics

Introduction to Computer Graphics Marie-Paule Cani & Estelle Duveau

Blender Notes. Introduction to Digital Modelling and Animation in Design Blender Tutorial - week 9 The Game Engine

CS 4620 Practicum Programming Assignment 6 Animation

Maya 2014 Basic Animation & The Graph Editor

This week. CENG 732 Computer Animation. Challenges in Human Modeling. Basic Arm Model

Essential Mathematics for Computer Graphics fast

We can display an object on a monitor screen in three different computer-model forms: Wireframe model Surface Model Solid model

C O M P U C O M P T U T E R G R A E R G R P A H I C P S Computer Animation Guoying Zhao 1 / 66 /

Tutorial 9: Skeletal Animation

IMD4003 3D Computer Animation

Computer Animation. CS 445/645 Fall 2001

INTRODUCTION TO RENDERING TECHNIQUES

CIS 536/636 Introduction to Computer Graphics. Kansas State University. CIS 536/636 Introduction to Computer Graphics

The Fundamental Principles of Animation

Today. Keyframing. Procedural Animation. Physically-Based Animation. Articulated Models. Computer Animation & Particle Systems

Motion Capture Technologies. Jessica Hodgins

A Short Introduction to Computer Graphics

Animation. Persistence of vision: Visual closure:

CMSC 425: Lecture 13 Animation for Games: Basics Tuesday, Mar 26, 2013

Develop Computer Animation

FACIAL RIGGING FOR 3D CHARACTER

Introduction to Computer Graphics

Character Animation Tutorial

Wednesday, March 30, 2011 GDC Jeremy Ernst. Fast and Efficient Facial Rigging(in Gears of War 3)

Tutorial: Biped Character in 3D Studio Max 7, Easy Animation

Character Creation You can customize a character s look using Mixamo Fuse:

Our One-Year 3D Animation Program is a comprehensive training in 3D using Alias

Working With Animation: Introduction to Flash

Solving Simultaneous Equations and Matrices

Creating Scenes and Characters for Virtools in OpenFX

CG T17 Animation L:CC, MI:ERSI. Miguel Tavares Coimbra (course designed by Verónica Orvalho, slides adapted from Steve Marschner)

Understanding Rotations

CHAPTER 6 TEXTURE ANIMATION

Project 2: Character Animation Due Date: Friday, March 10th, 11:59 PM

Principal Components of Expressive Speech Animation

Computer Graphics. Geometric Modeling. Page 1. Copyright Gotsman, Elber, Barequet, Karni, Sheffer Computer Science - Technion. An Example.

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 33 November 26, 2012

Curves and Surfaces. Goals. How do we draw surfaces? How do we specify a surface? How do we approximate a surface?

LINES AND PLANES CHRIS JOHNSON

Computer Animation and Visualisation. Lecture 1. Introduction

B2.53-R3: COMPUTER GRAPHICS. NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions.

Computer Animation in Future Technologies

Character Animation from 2D Pictures and 3D Motion Data ALEXANDER HORNUNG, ELLEN DEKKERS, and LEIF KOBBELT RWTH-Aachen University

Kinematics & Dynamics

3D Face Modeling. Vuong Le. IFP group, Beckman Institute University of Illinois ECE417 Spring 2013

Origins of the Unusual Space Shuttle Quaternion Definition

3D Modeling, Animation, and Special Effects ITP 215x (2 Units)

2.5 Physically-based Animation

The Car Tutorial Part 1 Creating a Racing Game for Unity

Introduction Computer stuff Pixels Line Drawing. Video Game World 2D 3D Puzzle Characters Camera Time steps

Programming 3D Applications with HTML5 and WebGL

Fundamentals of Computer Animation

Introduction to. With Slides from Dongho Kim and Karen Liu. School of Computer Soongsil University Animation. Computer Animation

If A is divided by B the result is 2/3. If B is divided by C the result is 4/7. What is the result if A is divided by C?

CS408 Animation Software Design Sample Exam Questions (Second Half)

Computers in Film Making

CATIA V5 Tutorials. Mechanism Design & Animation. Release 18. Nader G. Zamani. University of Windsor. Jonathan M. Weaver. University of Detroit Mercy

Program of Study. Animation (1288X) Level 1 (390 hrs)

Mocap in Carrara - by CyBoRgTy

CHAPTER 1 Splines and B-splines an Introduction

Anime Studio Debut vs. Pro

Republic Polytechnic School of Information and Communications Technology C391 Animation and Visual Effect Automation.

DESIGN, TRANSFORMATION AND ANIMATION OF HUMAN FACES

Logistics. Projects. Announcement. Animation pipeline. Plan for today. Animation Pipeline, Principles, Tools. Test . Test file in mycourses

An Interactive method to control Computer Animation in an intuitive way.

Digital 3D Animation

Chapter 9- Animation Basics

Scripted Operator Shoulder

Content. Chapter 4 Functions Basic concepts on real functions 62. Credits 11

A. OPENING POINT CLOUDS. (Notepad++ Text editor) (Cloud Compare Point cloud and mesh editor) (MeshLab Point cloud and mesh editor)

M2: Animation Techniques

COLLEGE ALGEBRA. Paul Dawkins

Lesson 26: Reflection & Mirror Diagrams

3D Computer Animation (Msc CAGTA) Report

Using Autodesk HumanIK Middleware to Enhance Character Animation for Games

Modelling 3D Avatar for Virtual Try on

3. Interpolation. Closing the Gaps of Discretization... Beyond Polynomials

Computer Animation. Jason Lawrence CS 4810: Graphics

Monash University Clayton s School of Information Technology CSE3313 Computer Graphics Sample Exam Questions 2007

Talking Head: Synthetic Video Facial Animation in MPEG-4.

DESIGNING MPEG-4 FACIAL ANIMATION TABLES FOR WEB APPLICATIONS

Transcription:

Computer Animation Goldsmiths, University of London

Computer Animation Introduction Computer animation is about making things move, a key part of computer graphics. In film animations are created off-line, possibly taking days of animator time per scene, however, in games everything must be done in real time on the fly. In practice this generally means creating a bunch of animations off line, either by hand animating them or using motion capture, which are then triggered in real time based on game events. Animation can also be created procedurally using a physics engine or a particle systems. This part of the course will primarily cover playback of pre-created animation (called keyframe animation). This is mostly applied to character animation, so that will be the focus of the course. Traditional Animation Before coming to computer animation lets talk briefly about traditional animation. The most basic form of animation is the flip book. It presents a sequence of images in quick succession, each of which is a page of the book. Each image changes slightly from the pervious one. If you flips through the pages fast enough the images are presented one by one and the small changes no longer seem like a sequence of individual images but a continuous sequence. In film this becomes a sequence of frames, which are also images, but they are shown automatically on a file projector. Cell animation works on the same principle. A sequence of images is displayed at 25 frames per second (the minimum to make it appear like smooth motion). For the purpose of doing animation these images are arranged in a time line. In traditional animation this is a set of images with frame numbers drawn by the side. Each frame is an image. Traditionally each image had to be hand drawn individually. This potentially requires vast amounts of work from a highly skilled animator. What is more, in order to make the final animation look consistent you want each character to always be drawn by the same animator. Disney and other animation houses developed techniques to make the process more efficient. Without these methods full length films like Snow White would not have been possible. One technique is Layering. You have a background images that don t move and put foreground images on a transparent slide in front of it. You only have to animate bits that move. Next time you watch an animation notice that the background is always more detailed than the characters. Asian animation often uses camera pans across static images. Computer Animation 1

Possibly the most important method is Keyframing. As you can see from the image above (by John Lasseter) you only need a few images to get the entire feel of a sequence of animation, but you would need many more to make the final animation look smooth. The head animator for a particular character draws the most important frames (Keyframes). An assistant draws the in-between frames (inbetweening). Other methods aimed making the animation look more realistic and expressive. Squash and stretch is about changing the shape of an object to emphasise its motion. In particular stretch it along the direction of movement when going fast and then squash when changing direction. Slow in slow out is about controlling the speed of an animation to make it seem smoother. Start slow, speed up in the middle and slow to a stop Stop motion animation is a very different process. It involves taking many still photographs of real objects instead of drawing images. The object is moved very slightly after each photograph to get the appearances of movement. There is more effort on creating characters. You can have characters with a lot of detail and character creates will spend a lot of effort making characters easy to move. For example Aardman animations use metal skeletons underneath their clay models, so that the characters can be move easily and robustly without breaking. Each individual movement is less work (though still a lot). Computer Animation Computer animation (both 2D and 3D) is quite a lot like Stop Motion Animation. You put a lot of effort into creating a (Virtual) model of a character and then when animating it you move it frame by frame. You will spend a lot of time making easy to use controls for a character, a process called rigging. For basic objects these will just be transforms like translations and rotation but human characters will have complex skeletons, analogous to the metal skeletons Aardman use (more on this later). Once you have done this set up animation is easy. Keyframing Keyframing can reduce this effort even more. The animator only needs to define the key frames of a movement (which will be values for transforms). The computer does the inbetweening automatically. Keyframes are a tuple <time, value> consisting of the time at which the keyframe occurs and the value of the transforms. These will be set up in a timeline, which is just an array of keyframes. The frames between the keyframes have to be filled in (interpolated). For example if you have the following positions of the ball: You might just interpolate them in straight lines between the keyframes. Computer Animation 2

The position is interpolated linearly between keyframes using the following equation: Where t is the time parameter. The equation interpolates between keyframe P(tk-1) and keyframe P(t) as t goes from 0 to 1. This simple equation assumes that the keyframe times are 0 and 1. The following equation takes different keyframe values and normalises them so they are between 0 and 1. The animation can be jerky, as the object changes direction of movement rapidly at each keyframe. To improve this we can do spline interpolation which uses smooth curves to interpolate positions. Use curves similar to Bezier. Bezier curves are smooth but don t go through all the control points, we need to go through all the keyframes. Computer Animation 3

As we need to go through the keyframes we use Hermite curves instead. These are equivalent to Bezier curves, but rather than specifying 4 control points specify 2 end points and tangents at these end points. In the case of interpolating positions the tangents are velocities. The maths is pretty much the same as Bezier Curves Bezier: Hermite: You can transform between the two: Bezier to Hermite: Hermite to Bezier: That s fine, but where do we get the tangents (velocities) from? We could directly set them, they act as an extra control on the behaviour. However often we want to generate them automatically. We can base the tangent at a keyframe on the previous and next keyframe. Computer Animation 4

Average the distance from the pervious keyframe and to the next one. These are called Catmull-Rom Splines. If you set the tangents at the first and last frame to zero you get slow in slow out Rotations That s pretty much it on keyframe animation, but there s one last problem: Rotations. Rotations are used a lot on animation, in fact human body animation is largely based on animating rotations rather than positions. Rotations are very different from positions, they are essentially spherical rather than linear. With a translation, if you carry on going in the same location you head of to infinity, for a rotation you get back to where you started from. More formally they exist in a hyperspherical space S3. You can split them into rotations about the X,Y & Z axis (Euler angles), but: Then the order in which you do them changes final rotation. This is a big problem in animation as you want to interpolate, i.e. split rotations into smaller rotations and put them back in a different order. If you rotate about Y so that the Z axis is rotated onto the X axis (i.e you rotate about 90 degrees) you get stuck. Rotations about the X and Z axis have the same effect so you can t vary the separately. This is called Gimbal lock and can unexpected turn up creating a lot of trouble. As you aren t representing rotations in their proper spherical space, then a constant speed interpolation in terms of Euler angles doesn t result in a constant speed interpolation in the rotation itself (i.e. it will throw off the timings of your animations. We need a representation of rotations that doesn t suffer these problems. We use Quaternions, which were invented by William Rowan Hamilton in 1843 and introduced into computer animation by Ken Shoemake (see further reading). Quaternions are a 4D generalisation of complex numbers: q = w+ xi+ yj+ zk The last three terms are the imaginary part and are often written as a vector: q = w,v [ ] Computer Animation 5

The conjugate of a quaternion is defined as: q = [ w,"v] And multiplication is defined as: q 1 q 2 = [ w 1 w 2 " v 1 # v 2, w 1 v 2 +w 2 v 1 +v 1 $ v 2 ] A rotation of angle θ about an axis V is represented as a quaternion with: # w = cos % " & ( $ 2' # v = Vsin % " & ( $ 2'! All rotations are represented by unit quaternions (length 1) (This is where quaternions get slightly strange, why half the angle? Quaternions are an unintuitive representation but they work, my advice is to just accept it and get on and use them). A vector (V) is rotated by first converting it to a quaternion: v = [ 0,V] Premultiplying by the rotation and postmultiplying by its inverse (the inverse of a unit quaternion is just its conjugate):!1 qvq q! 1 = q And converting back back to a vector by discarding the scalar part (w). The arithmetic operators on quaternions don t have the same meaning as they do with vector translations. To get an equivalent effect to a particular vector operation on translations you need to use the following operations (this is because the translation is done by adding on a vector but rotation is done by multiplying by a quaternion): Vector addition -> multiplication Vector subtraction -> multiplication by the inverse Vector multiplication by a scalar -> multiply the angle Vector addition (of translations) means do 1 translation followed by another, for Quaternions the equivalent operation is multiplication (q2*q1). Order matters, q1 is performed first. Vector subtraction (of translations) means do the inverse of the first translation followed by the other, for Quaternions the equivalent operation is multiplication by the inverse (q2*q1-1 ). Again order matters. Computer Animation 6

For translations multiplcation by a scalar means do more or less of the translation, for Quaternions the equivalent operation is scaling the angle of rotation. Angle, axis = q.getangleaxis() q.setangleaxis(t*angle, axis) Interpolating Rotations As quaternions have unit length, they all lie on a sphere with centre on the origin: Interpolating normally will result in a quaternion that is not unit length. You could just renormalise, but the end result would be an interpolation that isn t at constant speed, because you are going at constant speed along the straight line which isn t the same as constant speed along the surface of the sphere. Shomake introduced Spherical Linear Interpolation (SLERP) which interpolates based on the angle at the centre. Computer Animation 7

Calculate the angle between the 2 (4D) quaternions q1 and q2 (θ) (ese 4D dot product) and then interpolate the sin of θ: q 1 sin((1" t)#) sin# +q 2 sin(t#) sin# The quaterions [s, v] and [-s, -v] specify the same rotation, so 2 quaternions on the opposite sides of the hypersphere are the same rotation. Before doing SLERP we project the 2 quaternions onto the same side If cos θ < 0 negate q2. Shoemake also introduced a method of spline interpolation based on DeCasteljau s method of calculating Bezier splines Human Character Animation Character animation is normally divided into Body animation and Facial animation each of which uses different techniques. Within each there are a number of important topics: Body Animation Skeletal Animation Skinning Motion Capture Facial Animation Morph Targets Facial Bones Facial Motion Capture Skeletal Animation The fundamental aspect of human body motion is the motion of the skeleton. To a first approximation this is the motion of rigid bones linked by rotational joints (the terms joints and bones are often used interchangeably in animation, though of course they mean something different the same data structure is normally used to represent both), I will discuss other elements of body motion such as muscle and fat briefly later, Computer Animation 8

Circles are rotational joints lines are rigid links (bones). Joints are represented as rotations. The red circle is the root, the position and rotation offset from the origin. The root is (normally) the only element of the skeleton that has a translation. The character is animated by rotating joints and translating and rotating the root. The position of a bone is calculated by concatenating rotations and offsets, this process is called Forward kinematics. First you choose a position on a bone (the end point). This position is rotated by the rotation of the joint above the bone. Translate by the length (offset) of the parent bone and then rotate by its joint. Go up it its parent and iterate until you get to the root. Rotate and translate by the root position. P 2 = R0(R 1(O2 )+O1 )+ O0 Joints are represented as transforms. Bones have geometry attached in some way (see skinning below). As in most graphics systems transforms are heirarchical FK comes for free. Joints are generally represented as full 3 degrees of freedom quaternion rotations but human joints can t handle that range. Either you build rotation limits into the animation system or you can rely on the methods generating joints angles to give reasonable values (as motion capture normally will). Computer Animation 9

Inverse Kinematics Forward kinematics is a simple and powerful system, however, it can be fiddly to animate with. If you want to make sure that a hand is in contact with an object it can be difficult. For example, when animating you often want to do things like make a character s hand touch a door handle. Trying to get the joint angles right so as to accurately place the hand can be a long and difficult process. Inverse kinematics is a way of doing this automatically so that you can animate in terms of hand and foot positions rather than joint angles. Given a desired position for a part of the body (end effector) work out the required joint angles to get it there (in the above diagram, given Pt what are R0 and R1?). Skinning A skeleton is a great way of animating a character but it doesn t necessarily look very realistic when rendered. Need to add a graphical skin around the character. The simplest way is to make each bone a transform and hang a separate piece of geometry off each bone. OK but body is broken up (how most games worked 10 years ago). We want to represent a character as a single smooth mesh (a skin ). This should deform smoothly based on the motion of the skeleton. The mesh is handled on a vertex by vertex basis. Each vertex can be associated with more than one bone.the effect on each vertex is a combination of the transformations of the different bones. The effect of a bone on a vertex is specified by a weight, a number between 0 and 1. All weights on a vertex sum to 1. The vertices are transformed individually by their associated bones. The resulting position is a weighted sum of the individual joint transforms. T(v! i )= wijr j(vi ) j"joints A Character is generally rigged with the skeleton in a default pose, called the bind pose, but not necessarily zero rotation on each bone. If the skeleton is in the bind pose the mesh should be in its default location. If the bind pose isn t zero rotation you need to subtract off the inverse bind pose. Skinning is well suited to implementing in a shader. The bone weights are passed in as vertex attributes and an array of joint transforms is passed in as a uniform variable. The shader transforms each vertex individually by each transforms and then Computer Animation 10

adds together the results multiplied by the weights. In order to limit the number of vertex attributes we normally have a limit of 4 bones per vertex and use a vec4 to represent the bone weights. This means you also need to know which bones correspond to which weights, so you also have a second vec4 attribute specifying bone indices. This is an example of a GLSL shader to do skinning. Here are the variables: // use a uniform variable for the bone transformations uniform mat4 Transforms[58]; // use an attribute for the bone weights for each vertex // this is a vec4 so you can only have 4 bone weights attribute vec4 Weights; // you need another attribute to tell you which bones // the weights correspond to attribute vec4 MatrixIndices; And here is the code to do the transforming: // build up a transform matrix by adding up the transform // matrices for each bone multiplied by the weights mat4 transform = Weights.x*Transforms[int(round(MatrixIndices.x))]; transform += Weights.y*Transforms[int(round(MatrixIndices.y))]; transform += Weights.z*Transforms[int(round(MatrixIndices.x))]; transform += Weights.w*Transforms[int(round(MatrixIndices.w))]; // multiply the vertex position by this transform gl_position = transform *gl_vertex; // do the same for your normals normal = vec3(transform*vec4(gl_normal,0.0)); The deformation of a human body doesn t just depend on the motion of the skeleton. The movement of muscle and fat also affect the appearance. These soft tissues need different techniques from rigid bones. More advanced character animation systems use multiple layers to model skeleton, muscle and fat. These could use geometric methods (e.g. free form deformations based on NURBS) or simulation methods (model physical properties of fat and muscle using physics engines). Hair is also normally modeled using physics simulation. Facial Animation The face doesn t have a common underlying structure like a skeleton. Faces are generally animated as meshes of vertices, either by animate by moving individual vertices but also using a number of types of rig. Morph targets are one of the most popular methods. Have a number of facial expressions, each represented by a separate mesh. Each of these meshes must have the same number of vertices as the original mesh but with different positions. Build new facial expressions out of these base expressions (called Morph Targets). Computer Animation 11

You smoothly blend between targets. Give each target a weight between 0 and 1 and do a weighted sum of the vertices in all the targets to get the output mesh: v i =! w v t ti t" morph_targets ;! w = 1 t In the previous formula the weights have to sum to 1. If they don t you are adding together the positions of the verteces and the heads will grow or shrink. If subtract a neutral mesh from all the targets you can lift the restriction because you are adding together differences not absolute positions. Can allow extreme versions of a target or you can have two complete morph targets simultaneously (e.g. a smile together with closed eyes. $ v i = v 0i + w t (v ti " v 0i ) t #morph_targets Morph targets are a good low level animation technique. Also need ways of choosing morph targets. You could let the animator choose (nothing wrong with that) but there are also more principled ways. Psychologist Paul Eckman defines a set of six universal human emotions (Joy, sadness, surprise, anger, disgust, fear), which he called the Basic emotions. All are independent of culture and each has a distinctive facial expression. They are a common basis for Morph targets but can be very unsubtle. An important problem is how to animate people talking. In particular how to animate appropriate mouth shapes for what is being said (Lip-sync). Each sound (phoneme) has a distinctive mouth shape we can create a morph target for each sound (visemes). Analyse the speech or text into phonemes (automatically done by text to speech engine), match phonemes to visemes and generate morph target weights. This is very hard to do well (I ve never seen it done perfectly). Speech and mouth shapes are more complex than phonemes and visemes e.g. running one word into another but we don t have that many better methods so it ll have to do for now. There s plenty more to facial animation than morph targets, often related to body animation techniques: Facial bones Muscle models Facial Action Parameters Facial Motion Capture Computer Animation 12

Facial bones are similar to bones in body animation. A set of underlying objects that can be moved to control the mesh. Each bone affects a number of vertices with weights in a similar way to smooth skinning for body animation. Facial bones essentially use the same mechanisms as skeletal animation and skinning. The main difference is that facial bones do not correspond to any real structures. Facial bones are normally animated by translation rather than rotation as it is easier. Very useful as it means you only have one method in your animation code (one shader). Morphs are very convenient from an animator point of view, but bones are easier in the engine. You can actually convert morph animations into bone animations. It is a big linear algebra matrix solver which can be done offline. A more principled approach is to model each of the muscles of the face. In fact this can be done using one of the techniques just discussed. Each muscle could have a morph target, or a bone, or there could be a more complex physical simulation as mentioned for multi-layered body animation. Paul Eckman (again) invented a system of classifying facial expressions called facial action parameters which is used for psychologists to observe expressions in people. It consists of a number of parameters each representing a minimal degree of freedom of the face. These parameters can be used for animation. FAPs really correspond to the underlying muscles so they are basically a standardised muscle model. Again they can be implemented as morph targets or bones. Motion Capture Keyframe animation is based on sets of movement data which can come from one of two sources hand animation or motion capture. Hand animation tends to be very expressive but have a less realistic more cartoony stile. It is easy to get exactly what you want with hand animated data and to tweak it to your requirements. Motion capture can give you potentially very realistic motion but is often ruined by noise, bad handling etc. It can also be very tricky to work with. Which you choose depends what you want out of a game. Motion capture is a general terms for technologies that can record the full 3D motion of the human body. There are many different types of motion capture. Magnetic: Put magnetic transmitters on the body Have a base station that measures relative positions Very accurate but expensive Mechanical: Put strain gauges etc. on the body Self contained (less constrained by area in which you do it) Can directly output joint angles Bulky, it can be uncomfortable and constraining to wear resulting in less realistic motion (lighter weight systems have recently been developed) Optical: Put coloured or reflective balls (markers) on the body Lightweight, Cheap Use infra-red to avoid problems of colour Problems of occlusion (markers being blocked from the cameras by other parts of the body) this is partly solved by using multiple cameras Commonly used Markerless Optical: Just point a camera at some one and figure out their motion Almost perfect in theory Very, very, difficult computer vision issues, so still very limited Computer Animation 13

Still at the stage of research prototypes (though a commercial system was released last year) Motion capture can also be used for facial movement. Again we can capture the movement of an actor can be captured and applied to a character in a similar way to body motion capture. Body motion capture relies on putting markers on the body and recording their movement but generally these are too bulky to use on the face. The only real option is to use optical methods. Markerless systems tend to work better for facial capture as there are less problems of occlusion and their are more obvious features on the face (eyes, mouth, nose). They do, however, have problems if you move or rotate your head too much. A Motion Capture Shoot Performing a motion capture shoot involves the following steps: Plan the motions to capture Prepare the actors: Rehearsal etc. Do the capture Post-process Export Apply to a character Planning Planning the shoot well is very important. Motion Capture is expensive and you need to make sure you get what you need first time. You need to know all the motion that you will need; make sure the motions can easily transition into each other. Generally you make motions lead in/out to a standard pose and you capture all the necessary filler motion to do transitions. The motion can t be too subtle as the nuances will be lost in the capture process. Need to think carefully about how it will be used in a game, you will need: Character Actions Responses to Player input Idling Preparing the Actors You need to rehearse the actors. Generally needs less preparation than full on film. It is a very different way of acting with more focus of physical actions. You don t have a face or even hands and the performance will be mapped onto a very different looking character. The Capture Generally you have to do calibration steps Calibrate the space/cameras Calibrate the character model You normally capture in small chunks to avoid massive file sizes. Modern tools have good real time visualizations. Post-processing The data you get has lots of issues to deal with Noisy Missing markers Occlusion Optical markers are generally unlabeled (you don t know which one is which) Computer Animation 14

Post processing can be quite a long and difficult process involving: Reconstruct marker positions from the camera views (done automcatically) Label Markers (partially automated but flakey, often requiring a lot of correction Correct errors, fill in occluded sections and filter out noise (some of this can be automated) Apply a skeleton model Fill in gaps Export You will then need to export it to a file format that is accepted by a 3D modeling tool such as 3DS max or Maya. There are two basic types of format. Marker based formats include the raw positions of the markers e.g..csm (Max),.c3d (vicon) Skeleton based formats store the joint rotations. They generally include both a skeleton definition and motion data. e,g,.bvh (biovision),.amc/.asf (acclaim) Applying the data to a character model This is done in a 3D animation tool such as 3DS Max, Motion Builder, Maya. You use an existing skinned character and may need to do some retargeting to make it fit the character s skeleton. You then re-export it into a different format to get the character into a game e.g. use collada or fbx formats which include animation. Using Motion Capture in a game You need to take some linear motion data and turn it into something interactive and responsive. (actually this applies to any motion data, also hand animated data). For cut scenes you can just play back long sections of motion data but for in game interaction you need a lot more. Motion capture is inherently inflexible compared to procedurally generated motion: on a basic level all you can do is play it back. But you need to create animation that is appropriate to unforeseen game situations, to achieve this you need to do real time motion editing. Motion Editing Real time motion editing is the manipulation of motion data using one of many possible algorithms to achieve a variety of possible effects: Transitioning and sequencing play motions in a new order and make it look smooth Blend together different motions Constraint based editing transform a motion to satisfy constraints (IK) Change the style General Parametrization Further Reading Real-time 3D Character Animation Nik Lever Focal Press Very good, but only handles characters Advanced Animation and Rendering Techniques: Theory and Practice Alan Watt and Mark Watt Addison-Wesley More general but sometimes hard to follow HS Ko, KJ Choi, MG Choi, S Tak, B. choe and OY Song. Research Problems in Creating Digital Actors Eurographics State of the Art Report 2003 K. Shoemake, Animating rotations with quaternion curves, ACM SIGGRAPH 1985 pp245-254 Many of the topics (particularly quaternions) are covered well in Graphics Gems and Game Programming Gems) Computer Animation 15