Next topic we discuss is, Spatial Key Framing for character animation. And, the work we introduce here was published as Spatial Key Framing for Performance-driven Animation. So the motivation here is that creation of character animation is tedious and difficult. So here's a list of, popular techniques, so Key framing, Motion capture, Physics and Scripting. Keyframe is by way the most popular technique. So you set key poses of each time frame. So, the problem we want to address here is the creation of character animation is tedious and difficult. Here is a list of current popular techniques so Key framing, Motion capture, Physics, and Scripting. So by way, the most popular technique is key framing. So you get a character and for each time you specify a pose like time zero, this pose, time one, this pose, time two, this pose. So individual key framing. But however, this is very difficult to do. Especially, for novice users to get a smooth animation using this key framing. If you do it poorly, it's like a robotic motion. And then another popular technique is motion capture. You can directly record body motion using the tracking systems. However this one requires special device, special space, and also scale- skilled actors which is difficult. And physics simulation is also useful but not good for designing character animation. And scripting is also useful for robotic motion, like change angle this to change this angle. However, this is not good for expressive character animation. So what we want to do is easily sketch or create, you know dynamic firm motions or character. So the basic idea is very simple. We believe that the best, easiest way is to directly manipulate a character in front of the camera. And then press record, and then manipulate, and then stop and play back and do the same thing. So direct recording of performers should be the best way to do it. One problem here is that the typical input device is very limited degree of freedom. So for example, if you use a mouse, you only have X and Y inputs, two dimensional inputs. However, character usually has a high degree of freedom. So each joint has three degrees of rotation freedom, and you have many many joints. So you have to control many joints with single mouse, which can be very difficult for a performance-based recording. So our proposal is to use spatial key-framing, so user or designer first specifies or prepares key poses in the 3D space and then blend them, depending on the control handle. So let me show you a demo. So, here is a character in the 3D space and then we make an animation of this character. And as I said, typical approach is key framing. You know, this time, this pose, next time, this pose, next time, this pose and so on. And it's very, very tedious to do this for a long animation sequence. So, our process is to directly record the motion. But difficult-, if but, if you use one by one, it's very tedious. If you can only head, arm, or leg, but you cannot manipulate all of them together. So our approach is to use a predefined key frame. So you say, this pose is associated with this position, and then next pose is associated with this position. And then, so you have two key frames. So, standard key frames associate with timeline. But here, key frames are associated with spatial locations. And by clicking you can jump to the key frames and by dragging you can plan these too. So now, you can already control three joints by a single mass. An interesting point here, is that you can add more, and more key poses very easily. So, you now have three key poses. And they blend together, and you get a reasonably interesting motion already. And you can add more, and more operation of key poses, like a kick and kick and so on. All right, let me show you a couple more examples. So, so here, again, individual poses are not so complicated. However, if you hide, and then start moving around the ball, now you can make this teddy bear doing the juggling, just by using a two-dimensional mouse. And then another example is this one. So again, each individual poses are not so expressive. However, as you start moving them around, you can make him dance like this way. So here you know, your hand motion is directly appears in the character motion, so that the resulting motion is very expressive. So of course, you can record this motion: you know, one, two, one, two, mm. So now you can get this animation and then now you get a motion. So you can see it from many different locations. Okay. Now let me show you a couple more examples. So here is a kicking motion. So you have many, many couple of key poses. And then by dragging this red ball you can make teddy bear make a high kick, as well or low kick. And this is a mushroom, jumping, so you have five or six key poses and then by directly manipulating red ball you can make this animation. [BLANK_AUDIO] And this is a teddy bear in trouble, I think six key poses. And then, you know, he says no first, and they get idea, and be happy. So, you can make this kind of expressive motion by using your hand motion integrated into the final movie. [BLANK_AUDIO] Here these eyeballs are also have a separate joint so you can control their rotation. [BLANK_AUDIO] Okay, so let me briefly describe the algorithm to do this. So input to this system is handle coordinates. So, you have 2D mouse, and then you control the red ball position using a mouse. And the output is the orientation of each joint. So, you have many rotation angles. So, the question here is how to represent orientation angle, rotation joint angles. And there are a couple ways to represent joint angles like euler angles or quaternions but here we use a rotation matrix, so nine elements. Like this way, so each joint has a three by three matrix so these represents also on our axis for each joint. And then what we need to control these nine parameters for each joint depending on the user input. So let's take this joint. So, this joint has suppose we have three special key frames, and then each key frame has this nine parameters for each joint. And then as user specifies the new handle position and then we need to compute three by three matrix for this position for this joint. To do this we basically blend these nearby three key poses. So you won't have to do this. Let's take, we compute interpolation for individual element or individual entry of these three by three matrix. So this is just a simple scalar value interpolation and here we use a technique called radial basis function interpolation. So this is a scattered data interpolation using radial basis functions. This is a kind of standout technique and you can use other possible interpolation techniques. But this is very easy to implement, and easy to use. The idea is very simple. So you have, suppose for example you have three scalar values with specific location. And then for each location, we have a kernel function. Kernel function, and then we eh, compute most appropriate waiting or coefficients for each kernels. And then just by adding them together, you will get a very smooth, interpolating function. And if you want to know more, you can, I recommend you to take out paper by Turk in 2002. So after computing this up line, this scalar value interpolation for individual elements, you have nine elements in a three by three matrix. But unfortunately, if you apply interpolation independently to these entries in resulting matrix, is not necessarily orthonormal, you know. Rotation matrix needs to be, orthonormal. And also perpendicular each other and also the directions should be equal to one. So after that we apply orthonomalization operation to these three by three matrix to get this one. I always skip details of this orthonormalization but there's a standard approach. Okay, so here's a summary. So we introduce spatial key-framing for creating character animation quickly and easily. As a user defines key poses in the screen space, and then the system automatically blends nearby key poses. In order to do so, we use rotation matrix and then we use radial basis function interpolation for each element in the matrix. So to learn more, original paper was published as Spatial Keyframing for Performance-driven Animation, and if you want to know more about interpolation by radial basis function, There's a paper titled Modeling with implicit surfaces that interpolate. Here's an example. So user specify positions in 3D space. And then this technique generates a very beautiful smooth surface interpolating these points. And interpolation of 3D angles is a popular topic discussion in graphics community. And the popular technique used is Quaternion interpretation. And then I recommend you take a look at original paper published in SIGGRAPH 85. Thank you.