PEN Control objects beta.


Wonder if you guys could have a look at this for me and tell me what you think. It is a scripted helper object with a pile of display options. Not all of them are hooked up and I might do several more. Also allows for you to pick custom geometry so you can use any shape that you want for the helpers.

You can either just temporarily execute it or you drop it in your plugins directory. All feed back welcome.

The above had been replaced with


Just had another thought on this as I was driving home. What if all the options for display were saved to an XML file so you could build your own library, what do you think.


Oooh. Yeah, go on, do that! :smiley:

I’ll have a look at the script when I get home!


That’s great Paul, I was thinking about starting something like this but as you know, time is the enemy.
The first suggestion I would have is being able to use a spline as a custom mesh as most riggers/animators tend to like the look of splines as animation controls.
Nice one.


Well i’m using a scripted helper. You can only add mesh objects but like a point helper it doesn’t draw the faces in shaded view. So you can create a circle, colapse to a mesh and then add it. This is how I created the circle option. I will set it up so that if a spline is selected it will convert it then add it. This was just really a test to see if it is was a good idea. Only thing that I see that I can’t do anything about at this stage is the point helper parameters of the deletegate are still visible in the dope sheet. Not sure what to do about that as they don’t do anything at this point.


It seems that it’ll only work properly on closed shapes, but that’s more of a problem of max’s conversion of shapes to mesh.
Would it perhaps be better to base the helper off a dummy instead of a point? Dummies don’t have any parameters visible in the trackview.


I didn’t try it as I wasn’t sure you could add a mesh using a dummy, I will see if it works.


I just tried it at my end and it works. You still get the dummy track in the trackview, but that’s it (besides your options of course).
One other thing I found with it and I know it’s still in beta, but loading a file with the helper set as a custom object comes up blank. The helper seems to lose it’s connection to the custom object.


Ya that works. I’m part way done with a first pass on writting it all to an XML. I think that will be a good solution as it will be very flexible. I guess with shapes I will also have to check to see if they are closed.


Hi Paul,

Good idea. I use your spline controls a lot and sometimes have to swap the contents with another if i change my mind about what a joint is doing. I assumed you’ve yet to add the position and character options as they dont show anything up for me. (i guess you are going to add a text field entry for the character anyway)

The thing i like about your spline controls objects is that i can get all the controls by using a shape selection filter, and there’s no chance of selecting the rig helper objects. I have found this better as people tend to unfreeze objects like rig dummies.


Really nice.

I think I’d prefer a dropdown to radio buttons though; it looks and feels a little cumbersome with that many options.


Well right now I have a dotNet listview, looks nice and clean. Reads all the options from an xml file. I will endevor to allow merging of xml files but for now cut and paste would do as well.

As for the filtering I tend to create even a custom filter for shapes that have a given property on them so we can filter exactly what we want. I will include a filter for this helper class in the package so that you can just use it.

I have changed it up from penControl to penHelper as well. So once I release this please get rig of the old.


OK try this on for size.

Certainly not complete but good enough to test.

You don’t need to save the preset for a custom shape to show remain persistent from Max session to Max session. All the data is stored in the modifier for the current shape.

Saving the presets will save the current shape to a predefined XML file stored at plugins/penProductions/penHelper.xml

Duplicate names are not allowed but it is case insensitive so you can have “test” and “Test” for instance.

Scale and size are not saved with the preset, should they be?

When you add a custom shape it takes on the size of the shape that it is copying. Should I look at normalizing the scale of the copied mesh so that size if more relivant?

When shapes are stored they are stored at there original size and the size and scale values are aplied when the shape is displayed.

Let me know what you think.


I have also thought about adding offset position and rotation spinners, what do you think?


Here is a presets file. Needs to go in plugins\PENProductions\penHelper.xml or it will not load.

I will create an install script for it as soon as it is all done. Best to load the script in the same location as well as that is where it will reside.


Major bug, Busted something some where. It doesn’t load the correct option!


Bug is fixed!


Another little bug. With some of those presets they are splines converted to a mesh and they are flat. What this means is you can’t select them from the back side. I will have to rebuild them all with an extude on the spline first.


Very cool little tool here. Perfect for making customizable control objects. Truthfully the stock ones that you have on your website were getting a bit boring. :slight_smile:

I would definitely like to see the scale be stored and taken into account when making new shapes. Or maybe just scale whetever mesh is inputed down to 1 unit using the bounding box.


I now have an option for normalizing the mesh when first selected. It work based on the length of the firthest vert, I guess I could use the longest axis of the bounding box as well.

List is now ordered as well and I have several new presets that will ship with it. Any one want to make me a few that will be come defaults? Just send me the XML file that is saved and I will merge them together.

Just drag and dop in your viewport and it will be found under create/helpers/PEN Helpers
Max 9 or higher only as it uses dotNet objects.
Here is the latest: