SFM Porn Tutorial 2. Reactive motion.

This is the second part of the tutorial I posted the other day and is where I actually wanted to finish the first one, but it was a bit massive so I split it up. Probably the last tutorial for a bit, back to sexxors.

In this tutorial we will look at taking the blocked animation from the first tutorial and making Tracers reactions less robotic and mismatched. As I mentioned, all tutorial 1 dealt with was blocking our animation and there are lots of things we can do to make it look better. One of the main things is to make it so Tracer seems to react to what’s happening, rather than just moving in sequence.

If you want to follow along I have included a link to the result of tutorial 1, a Source Filmmaker .dmx containing the 3 key frame loop, you can then open this file in SFM:

You can get it here.

In order to use this dmx you will need to have the necessary models:

With those installed you should be able to load the scene and see our blocked loop animation. It can also be viewed here.

At the end of the tutorial you can also find dmx for the loop created in this tutorial; you will need the same assets (Tracer / Francis and Barbells room pack)

Recap

So to briefly recap our process we first load and pose our models, picking a neutral starting point (the back end of a thrust is usually a good one). Next we determine our loop length and pose our models at the new point in time on our graph editor timeline. We can then copy our start key frames to a later point in our time line, in this case 1.6 seconds, to get our loop. Again remember we were only interested in the rough motion.

Reactive Motion

However now that we have that we want to make it look better! Currently it is very robotic, they move in perfect sequence and that always looks wrong to our eyes. There is also the fact the rest of their body’s don’t move at all. So the first thing we want to do is have Tracer react properly to Francis’ motion and the best way to do that is to have her not mover until some force would have made her move; in this case Francis. To make this easier we will make our loop cover more than one cycle. This gives us another sequence to play with, and allows us to go past the time frame of the single loop (even if we never actually use it) while still being able to see our motion.

To do this we will simply copy and paste our entire loop, see the image below:

1. Expand \ Select our rig body for both models, put our play head at the 1.6 second key frame.

2. Now select all our key frames at 0 seconds then hold shift and select our frames at 1.6 seconds, selecting all of our current frames. Next we want to ctrl-c \ ctrl-v to copy and paste our key frames. Remember that SFM will generally paste from the location of the play head. Notice that because our start and end frames are the same, we shouldn’t see any actual change in our models position.

3. Lastly you may recall in our first tutorial when we added key frames we got some weird motion, and we may get that again. So to ensure we don’t we want to select all our body key frames across both our loops, at 5 points in the time line, and click on spline to even out our curves.

You should now have a nice smooth transition through two loop cycles, albeit not very natural looking.

An aside: Many animations you see are built off this idea. A core loop is built and edited, then variation is added to make it appear more natural. But nearly all SFM porn animations come from this idea of a repeated base loop.

One of the other benefits is we now have a copy of our loop, and we can break and play with one of the loops without ruining our earlier work. And that is very useful, because it is exactly what we are going to do.

So what we want to do is make Tracer react at the point when Francis first hits her, essentially his hips push hers forward, while at the moment she starts moving immediately. While we could just guess where that happens with our two loops we can mess with the first one to make it a bit easier.

Select Traver’s RigBody, and copy her key frames at time 0. Now paste those frames over the frames at the 1.6 second mark. This will essentially remove Tracers animation from our first loop cycle. While we are here lets spline again just to make sure she doesn’t move during this first loop by selecting all her key frames and pressing the spline button.

Now we don’t need to guess, we can scrub through our timeline and see the point where Francis’ hips push into hers.

Here we can see it happens at around 0.45 seconds. Again this is not an exact science, there may be reasons to have the point of impact later or sooner (maybe she is moving with him rather than waiting?) so play around.

Now we have the point where we want to have Tracer start to move forward, how do we set that position? Well we already have; it is her starting point. The change we are making is having her forward motion be from 0.45 – 1.6 rather than 0 – 1.6. So we can easily set this up by simply copying our key frames from 0 to 0.45.

Now we are just need to put Tracers motion back in. Lucky we have that second loop! Select Tracers key frames from the middle of the second loop, at approx. 2.4 seconds, and copy them over the frames at ~1.6 seconds. Now I bet you know what we do next. That’s right, select them all and spline!

Now we are getting closer, and our loop should look something like this.

We still have a couple problems though, firstly it only applies to our first cycle. But our other problem is she doesn’t move much before he bumps into her. If you splined you will see a little bit of motion, because spline is trying to make the transition to her forward motion smooth, but she is still pretty immobile, and we really want to fix that.

An aside: You may have noticed now that spline comes up a lot. If you look at one bone in the graph editor (say Tracers rig_spine_1) you will notice it consists of some lines. There are 6 in total, but in our animation only one moves, so you probably see it as 2, a blue line and a wavy red one (if you have made your own animation and moved the spine differently you may see more, or if you haven’t moved that spine you will just see a flat line). You may also make the connection between the colors shown when the rotation / movement circle is up, and realize that the red rotation is the one that moves the most. The red line is a representation of that movement, and as you can see it is a nice smooth line with no sharp peaks or valleys. You may also notice a black dot at each of our key frames. Each of the tangent buttons changes how SFM draws the line between those points. Were we to select a key frame and choose the first button, Linear tangent, we would see the way the line reaches the key frame change and become much sharper. This would make the change in direction more sudden. While each tangent mode has its place, we nearly always want to have our motion be smooth, and spline is the one that attempts to smooth out the points, making the transitions between each key frame fluid. While we won’t be going into tangents in greater detail in this tutorial it is useful information. For now the understanding that “spline smooth’s things out” is enough.

So now we have probably our most complicated idea. We need to use the space in our second loop, because we want tracer to be moving backwards until she is moving forwards, and that means that her backward motion needs to continue across our two loops. This isn’t as hard as it sounds.

We know where our second loop starts, and it starts in the same way as our first loop did. We also know where we want our Tracer motion to start, so we need to bring these 2 things together.

Here we have the first half of our first loop (1), and at a distance in from the start we have our new moving point for Tracers motion (2). What we want to do is replicate this in our second loop (3) and get our current new start point into it (4).

Since we want these 2 points to be the same, we can actually do this pretty easily. Just put your play head at the start of the SECOND loop (approx. 1.5 seconds). Now select both our 0 second key frames and our new key frames at 0.45 (2). Next we copy with ctrl-c, and paste with ctrl-v. Again remember that SFM pastes at the play head. We should now have a timeline that looks like this:

You may notice that our curves look pretty janky, so I am sure by now you can figure out what to do (Hint: select all key frames and spline).

Our resulting video should look something like this.

Now we are getting somewhere. In this instance what we have now is actually pretty reasonable. Because spline is trying to smooth out the curve, it create a graded move back that starts quickly then slows down. There are lots of situations where we want this to happen, and it is a necessary technique for creating graded motion (i.e. making a thrust faster at the end).

However for this tutorial I want to continue to the last step and we will cover grading an animation at a later time. So at the moment we still have our same old start and end points, but we don’t really want them anymore. Instead we want it to be the “new” neutral position for Tracer: the position she is in where the two loops meet. Also we do still want to be able to work with a single “loop” if needed, and it is easier when dealing with full transition to have a demarcated end point for both models at the same time . The problem here is our curves. Our key frames through the end of the loop pull our curve out of line; it works ok in this instance but it often doesn’t.

What we want to do is reset the end of our loop, and again this is quite easy to do. Firstly ensure the play head is on the key frames in the middle of the animation (in our Tracer example that is at approx. 1.6 seconds). Next select Tracers key frames at the middle point of our two loops (all the frames belonging to RigBody.

Now delete them. Don’t worry its OK. When we do this we remove the bounds on the motion lines of our graph, and you will see that they straighten out. Tracer’s motion now runs smoothly back from the apex of our first loop, to where she starts to move forward.

However we still want to mark the end of our loop, so now press the M key, and reset that key frame position. We now have our end of loop back, with the new line positions saved.

Only one thing left. We need to make sure that she starts and ends at the same point too. So grab those middle frames, copy them, and paste them over the 0 second and very end frames of the animation.

We have now offset Tracers motion so she moves properly and reacts to Francis motion, without looking like she is locked in step.

She should look a bit like this

We still are not finished here and there are still a lot of little things (and a couple big things) we can do to make her motion more fluid, but I will stop this tutorial here for now, as I feel this is an important concept to get the hang of first.

You can find the dmx file for the end result HERE.

So to recap creating reactive motion:

  • Double up your loop. This gives you more motion time to work with.
  • Find the point you want you slave model to start reacting, using whatever method works for you (eyeballing, flattening the animation and seeing, guessing).
  • Copy your initial key frames to this position.
  • Copy from your 0 seconds to your new motion start position, and paste it at the start of the second loop.
  • Delete the key frames from the middle of your two loops to correct the motion curves.
  • Recreate new key frames at the mid-point using the M key.
  • Replace the start and end key frames with your new middle ones.
  • Spline lots

That will do it for this tutorial again if you have any feedback or questions drop me a line at http://kawaiidetectiveenthusiast.tumblr.com/ and I will be happy to help. Remember that while we are using a specific motion here, the concepts I describe are the ones I use for the vast majority of my loop basis, regardless of position or deviant act.