Animation Tools and Add-Ons

Yep but the problem is it hides lamps, empty, and other non-rendered stuff that you may want to be displayed in the 3d view :-/

Ok, I have roughed out a quick workflow based on your Idea of using wire custom shapes and toggling them on and off.

The issue with this is that you need to use wire custom shapes, I will look into a better solution.

But here is what I have so far “very messy” Link

Seems to work well, thanks! Not in wireframe view due to the limitation blender bones display but this shouldn’t be a big problem.

It works in your blend file, but what is please your procedure to make it work on another armature? I’ve added a bone button with the “wire_toggle” script, and when clicking on it it hides the controllers but they remain hidden when clicking it again (wireframe is not turned on).

It was a roughed out quick workflow, the script has its flaws. I am implementing a better solution as we speak.

The script will produce the error you are reporting if you have a pose-bone set to wire that is also set to be a “proxy”, “proxy_list”, “button”, “layer” or if the bone is called “Picker” or “Picker_window” and set to wire. basically nothing on the picker UI should be set to wire :frowning:

The solution of using bone wireframe to show and hide controls is not great for this very reason. The method that I am currently implementing does not have this problem.

The problem is that Blender has no way of hiding a bones custom_shape while still allowing you to manipulate it. The solution is to alter the custom_shape objects rather than the rig. So for every custom_shape object that you want to hide you must add a “Mask” modifier and turn it off. The script will then turn it on and off when you press the button. This will then hide all the geo in the object and thus hide the custom_shape on the rig.

The issue with this is that it adds a layer of complexity to the way the script works when the rig is linked and then made a proxy for file referencing. I have a solution to that problem too, but it requires that you group your rig in a specific way “Armature + Geo + custom_shapes must all be in the same group”. I have added the ability for you to specify the group name in the proxy picker window, although I hope to be able to work out this automatically.

I don’t know if I should include the ability to hide a rigs custom_shape’s as part of the proxy_picker script. To me it makes more sense to use the built in show_only_render feature but I can see times when this is not ideal. Its just feature creep, I run the risk of turning this into a mass of scripts I cant maintain :frowning:

This also raises the issue of how the picker tool should be distributed, simply having the proxy_picker script as an add-on will not be that useful on its own. Most users are going to want to have a fully working picker or at least a picker they can get working with little work. I might distribute it as a .blend with a few UI examples and bundled example scripts?

I have also exposed the saving and loading of selected bones as a tool in the tool shelf called “quick Select”, its a bit buggy atm but I will have it working for the next update. Its designed to compliment the the gui picker and also serve as a lighter weight method of selecting bones if you have limited screen space. Similar to the AnimPicker in this image LINK “without the pretty colors, ui colors are not exposed to python :(”

I look forward to trying this out when I get a little time. It looks great!! I think I would have to agree that keeping the script simple is probably the way to go. It sounds like that hacking in a “hide controls” feature will require limitations and make it difficult to maintain, making it not really good for anybody. Rather we should try to get such limitations fixed in the code instead. Not being able to manipulate hidden objects is a far reaching blender issue that affects more than just this tool. :slight_smile:

In any case, I’ll try to find some time to test it soon and provide some (hopefully) meaningful feedback. Thanks for working on this! Blender desperately needs it!

Yep. The PAE needs to be an officially supported add-on for blender ASAP.

And then blender needs to incorporate it’s functionally into the codebase for all properties. Maya’s channel box is one of it’s biggest strengths as an animation tool and the PAE gives some of that functionality to blender. AWESOME work!

Yep if you think hiding the controllers is such a pain in the neck let’s give it up :frowning: In my opinion this could be useful in many cases but I can’t help on the coding side so it’s up to you.

Mchammond, have you spoken to Jwilkens about this? I believe he’s the one who maintains blender’s animation system, if I’m not mistaken. Maybe there is a chance he might take on the challenge of adding this functionality into the core of blender. At the very least, it would be interesting to get his opinion on the matter.

I love PAE!, have to learn to use it, but the demo was pretty self explanatory, really great job max!!, workflow improvements come to me!!!

visually it looks pretty great, but maybe properties like xyz transform should stack together, so they don’t take so much space just like the regular transforms.
and for now it’s done, until looking to add more stuff, i think it has already solved many things that were “pending”, like handling multiple properties, and quickly keying different things…
maybe just a key that mimmics the “s” key in maya without having a dropdown or to setup before hand the “available” properties.

also i have a question, is it possible to directly create a property from scratch when rigging right from the addon, or i necessarily have to create it like regularly and then connect it to the UI the addon creates?

great job max!!

triple post

double post

Sorry for not replying guys I was trying to get the next update finished, I was aiming for tonight but it will probably be tomorrow.

Glad you like it, some “meaningful feedback” would be awesome. Its hard to think of all the scenarios and conditions that it might have to face. I am always terrified that I miss something obvious that’s fundamentally changes the way I should have gone about solving the problem, so even the obvious issues can be helpful to raise.

The way Maya “Channels” work is very similar to the way blender “Properties” work, so its inevitable that we will eventual end up with a similar solution. The “Channel Box” is a huge part of Maya’s preference for animation, in my opinion.

Presto takes the channel box to the next level which is actually what I was taking my inspiration from. In Presto it not only displays the value of the channel on the current frame, it can also be set to display either the values on the frames +10 and -10 or the next and previous key-frames “it looks like a spread sheet”. So you can change the value of a channel that is not on the current frame, meaning you don’t have to jump about the time line.

I always aimed to add that 4th dimensional editing to the PAE, but I first wanted to get the core working. Another feature of the Presto system is that the channels displayed can be chosen so you end up with a spreadsheet of channels dependent on what you are currently working on.

You can view it here: spreadsheet at 1:45 and channel box at 9:50

I have added it to the latest version, so it is in “if a bit hacky”. But like Fahr said it would be something best done in C by one of the developers.

This kind of brings up the discussion about how is the PAE best implemented. In an ideal world were I was an awesome C programmer I would:

Extend the existing “custom properties” UI and creation method to include Enum’s and Bools. I would then make it so that a built-in property’s definition’s could be changed, such as setting new “min” and “max” values to a bone’s eular_rotation. I would add a select bool to a properties definition so that you could easily manage the selection of multiple properties. In the same way a bone has a .select bool. Something like:

[QUOTE]my_prop = 4
my_prop.min = -2 = True
my_prop.set = set()

Creating the PAE would then be a simple task of just building the UI to access the new data.[/QUOTE]

I have not spoken Jwilkens or any one about this, I am just an animator who has decided to try and raise awareness of what sort of tools and workflow enhancements we need.

Thanks for the feedback, I will look into grouping items under a label. But the real space hog is the way blender puts the same space between rows, regardless of whats on them meaning labels take as much space and properties :frowning:

You should be able to use the PAE as it is to emulate the “s” key in Maya, if you have nothing selected everything is assumed to be selected so you could select all the controls on your rig “assuming they all are PAE enabled” and with no properties selected press the button with the key at the top and it will key all properties on all controls that are set as “keyable”.

You have to create your properties using the normal method, the PAE only allows you to create a UI on top of an existing property. Basically create your rig as normal with all the custom properties and then once you are happy use “auto propagate” and it will add all the properties to the UI, you can then go in and set the property types and min, max, ect… If this tool were to be properly implemented it would all be one step, like you suggest. But that’s beyond my current abilities.

An interesting thing is that the property does not have to be on the same bone, you can add a property data path or rotation, location, ect from a different bone. and it will be display in the UI but keyed on the real bone, useful for doing fingers.

Hi Guys I have another update for you, I will probably update the first post as well the direction of this thread has changed a bit since then.

Proxy Picker v0.4:

Works when the rig is linked and made a proxy.
Hide custom_shape’s with mask modifier.
Workflow enhancements.

To Do:
Look into ways to more efficiently run scripts from button.
Change names of proxies “layer” could be used for something else.
Add the ability to create scene layer buttons not just armature layer.
Re-work quick selector, max string length exceeded using current method.
Add ability to reorder items.

PAE “Property Animation Editor”:

Bug fix’s
Extended the example rig

To Do:
Look into inconsistencies when auto key is disabled.
look into automatic adding properties “min,max and default”
Total rewrite.

Proxy Picker v0.4

tested it last nite, works pretty lovely, have to get used to it a bit more, but i grabbed it and started using on the fly for the most part and it was perfect.

Hi guys,

I was hoping that this thread would turn into a discussion about Animation tools and workflows, anyone got any thing they wish to discuss or something they would like to see added?

I have another update for the Proxy Picker tool. I have converted it into a proper Add-On that can be enabled in your preferences :D. You just need to place the script in your addons folder.

It took longer than I thought because there were some issues regarding the initialization of the properties and handler during blender start-up that had to be resolved. The handler has also been changed to persistent so I’m not sure how that will behave under different conditions, so it really needs testing.

I have a video that includes a tutorial on how to use the tool and how to create your own Picker:

You can download the Add-On here:
It must be placed into your “scripts > addons” folder in your Blender directory.

I have also created a script that will update a rig that used v0.4 to work with this Add-On “names have been changed to prevent clashes”, that script can be download here:
To use it load it into your text editor and run it while in pose mode.

wow excellent addons thank and keep the good work

Hi @MCHammond!

very very nice work! Proxy picker + PAE. Thnx you very much!

Some words about PAE. ( about Proxy picker later). I agree with blurymind - This is a HUGE workflow improvement. PAE is super for Maya users ( maybe for Blender users also :))
Your script is between Maya and C4d. Custom sliders like Maya channels and clever ability to set keyframe as C4D. (image)
“click and go”

Please finish PAE as separate addon ( installation from Blender User Preferences/addons) and share it to wiki or

I tried PAE with Rigify rig (2.70a) - I ran scripts “custom UI” and “PAE” - some notes:

01 - space between sliders - Maya and C4D are ( a little bit) more compact (image). More informations in smaler place.
I do not know if it is possible. One way or another, please try it.
02 - everything is working except rotations. I changed degrees ( subtype - NONE) but nothing happened.
Keyframes for rotation did not work too. Location and scale were working.
03 - “Default” button destroyed position of rig bones ( images). Default for scale was 0. Everything was ok after I manually changed it to 1 (for all bones). Afterwards button “Default” was working properly.
04 - It is possible to select all channels at once ( like Maya) and set zero or another number. Nice! But rotations must be the same type of number as other sliders. ( subtype - NONE)

Please continue!

Thankyou for the feedback, its much appreciated.

I will aim to address your issues and get PEA working well.

  1. The issue with the space between sliders is a bit out of my control, there are some things I can try to make things more compact but it depends on what it effects. Pixel spacing of UI items is not directly exposed through the Python API, I might be able to group them together though.

  2. PAE currently only supports Euler rotations, the Rigify rig is mostly Quaternion. I will aim to add this, I omitted it because when I started this tool it was all about limit sliders and Quaternions cant really be represented with limit sliders.

  3. Hmm. I cant replicate this issue, can you pm me the file before it does that. I assume its something to do with the way defaults are automatically assigned as “0” conflicting with rigify. I might change it so that when you “Auto Propagate” it uses the current value as the default.

  4. rotations are different because they are actually in radians rather than degrees, so setting all channels to 1 will set a rotation channel to 57.3. “probably not what you want”. I did this because I thought if you were sliding an object and rotating it at the same time you are more likely going to want it to move 1m and rotate 57d than 1m and 1d but I think this is just confusing looking at it now.

The thing to remember is that when you set a channel to 20 from 0 its calculated as +20, this means if you have lots of channels selected with lots of different values +20 is applied to all the channels, you are not setting all channels to 20. This is not ideal, so I added a tool in the options to set all values to a given number ie 0 or 20. But in practice it was faster to hit “default” and then +20 to all the zeroed channels if you wanted them all at 20.

Thanks for your feedback, it really helps to know what issues people are coming across, and to motivate me into actually solving the problem.

I am still working on the PAE, the issue is that it needs to be rewritten “its very badly coded” but before I do I want to know the best way to go about doing it. Specifically how to create lots of properties with individual names, get() and set() functions inside a collection. At the moment the properties flood the scene custom properties and bone properties, this will almost certainly cause issues with other add-ons which is why I have avoided distributing it as an add-on at the moment.