PistonPusher is the result of my efforts to standardize a niche in asset creation: Pistons.
I’d kindly invite you to look here if interested:
What is pistonpusher
Pistonpusher is an add-on that can quickly rig pistons/actuators in a special way. There are also features that help placing them. These pistons are special in the sense that they are far more flexible than pistons made with bare minimum solutions. They are modular, come with their own armatures and use empties and drivers to provide control. They can also be posed in object mode!
Pistons can exist out of any number of objects.
Individual elements can rotate freely, think of the rod, mounts and cylinder themselves.
Pistons can easily be made longer and shorter. In both retracted/extended states. This behavior is disabled with a single click.(2 if you count selecting the piston’s length anchor)
(inverted) telescopic pistons are supported.
Pistons are easily removed from a scene.
Easy to place and connect to a model/armature. There a multiple snap tools, including a piston replace tool, for quick changes!
Custom object and collection management system to keep order among all these objects.(No duplicate names if you took the time to name objects)
Instances of a type are derived from the first instance that was placed meaning you can edit multiple pistons in a target scene easily.
Materials can be added beforehand.
This add-on tries to prevent some repetitive tasks and makes sure no time is wasted! You’ll always be able to take a design ‘back to the drawing board’ in case major changes are required. It’s most useful in mechanical set ups that require tweaking/adjustment before it can be animated properly. Like a landing gear for example.
So there’s potential for concept artists but also animators. They animate well, joints can be included. Pistonpusher does most of the leg-work and offers a solid way to re-use your pistons. You essentially just attach the piston to your model/rig/character. Keeping the animation data of your target model separate in most cases. If need be, a piston can also be stripped of its armature so that it can be incorporated into another armature.
What can it not do?
Pistonpusher is a dedicated solution for pistons/actuators. It’s not a general purpose rigging kit. Any tools provided in the scope of general rigging, like the set bone as parent tool, or the bone selection mode of the set child of tool, really just make it easier to work with modular rigs. Mainly by streamlining the process of mode switching.
You can now snap a piston into position right away by clicking on a thumbnail ( forgot to add that in the video) additionally, while you’re at it, you can cycle through all types and sub directories you have. Can be ram intensive though. Also added a use case that demonstrates where I would use it.
I used quite some assets that came with kit ops for this scene, and even more from a free kit ops pack made by Andrew Averkin:
Adding static connectors (and pipes) is also trivial, mirrors are handled as parts are added to the scene.(only mirrors with no mirror object set). (hose) connectors that are able to rotate around the piston are best added after the constraining process.
It’s pretty far done now. If i don’t run into issues while testing you can expect the update to be available this weekend.
I just uploaded 1.5.3 and a new parts directory. It’s recommend you replace the parts directory completely as most files had a name change. Hopefully you haven’t added too much parts yourself yet.
Snap modal now allows camera/view control when pressing middlemouse button/scroll
Rod end extrusion cutters now maintains offset while adjusting the piston rod radius.
‘Rods’ collection is now named ‘Rod’ when creating a piston
Fixed origin of the t mount
Once you constrained a piston you can’t change mounts anymore. Instead you can go back to the initial menu used to start the process.
Save function bug - Parts have their file names changed to accomodate. It’s best to replace your parts directory with the new one.
Mounts saved with an offset on the X axis will have this offset preserved once added to the scene. (Mainly useful for trunnion mounts)
Mounts will now automatically scale down to a sensible size.
Control empties or parent objects(connectors) are now selected when mounts and connectors are added to the scene.
4 more parts. 3 mounts, 1 banjo connector.
2 templates: single and double action welded rod designs. These have extrusions ready for connectors.
Part prepare/make feature! you’ll find this in the create panel as well. It allows you to easily prepare connectors, mounts and rods so that they can be used while creating pistons. It works like this:
You should create the mount in a vertical position. The bottom-most face(s) will connect/touch with the piston rod or cylinder. This face should be at the world origin, or slightly below it if the rod sticks into the mount. Then, the origin of the main object should be set to its pivot point. After this you can select all child objects and lastly the main object. Then click on make. selected objects will be parented to the main object, an empty is added and the mount is rotated into the proper position. For connectors the process is the same but they won’t be rotated or parented to an empty.
Rods are created in a horizontal position. You can add details and child objects as well. You can basically just take a cylinder, off-set its origin to a number < 0 on the y axis. All vertices further than the origin relative to 0(y axis) will stick out of the cylinder once you place it later on. Due to the way the rod is scaled, child objects are handled slightly different: You’re supposed to select only 2 objects, even if there are more. The piston rod, which should be selected last so it’s the active object and the ‘main’ (or biggest) child object. (All other objects are parented to the selected object.) Then you can click on make.
Note that this adds the proper collections, constraints and adjusts objects names so they reflect the expected convention(for mounts too). I still recommend giving your objects sensible names. You don’t need to name the piston rod, it’ll be named properly for you. I use transformation constraints for decorative pieces that you might find on piston rods, these are added too. You can add detailing geometry to the rod itself too now but only if you added child objects too(due to cylic dependencies that would otherwise form by hooking these vertices to the ‘p_rend’ empty).
Mouse input modal operator logic adjusted, it’s now very similar to blender’s native scaling/resize functionality. Cleaned up various quirks with the tool as well.
Scaling is now toggled with the S key, shift can be held for finer adjustments. Original scale is preserved if cancelled. If the pistonpusher menu remains open after moving the mouse away, pressing shift will close it.
Certain keybinds returned a 'PASS_THROUGH needlessly, this has now been fixed.
The modal operator has new features: It can find the length anchor belonging to the instance it’s currently snapping. It’s currently only designed for pistons with a single length anchor This means that you can now press ‘E’ while snapping and drag the length anchor to the desired location. Only works if the length anchor has ‘Length anchor’ in its object name. You can also press ‘R’ to reset scale. I also disabled the ability to scale negatively.
Added 2 more connectors: One with a small oil reservoir, One flat like disk thing by lack of a better name.
Fixed issue with connector 6, a part was not in the right collection
Changed connector 0,1 and 2 so that they are more realistic,
Added a circle ngon for users that have cablerator, to connector parts that could use one.
Changed connector 11, reduced geometry in flat areas
Added 4 connectors, 2 of these have control empties to adjust them as you see fit, the other 2 are a nurbs and bezier pipe
Added a small kpack that contains 2 different bolts and 1 nut
After you made a part, save panel will now show, set at the proper sub directory
Added a simple notification system, these appear in the bottom center of your 3dview/viewport and give information about what’s happening.
Can now press ‘H’ while snapping to show modal keybinds. Like notifications, they will automatically dissappear after 3 seconds. You can change this duration in the add-on preferences
Fixed a bug that would occur if you tried to add a piston to the scene while having 2 objects selected which were not empties. It originally didn’t break the functionality but it did cause an error. This is now handled properly and the operator is cancelled when you try to do this.
Fixed bug when adding part while not in the piston creation process, this bug also did not break functionality and simply caused an error in the console.
Fixed bug when replacing a piston rod during the piston creation process.
As a result of this, we’re adding some really fine, high quality hydraulic cylinders. We just added 4 new pistons. You’ll recognize some of these in masterxeon1001’s videos. A big thanks and shout out to him for helping me out and allowing me to add his work to PistonPusher.
Rods are now hooked to the rod anchor automatically if there is not a vertex group. This was a bug related to the custom template which did not re-hook the rod properly. For most rods, you can skip hooking the rod from now on.
Prepare operator can now work without a cutters collection.
Added a handler that fixed an issue after file reload, related to the piston select tool.
Added curve support for the creation system constrain operator.
Added a button to toggle subd modifiers viewport visibility of all objects. Found in N panel and pop up menu.
Ensured that the ‘go back’ button appears in custom template mode as well once constrained.
Masterxeon1001 has also been very busy!
Added 2 constrained game ready pistons.
Hydro-electric game ready bonus file
Added a ‘plunger’ piston.
Updated hydro-electric variant to a version with a better mesh and mount.
Skipped some numbers, kinda, pistonpusher 1.5.11 is out now.
Everything that was wrong with the creation system should be fixed with this update. Pistons that are constrained from now on can also be rotated in an easy way, on a per part basis ( mount/cylinder/rod).
UI works properly now and refined the constrain configuration opt-ins a bit more.
Rods are finally handled properly
rotation drivers are added when you constrain a piston now. This means you can freely rotate the cylinder and piston rod now. To rotate the piston rod(and child objects), select the piston rod anchor. For the cylinder, you can rotate the object that is called 'Cylinder. There must always be an object called ‘Cylinder’ from now on.
rear length anchors come with another empty called _rla now. This is the empty that you want to move now, if you wish to make the cylinder longer.
Pistons that are constrained without a length anchor, or without tracking constraints are no longer stretchable, this was needed so that you can easily rotate the cylinder in these cases too.
This only applies to newly constrained pistons. I still have to re-constrain all assets.