Stopify_01_Alpha.png

WELCOME đź‘‹

<aside> 👋 Welcome to the STOP-IFY Documentation! Here you’ll find everything you need to know about our Blender Addon for emulating stop-motion animation!

</aside>

INSTALLATION 🔨

Download


First, download the add-on from our website. You should have received an email with your download link after purchase. You can also access your add-on anytime by logging in to our store, where you’ll find the latest version of the STOP-IFY add-on.

Add-on Installation


In Blender, select “Install” in the Preferences panel. Then, navigate to the STOP-IFY .ZIP file that came with your order. After installing the add-on, please enable the add-on by checking the box to the left of the add-on name.

<aside> ❗ You do NOT need to unzip the .zip file when installing via blender’s preferences panel.

</aside>

Untitled

If installation is successful, the STOP-IFY panel will appear on the right-hand side of the 3D Viewport.

Untitled

USAGEđź’ˇ

Adding Objects


To apply a stop-motion filter to an object, it must first be added to STOP-IFY’s list of objects. This can be done by selecting any objects you wish to add, and then clicking the “+” button in the upper right hand of the add-on panel.

STOPIFY_AddObjects.gif

Applying the Filter


To apply the stop-motion filter, simply click “Apply Stopify”. This will apply (or re-apply) the filter to any unlocked objects. The intensity of the stop-motion effect is determined by the number value next to each of the objects in the panel. A value of “2” will result in an action skipping every other frame. A value of “3” will result in an object showing change on every third frame, and so on.

<aside> 💡 Note: All stepped values by default start on frame “0”. This means that objects with a stepped value of 2 will always experience change on even frames.

</aside>

Removing the Filter


The filter can easily be removed in two ways.

  1. Using the “Clear Stopify” operator at the bottom of the panel.
  2. Removing the Object from STOP-IFY via the “-” operator in the top right of the panel.

<aside> đź’ˇ Note: Locking an object will prevent the filter from being removed. It will also prevent the filter from being applied. Locked objects are essentially left in whatever state they were in prior to being locked.

</aside>

Muting Objects


Objects can be muted by toggling their “eyeball” icon in the add-on panel. When an object is muted, the underlying filter is still there, it just isn’t shown. Muting an object will also prevent the filter from showing in renders.

You can also toggle muting on every object simultaneously by using the “eyeball” icon to the right of the objects list.

Locking Objects


Objects can be locked by toggling their “lock” icon in the add-on panel. When an object is locked, STOP-IFY won’t apply or clear any filters from the object. This also prevents the object from being removed from the add-on. Locking is useful if you wish to preserve an object’s stop-motion effect while changing others.

You can also toggle locking on every object simultaneously by using the “lock” icon to the right of the objects list.

Keying Stepped Values


An object’s stepped value can be keyed such that it changes over time. We use this to change how stutter-y a character appears at different points throughout the scene. For example, it may be desirable to place a background character on “fours” so that they don’t draw a viewer’s eyes. But later when that character speaks, they should be placed on “twos” so that they aren’t too choppy.

Keyframes can be inserted by pressing “I” while hovering over the stepped value, or by right-clicking the stepped value and selecting “Insert Keyframe”

Here, Suzanne’s stepped value property has been changed from 2’s to 3’s.

Here, Suzanne’s stepped value property has been changed from 2’s to 3’s.

These Keyframes are stored on the active scene, and NOT on each object individually. This is done to prevent stepped value changes getting pushed down deep into the NLA tracks of each object. By keeping the action stored on the Scene Data-Block, we’re able to have all of our stepped value changes visible in the same place.

Untitled

<aside> ❗ You may want to change the keyframe types to “Constant” in order to change the stepped value on a specific frame.

</aside>

Object Synchronization


Issues can arise when objects change their stepped values at different times.

For example, If two objects were to go from “2’s” to “3’s” and back to “2’s”, but did so at different times, they could end up stepping on different numbered frames after the last transition. Being set to “3’s” for different lengths of time could make it so that the first object ends up changing every even frame while the second object changes every odd frame. STOP-IFY solves this problem with different synchronization methods.

The Global Synchronization Method can be set using the “Sync” drop-down above the “Apply Stopify” operator.

Sync All

STOP-IFY will ensure that objects with the same stepped value will always be stepping at the same time, regardless of any transitions they may have experienced prior. The “downside” to this method is that objects will transition slightly offset from where you may have specified.

<aside> 💡 For example, STOP-IFY ensures that objects on “3’s” will move on frames divisible by 3 (3, 6, 9, 11 …), while objects on “4’s” will always move on frames divisible by 4 (8, 12, 16, …). If you were to keyframe an object’s stepped value from “3’s” to “4’s” on frame 27, the change would be overridden to occur on frame 24, since that is the nearest frame wholly divisible by both 3 and 4.

</aside>

De-Sync All

STOP-IFY does not ensure that objects with the same value will step on the same frames. This results in more accurate transition frames, but can look strange if you have several objects stepping on opposite frames.

<aside> 💡 Using the above example, the change actually would happen on frame 27, with the object stepping every 4 frames after that (31, 35, 39, …)

</aside>

Custom Sync

By setting the Global Sync Method to “Custom”, you are able to specify the sync method for each object individually.

After setting the Global method to “Custom, you can toggle each object’s sync method using the “link” icon next to the object’s name in the add-on panel.

Shown here, the “Cone” object is De-Synced from the “Suzanne” and “Cube” objects.

Shown here, the “Cone” object is De-Synced from the “Suzanne” and “Cube” objects.

Protecting F-Curves & NLA Tracks


You can enable/disable the protection of locked NLA Tracks and F-Curves in the STOP-IFY add-on preferences.

Untitled

With “Ignore Locked NLA Tracks” turned on, any locked NLA Track will be ignored when applying the STOP-IFY filter effect. The same applies to locking specific F-Curves. “Ignore Locked F-Curves” is disabled by default, as some common add-ons lock and unlock f-curves as a part of their own tooling.

GOTCHAS ⚠️

The following are a few common “Gotchas” that you may run into when using STOP-IFY

Effect Looks Off After Changing Something


STOP-IFY does not automatically update the stop-motion effects on objects. If an object’s animation has changed, stepped values have changed, or NLA Strips have moved, you must re-apply STOP-IFY by clicking the “Apply Stopify” button.

<aside> ✅ Re-Apply STOP-IFY using the “Apply Stopify” operator.

</aside>

Action Duplication Conflict


Since STOP-IFY works on the action-level, re-using the same action across different NLA strips is not allowed. Allowing this would cause conflicts in the timing of stepped value transitions and a plethora of other sync issues. To Remedy this, STOP-IFY has a built in operator that can fix these conflicts by duplicating any doubly-referenced actions.

STOP-IFY will list the conflicting actions. This problem can be manually solved by deleting or duplicating the offending actions, or by simply using the built in operator.

STOP-IFY will list the conflicting actions. This problem can be manually solved by deleting or duplicating the offending actions, or by simply using the built in operator.

<aside> ✅ Fix: Duplicate or remove offending actions. You may also use STOP-IFY’s built in operator to fix conflicts.

</aside>

NLA Strip Playback Scale


STOP-IFY does not support changing the playback scale of NLA-Strips. This is simply due to the fact that playback scale can be set to a non-whole number value (wtf are we supposed to do with a playback scale of 1.29, you hooligan?).

<aside> âś… You can bake a scaled NLA strip, and then apply STOP-IFY

</aside>

Modifiers Are Affected


STOP-IFY affects all F-Curves of all actions referenced in an Object’s animation data. If you wish to protect specific animations such as keyframed modifier values, simply push those actions to a separate NLA Track and lock that track. By default, STOP-IFY ignores locked NLA Tracks. Alternatively, you can enable F-Curve locking and protect animations on a more granular level.

<aside> âś… Modifier keyframes can be excluded either by NLA Track Locking or F-Curve Locking

</aside>

NLA Fading Not Respected


Blend In and Blend Out properties of NLA strips, by default, are interpreted linearly. By default this isn’t stored as keyframes in an action, so we can’t touch it. You can either bake your animation first and then apply STOP-IFY, or you can used the “Animated Influence” NLA strip property and keyframe that instead.

<aside> âś… Bake blended NLA Strips before applying STOP-IFY

</aside>

Shape Keys


Currently, STOP-IFY affects the shape-keys of Curves and Meshes.

Therefore, if you have a character that uses both an armature rig and has shape-keys on it’s meshes, both the rig and the meshes will need to be added to STOP-IFY separately.

If you wish to disable this behavior, please see NLA Track and F-Curve locking.

<aside> ✅ Rigs and Meshes will need to be added to STOP-IFY separately. Adding an object to STOP-IFY does not apply STOP-IFY to it’s children, though they will inherit any transform-based stop-motion effects from their parent’s motion.

</aside>

WORKFLOW INTEGRATION 🔌


Add-on Operators are documented here in the event you’d like to further integrate STOP-IFY into your workflow.

<aside> 💡 All Operators feature an override parameter that essentially bypasses their poll function. This ensures that your beautiful python goes unencumbered by pesky “poll failed” errors. This does, however, mean that the operators can crash in certain scenarios if you aren’t careful.

</aside>

Operators