# Inbetweening

[](https://www.paypal.com/donate?hosted_button_id=HNR23JTXANYSQ) [](https://liberapay.com/anderson/donate)  
Inbetweening (*abbreviated as i10g*) is a WYSIWYG (What You See Is What You Get) animation workbench for FreeCAD. It enables you to save the current placement, visibility and color of an assembly, composed of [`App:::Link`](https://wiki.freecadweb.org/Std_LinkMake) objects, as an animation "step". The workbench interpolates between steps to create smooth transitions. It can be used to create exploded-view animations.

*Example of a GIF exported using i10g*
> **If you find this workbench useful, please consider supporting my work on [Liberapay](https://liberapay.com/anderson/donate) or [PayPal](https://www.paypal.com/donate?hosted_button_id=HNR23JTXANYSQ). Starring and sharing also helps! Thanks!**
## Features
- Create transitions between different states of visibility, placement and color
- Preview animation in realtime
- Export images, videos and gifs
> Note: Object rotation is simplified to the shorter path
## Getting Started
### Prerequisites
- [FreeCAD 0.19](https://www.freecadweb.org/downloads.php)
- [FFmpeg 4.2.2](https://www.johnvansickle.com/ffmpeg/old-releases/)
> If you have problems with the exported video/GIF, please check your ffmpeg version. For me `4.3.2` (bundled with the flatpak build) and the latest `4.4` version produce artifacts in the outputed GIF or doesn't have support for the parameter `image2pipe`
*Tested on linux*
### Installing
#### Python pip
*Please check if the current python environment is the same used in your installation of FreeCAD*
```
python3 -m pip install i10g
```
or
```
python3 -m pip install https://github.com/anderson-/inbetweening/archive/refs/heads/main.zip
```
#### Linux
```
wget -qO- https://github.com/anderson-/inbetweening/archive/refs/heads/main.zip | busybox unzip -d ~/.FreeCAD/Mod -
```
## Usage
Before starting, I reccommend to backup your work, and consider creating an extra file for the main assembly, importing each part as an [`App::Link`](https://wiki.freecadweb.org/App_Link) by using the [`Std LinkMake`](https://wiki.freecadweb.org/Std_LinkMake) button.
### Toolbar Overview
 Add an `Animation` folder object to the current document, the current scene is set as the first step of the animation
 Create an example document
 Adds another step to the end of the current animation
> In the tree view  represents the current selected step, the other steps should have the icon 
 Duplicate the current selected step
 Updates the selected step to reflect the current scene






Controls the animation preview
 Export the current view using parameters from `Animation` folder
 Export video file using parameters from `Animation` folder
 Export GIF file using parameters from `Animation` folder
 Abort the export process
### Example
> This example can be created automagically using the  button
1. Create a `Part::Box`, add it to a `App::Part`, and make it not visible
2. Create 3 [`App::Link`](https://wiki.freecadweb.org/App_Link), and position them side by side, this will be the first animation step
3. Select the i10g workbench and click  to add an `Animation` folder, it should already set the current scene as the first step

*First step*
4. Move all the cubes, 10mm up
5. Set `Visibility = False` for the first one
6. For the second one:
- Set `OverrideMaterial = True`
- Change `ShapeMaterial` color to red
6. Rotate the third one by 90°

*Second step*
7. Click  to add a step
8. Click  to preview the animation
9. Select `Animation` folder in the tree, set `FFmpeg` path and set `Resolution` to `426x240`
10. Click  to export a GIF file

*Result*
**Example of a 4k/2160p (3840x2160) 60fps video export:** https://www.youtube.com/watch?v=RZUoOqqV1uE
### Development
To reload the workbench for easy development, use the folowing command in the python console:
```python
Gui.activateWorkbench('Inbetweening'); App.DEV=1; Gui.runCommand('ReloadWorkbench')
```
## Acknowledgments
Special thanks to Lorenz Lechner - [@looooo](https://github.com/looooo) for his work on the [workbench_starterkit
](https://github.com/FreeCAD/freecad.workbench_starterkit) and [freecad.gears](https://github.com/looooo/freecad.gears)