Animation Tools and Add-Ons

Update: 21/05/2014
This is a thread to discuss Animation related tools, add-ons and workflow improvements that you would like to see added to Blender. The Idea is that we can help raise awareness of our needs as animators and hopefully encourage development and workflow enhancement in thous areas.

I have started the ball rolling by sharing and updating some of the scripts that I use for my own workflow “Proxy Picker” and adding features that others want/need.

Proxy Picker:

I have also produced a prototype of a workflow enhancement called PAE or “Property Animation Editor” that aims to add a unified method of animating multiple properties across multiple bones by allowing you to create a custom UI.

PAE:

Can I try it?
Yes, but the PAE is in prototype stage so not suitable for use outside of testing. The Proxy picker tool is closer to being usable and I aim to get a solid release done soon.

They are currently working as standalone scripts and can be tested with this .Blend: LINK

this is very nice, but still very far from what professional animators use in order to hide all of the control curves or the need to use another viewport for selecting controls:

please get that in blender. Maya is absolutely kicking our arse at this. Its the nice things like a picker like that. Easy to find controls, easy to select them- see them visually. Visual is always easier than text scrolling through lists.

Its all about the buttons. We need a button maker for selecting controls.
Make buttons, move them around on top of a simple picture of the character. A panel with buttons for selecting controls.

You are improving the ability to customize blender’s channel box which is nice too. It is half the battle :smiley:

@blurymind
This add-on is not really meant to do the things that a picker does. This add-on is just to enhance the Transform/Custom Property panels.

Yea a Picker like that is defiantly a good thing to have, I created one for 2.4x, it was a very simple script.

It worked by creating a GUI out of bones that all had a “Proxy_” prefix, selecting a bone with the prefix automatically selected the bone that matched the name without the prefix. So in your GUI you would add a bone called “Proxy_Head” and selecting it would select the bone called “Head” instead.

But the Picker tool you showed has 100x times more power than that :frowning:

If you have time to burn, I uploaded a longer demo of the add-on and its features. I also spent a lot of time talking:

Hi Guys, I updated my Proxy_Picker script to work in the latest version of Blender and added some other enhancements and workflow tweaks.

You can view a quick demo here:

And you can download the latest version HERE, I am probably going to rework the method that I use to give feedback as using bone groups is not ideal. I might make it so that it changes the custom shape when its selected instead? Any ideas?

MCHammond, I don’t have the time I wish I had to really take this out for a test drive, but it looks to be amazingly useful. Looking forward to trying it. Can’t wait to see the next update!

This is an absolutely awesome start!! :slight_smile: Thank you for picking on this problem. It’s great to see that somebody is finally tackling it.

How long does it take you to create a picker for a character with this script? From the video I am assuming that one has to do a lot of work for each individual selection button to set it up. In Maya’s picker you create a button with just one click and assign it to a control with another click.

Your picker is an absolutely awesome start. It would be great if it some day makes its way to trunk and becomes a part of blender. I think a more mature version of this picker script should be enabled by default in blender!!
It makes workflow so much better. One can hide all bones and controllers and just use the picker to grab body parts.

You just need to make the pipeline of creating selection buttons a bit faster. Right now there is a lot of going back and forth properties editor tabs, searching through bone lists, etc. I wish I could just select the target bone(s) , then shift-select the picker button and click on “assign”.

Assigning colors on multiple buttons with a click. The best thing about maya’s picker is how easy, straightforward and fast it is to set up and edit. Then you can store your picker sets and reuse them on different rigs, for as long as the bone naming convention is the same.

In this video you successfuly identified a lot of the issues of blender’s n-panel when you campare it to maya’s channel box. As a maya animator/rigger coming to blender, I want to thank you also for doing something to address them too.

Some blender heads might say- hey you just wanna make blender more like maya. To that we should just show them the video and the plugin. Its not a matter of copying maya’s animation tools workflow. Its a matter of improving blender’s workflow. and for that to happen- hey we need to have some of the things maya users have been enjoying and certainly some other 3d software has as well.
Finally an editable channel box!
closer to the one in maya:

Blender is light years behind still! :slight_smile: Its small things like these that make a huge difference in the animation workflow. Blender is also wasting so much screen estate with empty space between attributes, increasing the need to scroll. Not to mention that transformation/rotation attributes have different UI from custom added ones and can not be edited/hidden.

If I am to give some feedback on the custom UI plugin- that would be the spacing between attributes. Would it be possible to reduce it to zero- like the channel box in maya. Less scrolling means less looking for things.

Other than that I dont see why both this and the other plugin are not official blender features!
For gods sake. Just the ability to operate on an attribute or many attributes of multiple controls at once alone… This is a HUGE workflow improvement. My hat to you sir. Both plugins are a milestone imo.

@blurymind
The funny thing is that Maya does not actually have a picker tool, all the picker scripts are from TD’s who have shared the code over the years. A picker like I have created is not going to get added to Trunk, a picker tool is an add-on and its best to keep it in add-ons.

It is slightly more complicated to create the picker with my solution but its also potentially more powerful, because it uses the armature and is just made of bones you have all the tools and abilities that you have when rigging a character. In the example I used custom shapes for each bone to create the UI, in the example you showed you are limited to squares/rectangles . Had I used the same square for ever bone it would have been far easier to setup.

You just need to make the pipeline of creating selection buttons a bit faster. Right now there is a lot of going back and forth properties editor tabs, searching through bone lists, etc. I wish I could just select the target bone(s) , then the picker button and click on “assign”

Hmm. the problem is that I never showed the procedure to create the picker :frowning: it is far simpler than that, In the video I jumped about a lot because I was showing different things and constantly turning it on and off. It is much more straight forward when you are creating it, I will do a video tomorrow hopefully with some updates.

With my script its about 3 or 4 clicks to turn a bone into a picker, creating the bone and setting it up as a UI element is not part of the script.

The procedure is:
Add a Bone
Set a custom shape “optional”
Enable it as a proxy_picker
Select the target Bone

If I am to give some feedback on the custom UI plugin- that would be the spacing between attributes. Would it be possible to reduce it to zero- like the channel box in maya. Less scrolling means less looking for things.

I did everything I could to make it as compact as possible, I am restricted by the way Blender creates UI’s via python. I do not have control of anything other than the ability to create a new row. :frowning:

Thanks for the kind words, I don’t want to create a Maya workflow inside Blender that would be horrible :stuck_out_tongue: But the way the channel box works and the way custom properties work in Blender are so similar that a similar solution is inevitable. The lack of Multiple bone editing is a massive handicap when animating in Blender, not only does it slow you down when animating it also restricts you from using certain rig setups. :frowning: Its discussions like these that I was hoping to have, there was a similar thread about two years ago that incited a lot of animation related improvements. We animators must be a rare bread now :frowning:

I thought I would also just dump this here too:
Someone messaged me about an IK_FK_Snap script so I made a quick example for him/her LINK

Hi,

this looks really great. The lack of booleans and enums is especially annoying from custom properties and I’m grateful you’re acting on that. Also, you’re giving away an IK/FK snapping script ? You are a beautiful person. Well ideally the snapping would take the pole vector into account but I guess that’s a lot more math…

What do you refer to when you say “multiple bone editing” ?
Do you mean the fact that you can’t access a bone’s properties through another bone ? (something that bugged me in the past… I learnt to live with it)

Hadrien

These tools look extremely useful. I can’t wait to try them out. Thanks so much for doing this.

@MarkJoel60
Thanks, I missed your post sorry. If you have any feedback after using the scripts let me know.

@Hadriscus
Thank you, The IK_FK snapping script does/should handle the pole vector, if you think it should behave in a different way can you explain how you think it should and I will implement it :stuck_out_tongue:

The thing with multiple channel editing that I like in Maya is that you can not only edit multiple channels at once, you can do so over multiple controls. Blender can do neither, ie you cant edit more than one custom property at once and you cant do it over multiple bones :frowning:

It limits what you can do when you rig a character because you always need to remember that only one custom property can be edited at once and only on one bone so you end up creating “on rig controls” instead.

@Safetyman
No problem, Us animators/riggers can be a quite bunch sometimes and we need to be more vocal about the tools we need.

I also have an updated version of the Proxy Picker script:

And You can Download it here LINK I have noticed a bug with it that I am going to fix tonight that causes issues if the bone you are trying to select is on an inactive bone layer or you have a bone selected on an inactive bone layer.

I also just noticed I got my left and right the wrong way around :stuck_out_tongue: lol

Hi, your work is making many aspects of animating in blender much better.

Why are these scripts embedded in blend files? Is it possible to install them locally- as any other blender plugin?

(preferences>add-ons>install from file> open a python file) or by copying them in the plugins directory.

It would be great if they were both in blender trunk - ready to be enabled by the users.

My bad, I was trying to make it snap to a very weird pose it seems - after careful experimentation, it succeeds in most cases.
I see what you mean now with multiple channel editing. To be fair the UI allows for that since a few versions but not across objects indeed. There needs to be some kind of “string match” method for editing same-name properties on multiple objects.

across multiple objects channel editing has been requested many times in the past and still not addressed officially in blender. It’s great to see someone come up with a plugin that adds that fundamentally important feature to channels editing in blender. Even if it is only available in the scope of channels that are created with the add-on.

I wish blender had that feature EVERYWHERE. Not only in the n-panel, but also with the properties editor.
I wish I could assign a variable to all the objects that have been selected and have it available.

There is copy to selected for that, only it’s not “interactive” (first set the value, then click copy to selected​).

@blurymind
They are not available as add-ons “yet” because they are not finished and I am still working on them. I aim to have them available as add-ons when I am happy that they work correctly and ideally someone who know about good code practice helps me get them “up to standard”.

Yea, multiple object, bone, whatever editing would be good. I often find myself with the task of going into 20 or 30 different objects or bones and setting the same value on all. I think its part of the dependance graph work that is being done at the moment but I am not sure.

@Hadriscus
Yea, “string match” is exactly what I am doing in my PEA add-on, when a property is edited part of the “set” function checks all the other selected bones for properties that have the same name.

My workflow for copying values from properties to different properties is to hover the mouse over the properties value “don’t click or select it” and press “ctrl C” and then hover my mouse over the property I want to paste the value into and press “ctrl v”.

Its a feature that’s a little bit undiscovereable but it works well and works for all types of properties like colors, objects and bones.

OK guys I uploaded this video yesterday but did not post it here because I noticed some odd cpu spikes when I was profiling the code. SO I re-worked a lot of the code and unified the different types of pickers “proxy, proxy_list, button and layer” and then unified the way the custom shapes were updated.

I also added a check so that the handler only does heavy tasks when the selected bones or active layer change. This has improved performance a lot :smiley:

Link to Proxy Picker v0.3

If you guys have any other things you want added let me know and I will see if I can add them.

In the code for this add-on I had to create a way to save a list of selected bones and then load the list of bones and select them, so I might extend that and add it as another tool so that you can create selection sets or something.

Edit: Sorry updated the blend forgot to make the script internal :frowning:

Hey this is a very nice tool thanks! I think lot of people was waiting for a convenient picker tool. It does a good job! I haven’t tested the PAE yet but i’ll certainly do it soon. As a professional animator using Maya I always appreciate to come back to blender for personal project and your scripts are a good improvement.

One thing though is that when hiding the picked bones, you can’t move-rotate-transforms them. And hiding the bones is the purpose of a controller picker to have a clear view of your character. It’s possible to work around by using custom bones shapes without faces, only edges, thus when turning to solid view they’ll disappear. But a proper solution would be very fine! Thanks for your work.

edit: investigating more into the hiding bones problem, I’ve found out that you can still change the transform values using the property values while the bone is hidden, but can’t use g-key, r-key, etc… + cursor to move, rotate in the 3d view.

@lucky
Thanks, I made it ages ago for Blender 2.4x and no one was really that bothered so I guessed that it was not wanted :confused: . Although this time I am adding a lot more stuff.

If you want the character to be viewed without controls and all the other clutter but still be able to interact with it in another area you probably want enable “Only Render” in the viewports display settings. Press “N” then go to “Display” and toggle “Only Render” On. That will display the character without the armature and anything else that is not render-able.

Is this what you want or do you want more control?

One issue with this is that if you have a substitute character mesh for viewport performance it will be hidden, but you can set things up differently to avoid that problem.