[Work in Progress] MotionIO Blender Addon

What's new

Fives

Enthusiast Member
So I've been working on this for quite a bit now and I thought I'd share my progress here with you. Please note, coding is not something I usually do, but when I found out about MotionIO and how it was used in Spiderverse, I really wanted to be able to use it aswell. Well, since there were no plugins/tools for it, I decided to learn a bit about Python and do it myself. The whole project started as a Houdini HDA but since then I decided a Blender Addon would make more sense for me personally. There are a lot of improvements I already planned for a future version of the Addon. This version will most likely take me months to create tho. Here is a little showcase:


As you can see, I also created a little application that lets me run MotionIO without dealing with code. While not perfect, this saved me a lot of time and is just easier to use overall.

The end goal of mine is to create a whole suite of little tools for myself (probably gonna release them publicly once finished) that help me to properly utilize MotionIO in my 3D workflow. This will most likely also include Nuke and Blender import tools (or even Nuke creation tools, like those found in Blender) and some other more experimental ideas. I hope you liked my little showcase and maybe you even have ideas on how to improve the tool. I'd love to hear them!
 
  • Love
Reactions: Pavol Escape Motions, Veronika Escape Motions and Michal Escape Motions
Thanks so much, @Fives, for sharing your progress! This is exactly what I was hoping for that someone starts developing such a plugin to help with MotionIO adoption among artists.
 
Hey, I thought I'd share a "little" update on my Blender addon. If anyone is interested at all, have fun reading!

So let me begin by saying I'm really happy that I got the addon to work at all, even without any proper Python knowlege. Currently I am exploring the capabilities of greasepencil v3, which was added in Blender 4.3. I believe the upgrades 4.3 makes to greasepencil are awesome and are hugely important to turning my addon into what I originally had in mind!

Blender 4.3 completely changed how greasepencil works under the hood. That also means it changed the way it works with the Python API, meaning I need to go through my old script and update it so it also works in the newest Blender version. I also used a visual scripting addon, which made a lot of things easier for me but the addon hasn't been updated yet so I kinda need to learn how to do everything manually, which I think is better longterm. It just takes a while to learn all these things. I am using AI to help me develop the addon but there are still many things I need to figure out myself and I'd also like to learn something along the way so I generally try to figure out things myself before resorting to AI 😅

Anyways here is a small prospect of what I'm working on:

Brush Presets
As you can see in my old showcase Video, with the current version of my addon you are limited to choosing one brush preset for the whole simulation. There is no way to switch brushes between strokes which kinda sucks. My new Version will allow you to choose a new brush after each stroke. I'm creating a grease pencil brush pack which you will be able to import and use to your liking. I'm also working on making them somewhat represent their characteristics in the viewport, so you have a better idea of what you are actually creating. This will take some time though and I don't know how accurate it will actually be. One problem I encountered with this setup is that Blender does not actually store the metadata of the name of the brush you were using when creating a stroke, which is not ideal, considering that is exacly what I need for this whole thing to work. Luckily after a while, I figured out how to store my own metadata and now changing brushes between strokes is possible. So after this achievement I thought, why don't I store other brush settings aswell? Well Greasepencil actually saves opacity, brush size, pressure, brush angle and even the drawing speed, so that was taken care of (thank god). But there are some parameters native to Rebelle. Specifically the brush water (currently just concentrating on watercolor brushes). So taking into account what I learned with the brush name metadata, I implemented a slider that lets you choose the amount of water for your brush before every stroke. Here's a little screenshot of the extracted metadata I made when I first got the whole setup to work
metadata.png

I was probably way happier than I should have been about this, considering that this might have been very easy for someone who actually knows python, but this really felt like a major breakthrough for what I want to create with this tool!

Brush Stroke Animation
Another big issue I have with the current version of my addon is the lack of animation capabilities. Sure you have an animated result in the end but I'd like to decide how many frames it takes to create a single stroke or let it move across the screen etc. Once again, Blender 4.3 came in clutch by adding Geometry Node support for Greasepencil providing me with virtually infinite ways to create cool animations. At the moment I created 2 different Geonode Groups which you will be able to add to your graph. The first one draws the strokes at the same speed you originally did when actually drawing them. You can offset the starting frame or speed multiplier to make it faster. The other group gives you total control, allowing you to keyframe the progress of each stroke which then allows you to art direct your animation however you like. While this is really great and one of the features I wanted to implement the most, using this feature to its fullest extent actually takes a lot of time. You need to manually create nodes, find your stroke id and manually put the value into the parameter and then you can edit the corresponding stroke. While not ideal, that is the best solution I came up with as of now and I think some things just take time, especially when it comes to animation 😉
I'm thinking about maybe creating a button which automatically retreives the stroke id for a selected stroke but I don't know yet. Generally I think having the setup with the node groups is actually a good idea since it allows for a very modular workflow with endless possibilities and scalability. For the lazy people there is actually an option to just let the strokes animate themselves sequentially, even with the actual draw speed, using the build modifier but you loose a lot of control over your animation that way so I prefer the painful but modular workflow.
node groups.png



strokeanim.gif

I hope you enjoyed my "little" update. I thought about just listing what I did but I really like sharing my thought process and struggles. Let me know if it's too much or if you like it that way (if someone even reads through this whole thing 😂). Anyways, there are some other features I'm working on or at least thinking of, like masking or custom paper presets but I've got nothing concrete to show yet. I appreciate any input and ideas you might have. Have a good day/night or whatever!

Jere
 
  • Love
Reactions: Michal Escape Motions
Good job! And thanks for the update, Jere.

Please, keep posting these, I'm always happy to read about your progress on this Motion IO + Blender plugin development.

You wrote:
I'm creating a grease pencil brush pack which you will be able to import and use to your liking. I'm also working on making them somewhat represent their characteristics in the viewport, so you have a better idea of what you are actually creating.
Did you mean to have better previews of Rebelle brushes? Because we are also thinking about it for Rebelle.

Michal
 
Did you mean to have better previews of Rebelle brushes? Because we are also thinking about it for Rebelle.
Do you mean the brush thumbnails? Didn't really think about those yet to be honest. I was referring to making the actual brush stroke in the 3D Viewport look a bit more like the Rebelle counterpart so you at least have a vague idea of what the simulation might look like later on. I wouldn't want to simulate over and over again just to find the brush I was looking for 😅
 
Yes, I meant brush preset preview thumbnails. But now I understand what you meant. In future we'd like to implement a faster way for interacting with Motion IO than running a new Motion IO app instance each time. Then it should take much less time to rerender a stroke with a different brush preset.
 
That sounds great! Really excited about the future of MotionIO :love:
 
  • Love
Reactions: Michal Escape Motions
Hey everyone,
I’m thrilled to share some exciting updates on the MotionIO Blender Bridge! After my last post, I worked a lot on improving every aspect of the addon, and I think I am at a point where it's almost ready for release. However, there are still some things I really want to address before that, so you'll have to wait just a little bit longer.

On the positive side, this time I have a full showcase of what MotionIO Bridge can do so far. No need to read a wall of text! If you have any questions, though, I'd be more than happy to elaborate, so feel free to ask! I made the decision to call the new Version 2.0 since it is basically a completely new version compared to the first one I showed here. Please note, the video is just for this little "private" showcase. Once I publish a public video, the quality and graphics will be much better!

 
  • Love
Reactions: Pavol Escape Motions and Michal Escape Motions
Hey @Fives!

This is indeed an amazing progress you made! Thanks so much for sharing.

In the video, from 5:30 till 5:40, colors are different in Rebelle than in the exported video. I think it might be because you have Pigments turned on in Rebelle and you probably use `-batch-out-rgba ...` for exporting animation frames which exports just the current layer without the underlying paper so the Pigments blending isn't applied between the paper and layer in exported frames, so the visual difference is expected actually. I'm just thinking out loud :)

Thanks for investing so much time and effort in this plugin.
Looking forward to your next update :)
 
  • Like
Reactions: Fives
Oh that might be the issue, thanks for pointing that out! I just thought there was something wrong with my color space in AfterEffects 😂
I havent really thought about the different commands I can use for exporting animation frames but the next step is to improve the "standalone" app (probably need a better name for it) with more export options and a better UI so I will definetly keep that in mind!
 
Actually, isn't it possible to integrate the standalone part into the blender plugin so that the plugin runs Motion IO directly?
 
Actually, isn't it possible to integrate the standalone part into the blender plugin so that the plugin runs Motion IO directly?
As far as I know it is, yeah! For me personally, I wanted the standalone app for several reasons. For one, Blender in my opinion is very prone to crashing, at least once the scene gets a bit heavy (which is what I'm working with most of the time). I think running Motion IO right from Blender while having a big scene open could lead to many unwanted crashes. In my overview video I just used the addon in an empty scene but it is actually designed to be used in your project with all of the other meshes inside. You create a plane, place it in your scene and draw on it. Then export the json and run it. Import the result onto your plane and render. Also, I do plan on adding more features like JSON overwrite capabilities and many other adjustable settings and I don't want to clutter the UI of the addon too much. I want to keep it "simple" and straight forward. I also think about creating addons for other programs so having one place where you can run all the different JSON files you created sounds like the best way to do it for me. Lastly, I just liked the idea of creating my own desktop app to be honest 😅

But that being said, I will definetly add the option to run Motion IO right inside Blender. More options never hurt!
 
I see, sure, that makes sense!

I forgot to mention that I also like the way you used geometry nodes for creating multiple simultaneous strokes :)

In the meantime, I've added a new paper visibility parameter to Motion IO. It will be available in the upcoming 7.2.6 version:

So now you can use `-batch-out-rgba_canvas` for exporting frames without a paper and if you check "Preserve colors when possible, keep original transparency" in Settings/Color, you should have correct colors in output images also with the pigments blending mode.
 
Yeah the geometry nodes support for greasepencil really enabled endless possibilities to animate the brush strokes :love:
I'll definetly check out these new features and make sure to implement them, thanks for telling me about them!
 
  • Like
Reactions: Michal Escape Motions
Hey everyone,
I’m thrilled to share some exciting updates on the MotionIO Blender Bridge! After my last post, I worked a lot on improving every aspect of the addon, and I think I am at a point where it's almost ready for release. However, there are still some things I really want to address before that, so you'll have to wait just a little bit longer.

On the positive side, this time I have a full showcase of what MotionIO Bridge can do so far. No need to read a wall of text! If you have any questions, though, I'd be more than happy to elaborate, so feel free to ask! I made the decision to call the new Version 2.0 since it is basically a completely new version compared to the first one I showed here. Please note, the video is just for this little "private" showcase. Once I publish a public video, the quality and graphics will be much better!

@Fives One word: "..Absolute genius! Found your post and demo a minute ago: thank you for this blender plugin awesomeness and Motions for Rebelle! I too have been trying - for what feels like centuries - to frankin'vibe a basic webui - got the example and my own svg path working ..then un-working.. now I just get 10 empty canvases - yess!" ..now I'm speechless!

+ when is the motionio bridge release or where to go for beta/testing etc (no links in vid)?
 
Last edited:
  • Like
Reactions: Michal Escape Motions
Thanks for the kind words @EmpoweringArts !
The add-on itself is at a point, where its ready to be released I think. I am however still working on a little project meant to showcase my tool, which will then be released at the same time. I am thinking about making a longer YouTube video showcasing the workflow and breaking down the project. So basically I only need to create "promo" material for the release. Only problem is, I'm really short on time at the moment and I don't know when I get to do all these things. I aim for a release in may but I can't guarantee anything sadly. Anyways, I hope this helps and if you have any questions, feel free to let me know!

 
  • Like
Reactions: Michal Escape Motions and EmpoweringArts
Back
Top