RIGGING NODES! Mantis Rigging Nodes for Blender!

Hey all! I have been working on this addon for a loooonnnggg time. It’s a Rigging Nodes addon for Blender! It’s 100% Free and Open Source.
Check it out!

It works a lot like Blender’s current rigging system, so it should be easy to learn. I’ll be making tutorials for how to use it on my channel.

Mantis is available as a Blender Extension from my website (I’m working on getting into the official extensions catalog, too).

Install the extension:

  1. Open Blender and go to Edit>Preferences from the menu in the topbar.
  2. Navigate to the Get Extensions Tab.
  3. Add a new Extension Repository by clicking on “Repositories” in the top right and clicking the “+” symbol that appears in the drop-down panel. Choose “Add Remote Repository”.
  4. For the URL, enter: “https://nodes.tools/extensions
  5. Now, use the search-bar at the top to search for Mantis
  6. When you see Mantis appear in the list at the top, click “Install”.

If you want to buy a starter component pack, check out Mantis Rigging Nodes Component Pack. Otherwise, you’ll have to make your own, following the tutorials I am going to be releasing soon, or with your own skills! I’m also working on tools to make this easier, so please support me as I work to enhance Blender’s rigging tools for everyone!

21 Likes

First tutorial is out!

Get ready to learn:

  • Mantis node graphs are descriptions of the rig you want
  • A few common errors explained
  • creating, placing, and naming bones
  • using constraints to make an IK/FK leg
  • creating a switch with a custom property and driver
  • packing it up into a reusable group
7 Likes

I used the previous rigging nodes addon a lot, and was really sad to see it abandoned, so when you showed up, it got me really excited.

I’m slowly getting my bearings, it’s very different to the previous one, but it’s very promising, so I bought your component pack to learn from it. Good stuff man! Keep it up.

I do wish to know though, if there was a way, to get an array of every bone in the meta-rig, and a way to filter through them, cause my workflow is based on constraining the whole DEF rig using a “copy transforms” constraint to a duplicate of the DEF rig with the prefix changed to TGT.

1 Like

Well, there is a way to work with arrays, called “Schema” - though I haven’t made any videos about it yet. There is a fairly complex schema example in the Component Pack called Multi-Pivot-Spine that you can look at (send me a DM with Q’s, I check this page once or twice a week.).
As for your workflow, I don’t know for sure if it will work. You’ll probably have to adjust it a little - Mantis is declarative so it doesn’t allow you to change things after they are declared (Bones and constraints are immutable). That is the core reason for its consistency and repeatability.

I’ll describe a node group you might try and build:
Inputs:

  • DEF Bone
  • Base Name
  • Constraint Influence

outputs

  • TGT Bone

and you could use the Matrix of xForm node to copy the DEF bone’s matrix to the newly declared TGT Bone. The Target Bone would take the base-name and add a TGT prefix using a Concatenate Strings node, and you could hook up the Copy Transforms’ influence to the Influence input – you can then connect a driver to the Node Group’s input port.

Thanks again!

2 Likes

New Shape Key Tutorial

2 Likes

This looks amazing. I was looking for exactly this solution, but only found the abandoned rigging addon. Just in time as things are getting more and more complex to handle at scale

Can you cover what new ways have you found out to handle weighting in a modular way with these?

This video about shapekeys is amazing, it solves a lot of issues very very fast. Duplicating a character, wanting to have multiple versions but controlling them with different armatures and meshes that share the same data but different drivers in a crowd… it just shows how long you’ve been thinking about this. I’m definitely supporting and using this, I just need to move to 4.2 and make sure I don’t break my pipeline…

A lot of the workflows in Blender even when advanced are very limiting when you go out of the artisan way of doing one thing at the time and try to iterate and repeat things while having flexibility. And creating a script for every single new situation is just not always practical.

In regards to the skinning of a character. I’m wondering how would you handle having a rigged character with Mantis and t hen adding a new set of bones with new vertex groups with weights for these bones without altering the previous weights, so they total sum of weights is more than 1 for those vertices that share the old bone groups and the new added bones. This way you have a base you are comfortable with, and then if you realize that the character now needs helper bones for muscles and joints you can preserve all the animations you can just add a new group of bones for this function with the proper skinning and it just works. If mantis is able to normalize the output of a bone with 12 new bones that add to a way bigger number than 1 and things don’t break down or start looking weird, etc.

Also I’m curious just to know what others ideas have you come up with for these kind of workflows.

Sorry for the rant but the shapekey video is just unbelievable. I tried to use RBF nodes and the performance and the incapability of baking for a preview makes things just too difficult. And if you make a mistake you can corrupt a whole scene with those. Also not very modular so this is unbelievable. If you manage to integrate actions this would be a complete solution.

I heard in one video you were still thinking on how to go about it for the actions. What came to mind immediately was not only being able to set up actions on the nodetree by picking up bones and actions or recording them, but because we don’t always know what will be needed during production, maybe let’s say you have created an action with a group of bones in a scene, but then you need to make changes to the rig, you could use this information at the end of the node tree to regenerate the rig while still maintaining these if you wanted.

Let’s say you pick one node “actions” and in you select one of the actions on the scene, and mantis would go bone by bone and match the action constraints with the bones that are involved in that action for the generated rig. This, instead of focusing on creating action constraints from the get go would be a way to retroactively bake these into the generated rig if a user wanted to go back and fort without never missing this information.

It could expand from here, and let’s say you have two characters, but they share the same schema, then you could transfer the action constraints between them by re-generating the rig this way. If they don’t exactly match because the proportions are different, then you could edit the action of this new bone. The node could have a checkbox, or setting to select “generate new action/reuse action” This way you could control if they are linked or you create a new one and then you are able to tweak it as you please.

I haven’t thought about the problem in this specific way you describe, but I like how you are thinking. In practice I usually just do different versions of a character. But you could use the Morph Deform node to layer different deformers on a character (although this uses Geometry Nodes so it doesn’t export to e.g. games). Perhaps I will add more weight-painting tools in the future, like what you describe, but it isn’t a high a priority as adding deformers, improving the matrix math, etc.

As for actions:

  1. In the past (and for a production) I have written scripts that do what you describe, and it’s actually extremely straightforward.
  2. working that into the graph isn’t quite as straightforward since they need to have controllers attached. I donno quite how to design it properly, and updating it is hard so I need to nail it down before I send it out to people.
  3. I like the ideas you have regarding regenerating actions, thanks :+1:

Maybe the right thing to do is to declare Actions as something that takes ONLY a control input (either the transform properties of a Bone/Object, or a Driver) and let the system figure out the rest… but I want to give more precise control.

Yeah, this is the big motivation behind everything. In my last 3D job, I was the only artist in a startup company. We had a large cast of extremely expressive complex characters – they were all asymmetrical, each had slightly different proportions so they had to have different geometry (making shape keys a no-go). Each one consisted of a stack of multiple deformers and had many different objects…I had very little time, and there were like 30 characters. I mostly managed it by over-engineering the rig so it could handle anything, but it gave me an excellent hands-on-example for exactly the kinds of problems I need to solve with this.

Thank you for your reply and your kind words! I wish I could address everything all at once. There are so many ideas I have that I want to work in to the system, and so many ideas I have gotten from others since I opened it up…

I imagine you’ve been flooded with feedback so thanks a lot for taking the suggestions into consideration. I apologize for the wall of text in advance but given you are inclined to create a new system and not just plug features into this, I think it might be worth to mention these things in case it helps you towards deciphering the blueprint

I haven’t thought about the problem in this specific way you describe, but I like how you are thinking. In practice I usually just do different versions of a character. But you could use the Morph Deform node to layer different deformers on a character (although this uses Geometry Nodes so it doesn’t export to e.g. games). Perhaps I will add more weight-painting tools in the future, like what you describe, but it isn’t a high a priority as adding deformers, improving the matrix math, etc.

Keeping several versions of a character with Mantis seems way easier to manage so that already makes things a little easier. Without getting too much into my particular situation, I usually limit the versions of the character because of the custom normals I need to manage and it becomes very cumbersome as a project get more complex and larger. I saw there’s a new branch for a normal node and it’s also way more performant than the data transfer modifier so that might not even be a headache in the future

But completely understandable that deformers are a priority, after watching your video and seeing how much easier it’s to set up I’m starting to wrap my head around doing it this way. From not overdesigning the rig, to making joint based skin deformation without weights, all the way to correct weighting bugs with helper bones for extreme poses and call it a day. Of course that’s what’s done with corrective shapekeys but many times that’s not an option because of how long it takes to set up, performance, duplication with drivers, etc. But Mantis though…

working that into the graph isn’t quite as straightforward since they need to have controllers attached. I donno quite how to design it properly, and updating it is hard so I need to nail it down before I send it out to people

Completely reasonable! That’s why I jumped here to suggest the action regeneration idea. In case you went down this rabbit hole and then it would be too complex or annoying to go back and retrofit something like this.

I’ve seen a few people tackle the action constraints set up with addons to make it easier to create, manage and delete. But what none have quite figured out yet is how to go beyond that. What I did see that was very useful was a visualizer of influence between bones and actions in the menu, that could be something an action node could have to be able to identify what’s happening more easily and debug. Example:

Without going too crazy. And seeing that you are inclined to make this a bit more powerful than an action management/creator system for rigs (and because you didn’t only mention a bone or object transform, but a driver) maybe, and just maybe…

https://www.braverabbit.com/braverabbit/tools/rbf-nodes/

https://www.braverabbit.com/braverabbit/tools/weightdriver/

This of course has a very nice interpolation curve, and arbitrary number of controls to an arbitrary number of outputs (within reason).

Not game compatible or exportable. But if added it could be on top to offer a larger range of functionality if desired. The nodes could be very clearly differentiated between Actions, and “mantis node actions” (just riffing, in case you decide to use a different or multiple functions or interpolation method to achieve a similar result) or if they are bundled together there could be a setting to alert the user that it’s not only pure actions and they would know it can’t be moved/exported around as per usual.

Something like that might be a bit insane but seeing what you did in your video with deformers, that already solves the issue of shapekey management on linked files better than the official geonode shapekeys with UV mapping (a bit of a headache to manage and not so flexible) I think you could concoct a an elegant solution to something like this. I imagine a system like that being implemented, duplicating the rig, and the driven settings still work.

For example, when you covered the custom hack/setting to solve the problem of the node tree not properly updating the deformers it immediately reminded me of what happens when you are using RBF nodes and a scene gets too large to be evaluated properly. Things start jumping around, desynching, or sometimes even when you have proper preview, the render output don’t match what’s on the timeline. So most of the time I end up baking everything down to alembic with a high number of samples to reimport it back into the project.

Reason why Blender Studio also created their cache manager addon for when that situation arrives even with regular heavy rigs. So if you already saw this issue with just deformers, I think you have enough attention to detail to manage a system like that in a practical manner.

I imagine a situation in which we have something like a future updated version of Simplify+ that allows us to turn on and off speciffic geonodes with a shortcut by name or ID instead of the whole geonode modifier, and we just turn off all the crazy deformers for posing and animating, actions are still evaluated as regular but we can also turn off the RBF trees on top of them if needed, then crank it all up for visualization. What if we have 10 variables driving 10 other variables with your own custom interpolation matrix and Blender doesn’t display properly what it should be on render? Imagine having a custom setting to increase the number of samples on each frame, no matter the computational cost, to have those speciffic frames correctly render in case of a random bug appearing and not having to redo the whole thing.

With geonodes getting a more foreground focus on Blender while it won’t be compatible with games and other exports it would be so powerful. Also we are still able to bake outputs when we deem the tradeoff is worth it for games and other software (ex, low poly mesh for a game baked down to a sequence of meshes with no shapekeys for just one cutscene or 1 move because it’s cheap and fast, etc)

Yeah, this is the big motivation behind everything. In my last 3D job, I was the only artist in a startup company. We had a large cast of extremely expressive complex characters – they were all asymmetrical, each had slightly different proportions so they had to have different geometry (making shape keys a no-go). Each one consisted of a stack of multiple deformers and had many different objects…I had very little time, and there were like 30 characters. I mostly managed it by over-engineering the rig so it could handle anything, but it gave me an excellent hands-on-example for exactly the kinds of problems I need to solve with this.

I completely saw that through your videos. You mentioned things that only a one guy managing an entire production in an inadequate amount of time would think about so I can totally relate haha. But I’m happy it happened because there’s almost zero solutions out there for people in the middle of the road between working with 1 character and working with a LotR 2 battle scene in Golaem.

Thank you for your reply and your kind words! I wish I could address everything all at once. There are so many ideas I have that I want to work in to the system, and so many ideas I have gotten from others since I opened it up…

Thanks a lot for all the hard work! I will definiely will be supporting you and diving into all of this as soon as I get out of my current crunch to deliver before a deadline, and I hope at least one of these ideas help just a little bit to come up with the proper layout for this stuff. It’s needed!

2 Likes

hey, I read through all this, but I won’t be able to respond properly for a little while. There’s a lot to digest here and a lot I have to read again and research. Thanks :+1:

edit: I will say though, that your comments have got me thinking about how to design actions, and I have an idea that I’ll be testing soon. The idea is to tag armatures with an Action Subscribe node that lets you set the action and an ID, and maybe an Exclude Collection. Then, somewhere in the tree you place a Control node with the same ID and a driver input. Then the system would place the action constraint on every bone in the action (except those in the Exclude Collection) and set up the controller. I think I would leave it up to the user to choose to make duplicates or not – certainly I won’t try to do any more than this for now.

2 Likes

Now that you mention it. Going with this opposite approach of the user indicating the excluded bone collections instead of the participating bones seems a better approach most of the time because it would eliminate user oversight by missing bones that could’ve participated in the action. Maybe the node could act as a boolean and offer an exclude collection/included collections to offer more flexibility. But yes I think something like that system could work as a base to cover actions as of now.

Anyways. That’s great news, going down the rabbit hole and deciphering all of it will be the hard part so no problem. Interested to see what you come up with

2 Likes

New tutorial out!

Would it be possible to create an armature from scratch with this?
Like I wanna have a fully parametric asset generated using GeoNodes, then create the whole rig using RigNodes

Hi @GalacticSalmon thanks for checking out the addon.
This workflow is planned for the future, but you can already use Curve objects to drive parametric workflows.
I will have to do a little work to make curves from Geometry Nodes work, but they might work if they are “ribbons” (like the normal curve object with “extrude” enabled.
Future plans include using meshes and vertex groups to do procedural rigging. But I haven’t added those features yet.
I’d really appreciate it if you could outline the workflow you’d like to use, that would be useful for me to plan out these features.

The primary challenge of designing this system is that I need to plan things really well before I implement them, since versioning is hard, and because I want to make a guarantee to the users that the nodes do what they say! So I am careful about adding new nodes.

Version 0.10.0 is out and it brings compatibility with Blender 4.4

1 Like

NEW video tutorial is out:

Is FK/IK snapping out of scope for this project?

Right now: yes
Future: I have some plans for implementing that sort of thing, but it’s a long way off.

1 Like

HUGE update!

check out all the updates here: https://nodes.tools/mantis-changelog/v0.11.11.changelog.html

6 Likes

Learn to use Schema to generate rigs with adjustable numbers of bones:

Schema is a super-power: the ability to generate rigs with many chains of bones with complex relationships - with any number of bones in each chain! Use it to design tails, faces, trunks, tentacles, whips, fins, or anything else!

The video starts with an example of how Schema is used to generate the tail controller for a really cool Stegosaurus! By changing a single number in a node, the number of bones and controllers in the tail can be modified in seconds! Then there are some simple break-downs and examples. Finally, there is a tutorial for how to build a practical Schema - using a curve to generate a simple controller for a person’s mouth.

1 Like

NEW Deformer Nodes!!

7 Likes