In the Fall of 2020, I built a simple, impractical ride animation rig with plans to put it on a track, build a small dark ride around it, and effectively build a simulated / pre-visualized ride out of it. Unfortunately, I never got around to it - between my themed land design project for TEA@UCF, general engineering schoolwork, and many other contributing factors, it fell by the wayside.

Now, post-graduation, I decided to refresh my animation brain by taking that simple rig, pulling it off of its tracks, and animating it to a POV video over the span of an afternoon.

Here it is:

Animation Process

Selecting & Preparing Media

The first step I took was the selection of media. After all, I couldn't animate to an empty void (though animating to just audio might be a fun challenge), so I needed something to look at and animate too - one of the more common scenarios for ride animation. Naturally, a video where it felt like *we* were the subject was critical, too - first person, mostly-unedited media where there was some sort of simple story felt like a good choice.

I initially looked at those "cat camera" videos, the ones where a cat owner straps a camera below the neck of a cat, who then goes about their outdoor adventures with an adorable perspective of paws running beside the camera. Unfortunately, I couldn't find one of these that quite felt *story* enough. Some had perspective issues (cats laying down and blocking the cameras), timing issues (cat sits around for 15 minutes doing nothing), or perspective issues (looking at a cats chin the entire time is less than enthralling). The thing that killed the best candidates, however, was the fact that cats really aren't predictable. I love them, but they're very chaotic, prone to distraction, and almost difficult to relate to when taken as a perspective. So, I moved on to another kind of animal, one known to be a bit more... friendly.

I found the below video while digging through "pet camera POV" results on youtube. Someone strapped this company's camera onto their dog, and the company decided it was a good idea for an ad. It definitely got me to watch their video, so I guess that part worked. 

This clip fulfilled most of my critera:

  • Good Perspective (back of a dog is pretty easy to understand, and we can use the dog's body/head as a direction guide for the RV motion)
  • Good Timing (it's pretty consistent pacing throughout, though maybe a little fast due to speed of dog)
  • Limited Editing (a title card, as well as trailing/leading brand cards, but easy enough to integrated into fly-position transitions)
  • Good Story (it's a dog who is really excited to go to the beach on their own. Very understandable).

This media did propose a few annoying challenges, too

  • It's very shaky (dogs backs roll/pitch/yaw a ton while running, and I bet the camera mount wasn't particularly sturdy)
  • That title card is from the dog's perspective, so I have to think about whether I want to animate that in, too
  • It's media from YouTube, so it's been compressed to hell and back

I decided to go with it, in spite of the challenges. Downloaded the video from YouTube, ran it through DaVinci Resolve to both stabilize it (trying to limit problem #1, to limited success) and split it into image frames for importing into Blender.

Environment Prep

I already had most of the modeling environment setup earlier - the ride vehicle rig itself being part of that. Adding a screen into it wouldn't involve much effort. Given the wide-angle lens of a GoPro camera, I thought that a spherical display would work well. Inserted a UV sphere, split it in half, reversed the normals (to use the inside of the screen), and hooked it up to an "emissive" render node with the image sequence as the color/albedo.

Unfortunately, it really, really distorts the image so that the dog's head takes up the majority of the center of the screen. From a first-person perspective, it looks... worse.

Changing to a typical, flat screen ended up being a more satisfying experience to program.

A note on the *intended* experience.

I'm not 100% certain on how this would work as an installation. You could set up a few ride vehicles side by side with the same projection surface, like Back to the Future: The Ride, or just have the one, or maybe stick the dome solution onto the front of the RV, but all of these solutions would likely require some reprogramming effort - and much better quality media.

Story Planning / Key Story Table

Before digging down into the tedious animation work, I wanted to block out a few critical moments to keep in mind as I went forward. I then created some simple, constant-interpolation animation work with these key moments. 

Frame Action Note
93  End of Into Footage   Be in "flight" position
255  Title Card   Leaning back, looking into the sky a little bit
319  Walking on Leash   Dog is now in motion, but calm. You're introduced a little to the rocking sensation of being on a dog's back, but it's not intense. Feeling of obedient energy - you're excited to run to the beach, you know what's about to happen, but you're a good boy. 
488  Unleashed   Dog launches forward, barreling towards his destination. Focus on initial rush of acceleration, that release of pent-up excitement 
539  Bouncing down stairs begins   It's two hops, but very excited. Cautious leap, as its going downstairs
561  Mid-stair hop   Dog is halfway down the stairs, but has to hop again. A landing that instantly follows-through into another leap
573  Stair hop complete   Dog has completed stairs. A heavier landing, but stays low in preparation for big fence leap
584  Fence Leap Begins   Dog pushes off the floor into a large leap, focus on airtime
608  Impact from fence leap   Heavy hit, but still gotta keep moving
631  Sharp turn to the left to go down more stairs   Roll with the turn
644  Short leap onto longer stairs   
650  Longer stairs   A small rumble - the dog is taking these stairs as steps instead of leaps, so it's a lot of low-frequency movements
700  End of long stairs   
710  Garden Section   This section involves a lot of low, "head chopper" clearances from bushes and trees. Dog ducks under them, so it might be wise to also involve some sort of ducking here, too
741  Big duck   Ducking underneath (and into) a bush just to save a second off of navigation time. A very excited dog. Pitch up, as if the RV is being brushed up by the tree passing over it
780  Left-side scrape with bush   Dog clips a brush here. RV should react to that by yawing a bit as if being brushed off the dogs back 
808  More stairs descent   Doggy is making his last steps down towards the beach via lots of small stair sections. Shorter stair sections are taken with small leaps, larger stair sections are done with short steps
957  Turning the corner to the ocean   Doggo can see the water now, and picks up speed. A straight shot towards the water. His stride increases in length, bouncing more as he proceeds
987  Last-minute course correction   Turns out the ocean is blocked by stones in that direction. Narrow left turn, sticking to the bushes 
1057  Long sequence of bouncing over many rocks on a beach   Be careful not to make it too rough / nauseating. Don't want another Shrek4D carriage sequence. Focus more on larger movements, like bounding over big rocks, instead of textural stuff.
1246  Dog is in the water   He's in the water, moving a little slower thanks to the shallow entry of the beach, but isn't stopped too much. 
1256  Wind-up for big leap   
1264  Big leap begins   
1274  Apex of big leap   
1292  Splashdown   

Tweening

From here, I worked to build out the details of motion in between each of these critial moments, including motion. Specific details like noise or even the dog's canter were mostly ignored for this step - such details would be added in a later step. Using Blender's drivers system, I could probably set up multiple inputs for each axes (noise, large moves, small moves) and then sum them in the driver to get the final axis value. I felt that was out of scope for this project, however.

One method I used for this process was to work one axis of animation at a time, one scene at a time. I'd limit myself to just one axis of motion, use the automatic "recording" keyframe functionality to shift as I stepped frame to frame, and then adjusting curves afterwards to ensure proper follow-through and sane physical limitations. Once I was satisfied with an axis, I re-enabled the others to see how they fit in, and then did some tweaks to make it all work smoothly together in a cohesive way.

Conclusions / Changes

I'm pretty satisfied with the result after only a few hours of work, especially after a while of not animating. However, there are already something I would've done differently...

  1. The media looks terrible up close. It's fine enough to program to, but there's no way it'd be fine to show off professionally. Such is limitations of free, simple projects. A solution would be to make my media on my own, at something like an 4k-8k resolution.
  2. The RV rig is sometimes a bit awkward to program. The biggest challenge that you can face with it is that the heave/pitch setup has to be puppeted together to get a satisfying motion sometimes - their movements can cancel out on the front/rear rows, leaving them effectively stationary. Unsatisfying. 
  3. I'd like to have slowed down the media a bit. At the current speed, it plays like you're attached to a really, really fast dog, as your perception of space is altered by the scale of the media. Slowing down the media would make it feel more like you're the size of the dog, and can much more easily understand and parse motion and media happening in front of you.
  4. Detail work. I'd love to incorporate the dog's canter properly into certain straightaways, cycling between each "paw" as it walks, but that's a lot of detail work for my limited time window. In addition, the pace of the dog might be outside of practical limits, or, even worse, outside of comfortable limits. Repeated motions that bounce guests back and forth over and over are not great for guest satisfaction.
  5. I didn't use each axis to its full potential. The main point of the ride system is its "infinite roll," which wouldn't be great to use in this media. Besides that, the lateral "strafe" motion I can produce could also be interesting, especially when used in conjunction with tweaking yaw at the same time to snap guests back and forth.

Regardless, I think it was a satisfying little project. A great afternoon spent, especially since I've been recovering from a cold for the past day and a half.