A plugin for After Effects and Blender that dynamically syncs precomps from AE into textures in Blender in real time, for Windows and Mac.
Version history:
- v1.0.1: 07/30/23 - Shipped early broken version of Windows plugin… AIIEE
- v1.0.0: 07/28/23 - Sudden release!!
Todo list (to address in the coming days):
- Uhm… add some pictures maybe??
- Uhm… maybe don’t crash when more than 64 synced layers are added?
- Support framerate interpolation.
- Add the ability for AE’s Render Queue output to automatically link the outputted file to the proper place in Blender.
- A rewrite of the frame handling logic could allow for 60 fps playback (not guaranteed).
- Other combinations of software besides AE/Blender could be looked into if there’s demand.
- Button in AE that makes it easy to sync multiple comps at the same time?
- Some size comps display with 4 extra rows of pixels in Blender?
Install:
- Both Windows and Mac (Intel and M1) are supported.
- Install the AE and Blender component how you would any plugin.
Usage:
- Toggle the “Precomp Sync Activate” buttons in AE (under Composition) and Blender (under Object, or via F3) to begin syncing.
- To sync a precomp, add the prefix “sync_” or “sync " to its name in AE.
- If the precomp has not been synced before, a plane with the proper aspect ratio will be added to the viewport similar to the Import Textures as Planes option in Blender.
- To stop syncing a precomp, simply remove the prefix from its name.
- A righthand panel under Tool in Blender (the N key) has information about the plugin’s status (though it’s not very reliable).
- The panel also contains a way to globally set the bitmap render resolution to make speeding up playback easier.
Status values:
- Inactive. - The plugin hasn’t been switched on in Object -> Precomp Sync Activate.
- Waiting for AE… - AE’s button hasn’t been switched on.
- AE connected (PID) - AE and Blender are confirmed to have an ongoing connection.
- AE unresponsive (PID) - AE has stopped responding to Blender, most likely because AE stopped calling our function (see Limitations).
How it works:
- The plugin uses shared memory to efficiently copy a buffer from AE into a Blender texture, and both programs frequently call functions we control (i.e. idle hooks) that make sure each are in sync with each other.
- The texture it writes to in Blender behaves just as any normal texture does, so you can use it it shader nodes, multiple objects, etc.
- The plugin works fine for final renders as well, but beware that AE might randomly stop updating mid-render (see Limitations). The Render Queue output bullet point in the todo is meant to address this.
- Note that this plugin handles framerates the same way Blender handles image sequence textures (at the moment), meaning textures will play back slower/faster if the framerate doesn’t match between Blender and the AE precomps.
Limitations / notices:
- AE will stop calling its idle hooks in certain circumstances, which causes bitmaps in Blender to stop updating. The two major ones I’ve found are if a popup window is open (like New -> Solid or Composition Settings) or if AE goes into a ‘sleep mode’ from not interacting with it after a few minutes. I’ve actually only observed the second behavior on Mac; on Windows it doesn’t seem to appear. Blender, on the other hand, seems to always call its idle hooks no matter what.
- Having a synced texture open in the Image/UV Editor window in Blender will slow down playback by a lot for some reason.
- If a new project is opened in Blender, its sync button has to be pressed again.
- Blender requires textures to be converted to 32-bit floating point for use, which makes this plugin’s RAM usage a bit more than you’d expect (width * height * 16 bytes for every synced precomp, 32 MB for a 1920x1080 precomp for any bit depth). This could be improved if Blender’s Python API gets a fast bitmap conversion/transfer function.
- – Thanks!