Select Page

VFX Workflow: Start to Finish

Last week I ran into some problems with a project at work that required me to have just basic knowledge of rigging. After burning over an hour watching and rewatching tutorials, and, because I was under a tight deadline, I got frustrated and eventually just edited the mesh directly to get a basic pose.


Now that I’ve hit the deadline and delivered the project, I spent the following weekend to fix my problem once and for all.

I started with a basic mesh comprised of 7 different primitives.

Which is fine, for arriving at a character shape fairly quickly, but trash when it actually comes time to rig and animate several primitives as if they were one. So once I got my turtle shape, I joined 2 primitives at a time, and joined up the meshes as best I could. Pair by pair, until I had a turtle mesh and a shell mesh. In hindsight, I would have just joined up the shell and the turtle to get one mesh, but that’s what this whole project was for: learning. Once I had my meshes joined, I marked my seams, and UV unwrapped. Then it was time for texture painting!

Texture Painting

Not the best UV unwrap, but it works for this project.


Once my turtle was painted, it was time to rig. Now that the pressure was off, I had an opportunity to actually learn how to properly built a rig, set up IK constraints, and orient joints using pole targets. Woo!

Motion Tracking

Now that I had my rig all finished, I was ready to animate. And my IK constraints made it WAY easier to set a few keyframes and get a halfway decent animation. Next, motion tracking.

This one actually took me a few hours because I was having to relearn how Blender’s requirements for reconstruction. 1) Blender requires 8 continuous tracking points from the first frame to the last to even have enough data to reconstruct the scene. 2) the average solve error needs to be 0.3 pixels to get an accurate track. My first try resulted in a solve error of 35.6 pixels. So eventually, after learning the requirements, trying some addons, and manually helping it along, I eventually whittled the solve error down to 1.4. Close… Technically usable, but still not the best. In the end, I learned a TON from building this little guy from scratch. So without further ado, I present to you, Shelly.

Hopefully this helped someone. Thanks for reading!

Check out more articles

Create a Custom API Endpoint in WordPress

Creating a custom endpoint in WordPress to check for plugin updates involves several steps. This process includes setting up a custom REST API endpoint, creating a function to handle requests to this endpoint, and ensuring that the response contains the necessary...

Deploy WordPress Updates from a Private Repository

To push code to a private repository and trigger a pending WordPress update badge, you need to follow a systematic approach involving version control, continuous integration/deployment, and the appropriate use of WordPress hooks and filters. Here’s a step-by-step...

How to Generate a Ranger Config File

ranger --copy-config=all This will copy all the default config files from /usr/local/lib so you can make edits without messing anything up. Huge shout out to for explaining this and so much more. Took me a...

First Open Source Contribution

Surprise! I genuinely did not plan on making my first ever open source contribution today. In fact, I didn't plan on a lot of things happening this week at all. I recently got an awesome opportunity to work on a site that is being hosted on a platform called Pantheon,...

How to Exclude Specific Posts and Pages from WP_QUERY

For the sake of having something to work with, let's suppose we've got the following query:In this query, inside the $args array, there's a special parameter that allows you to exclude specific posts and pages from the query. This parameter is called post__not_in and...

Configure SSH For Password-less Connections

Preamble I'm slightly embarrassed to admit this, but it was a long time before I figured out how amazing this little file is and how exactly to put it to good use. The file I'm talking about is the SSH config file. By default, when you first connect to a server via...

WordPress Site Stuck in Maintenance Mode

Plugin Error Code 500 During Update While I was updating a WordPress plugin locally, something happened on my local server to trigger a 500 error code as the plugin was updating. On the frontend, I refreshed the page and was greeted with "Briefly Unavailable for...

Creating a WordPress Plugin Downloader

How it Started I was recently tasked with the challenge of creating a WordPress theme generator. The idea being, instead of writing your style.css file from scratch, you'd be able to just answer a few simple questions about how you'd like your theme set up, and those...

Fix Audio on XFCE Chromebook

The Problem After moving from GalliumOS to Xubuntu, I noticed that playing YouTube videos on both Firefox and Chromium would result in decent playback for a few minutes, but suddenly the audio would turn into a solid beeping tone while the YouTube video displayed the...

Adjust Trackpad Sensitivity XFCE

xinput set-prop "Elan Touchpad" "Synaptics Finger" 1 1 1 What are the values 1 1 1? This sets the sensitivity as close to the original ChromeOS as possible. Larger numbers will decrease sensitivity of various aspects. I never looked into which individual value...

Looking for a place to host your next project or design?

Use this link to get your first 4 months of WP Engine for free: WP Engine – Plans (With 4 months free)