PistonPusher v6 is available:
Parts:
- V6 comes with an asset browser library instead of the piston and parts system
- Parts are now limited by limitations dictated by the asset browser, essentially this means (almost) no limitations. As both single objects and collections are supported. Even parent hierarchies can be restored. Hitting CTRL Z after appending an asset also restores that
- PistonPusher v5 parts used constraints to parent objects, v6 parts and onwards don’t anymore. The blender parent/child relation system is used instead but you are free to use constraints anyway if you need them
- Rods with secondary objects do not need constraints anymore as they too have been simplified
- Origins, generally speaking don’t matter anymore. The only notable exception are mounts. Which still should have their origin at their pivot point. But this is truly a matter of best practice and saving yourself some time later on
- Templates have been removed but you’ll find cylinder segments and tie rod mesh objects that’ll allow you to assemble them as needed
- No name requirements anymore.
This does mean that the collection management system for pistons has also been removed. This system was of limited use and in a few cases made my job just that much harder. The snap modal also became less accessible (as pistons have to be appended first now) but I’m pretty confident that most people will prefer to model and rig them in place, completely avoiding the need for the snap modal in many if not the vast majority of cases.
Quick Rig system:
Quick rig pistons started off a simple alternative to the creation modes. Compared to stretchy creation mode pistons, these are a lot simpler. The stretchy creation mode rigs grew into spaghetti rigs and can introduce their own issues when one tries to use them in more advanced scenarios. The quick rig pistons don’t suffer from this and the gap in functionality has almost been closed completely as v6 introduces the option to make stretchy quick rig pistons.
These stretchy rigs are simpler at the expense of not being able to rotate individual piston ‘parts’ anymore. This is also an example of things that got problematic in advanced scenarios because the rig has to account for any physical implications set by your mounting situation. Rotating mounts definitely changes the physics of a system. (Read: The forces that move objects interact differently).
Version V6 focuses on the quick rig system as it is a much simpler system that just doesn’t get in the way. Combined with the parenting and snap and drag tool you’ll have everything you need to make the actuators that your projects need. They can also be saved as assets if you wish to re-use them later on.
UI:
The changes introduced by this version allowed me to simplify the menu quite a bit due to the absence of piston and parts previews. You’ll find any keymaps in add-on preferences too from now on.
Installation/Updating:
- Disable and remove pistonpusher v5 (restart blender if issues arise with next steps)
- Install pistonpusher v6 using blender’s add-on manager, optionally configure hotkeys, save preferences if needed
- Load another file, new or old or restart blender, this ensures the asset library is registered
If you made parts for pistonpusher or have a collection of user made pistons, you’ll find a useful script bundled with the add-on.
Recommended approach:
- With add-on v5 still installed: Go to add-on prefs and copy path if needed.
- Follow v6 installation instructions above.
- open the importassets.blend file in the pistonpusher zip. Configure and run import_assets.py, instructions in comments. Save these file(s) somewhere.
- Open file(s) that you saved earlier. Mark assets if you didn’t let the script do it. Save file(s) in library of choice.
The script found in the above mentioned file can import both pistons and parts. It can also rig the pistons for you and handle parts to a certain extent. More complex parts will need to be checked manually especially if these used empties to drive an object. It’ll work best with mounts and relatively simple connector parts in the case of parts. If it can’t rig a piston for some reason, it’ll tell you which one it is in console and skip it. User parts can be filtered, directories as well. Script might take some time to run, as in, 10 seconds to a minute, I suppose, if library is large.
Adding your own assets in v6 and onwards:
You’ll have two options:
- Make your own independent asset library: https://docs.blender.org/manual/en/latest/files/asset_libraries/introduction.html
- Set an external library path, pointing to the directory where you save all blender asset libraries.
If you choose option two, be sure to prefix your file names with ‘user’ or ‘user_’. If you don’t, you run the risk of losing files if they get overwritten with an update later.
From now on, assets can be pretty much anything. The only thing that matters is that mounts have their origin at their pivot point. For mounts made of multiple objects, the root object should have its origin at the pivot point.
Changelog:
- Added snap and drag tool (toolbar)
- A tool designed to help assembling things/adding object to (planned) piston instances during the modelling/blockout phase
- Also has a view based ‘anchor’ snap mode
- Piston planner tool:
- Added to toolbar, like the snap and drag tool, starts with mousemove, exits to box select on finish/cancel
- Improved snap modal support
- PPI empties are rotated -90 degrees(local y axis) after they are created
- Snap modal:
- Now resets scale on exit/cancel
- Removed support for v5 creation mode pistons
- Added ability to change (scale) sensitivity (shift+scroll)
- Only requires a single planned piston empty selected(If it can’t find the corresponding empty it’ll let you know)
- Now expects custom properties in certain circumstances. See below (Still supports regular empties)
- WAT modal:
- A single lmb/rmb click will exit/confirm operator while ‘working on selection’ (only if alt was held while initiating)
- enter and spacebar key can be used like the lmb key
- Replace piston:
- Only available if piston is constrained
- Hose attachment points:
- Spawn with (cap) fittings disabled, haps can be edited after a data transfer was set up
- Only available if an object is selected and it is the active object
- HAP: Set up HAP DT:
- Fixed mesh row dots being inaccurate if the hap parent is scaled
- Copy booleans tool overhaul:
- Now works regardless of source and target orientation
- Applying modifiers will be significantly faster but can often be avoided now
- Ctrl empty has show in front enabled
- Improved support for mirror modifiers
- All nested/deeper child booleans are copied as well instead of just the first ‘layer’
- Ability to skip booleans has been removed, this feature would be hard to utilise as indexes would become much more unpredictable
- Linked duplicate radial array:
- Rotate menu now shows even if not all array instances have children
- Added support for normal parent-child relations
- Create piston:
- Can’t add mounts anymore due to removal of parts system
- Fixed error due to blender api change introduced with blender 3.4
- Added Quick rig: Set up stretch rig:
- Stretchy rigs, but better. And much easier to set up
- Works/available with any piston object selected technically but only the objects that should stretch should be selected
- Supports only mesh objects for stretching, recommend using geometry nodes for anything pipes. Hoses typically aren’t relevant at this stage yet.
- Origins still matter as only stretch objects are evaluated vertex by vertex
- Works regardless of orientation
- Added Quick rig: duplicate piston:
- Should be used to duplicate a piston if you need multiple instances, updates custom properties
- Available if a collection containing a piston armature is selected
- Hold shift for linked duplicate
- Should be used to duplicate a piston if you need multiple instances, updates custom properties
- Added Quick rig: Remove rod:
- Removes last added piston rod, usable with any object that’s part of a piston armature
- Updates limit distance constraints using posebone custom properties added when the rod was set up first(only appplies if reverse extension order was used)
- Quick rig: Rig piston:
- Bone scale is set automatically only if bone scale = 0.0, adjusted values for a much more reasonable auto-size
- Any children of the objects used to create a piston are automatically re-parented to the correct piston bone
- Quick rig: Add rod:
- rod bone added by operator is hidden
- Operator is usable with any object that’s part of a pistonpusher armature instead of any armature
- Added object selector for normal extension order, can be used to specify the leading rod so that its dimensions can be used
- Added green dot that represents the relative location of the (cap end) end of the added or leading rod when extended(see docs for more info)
- Evaluates pose bones instead of edit bones, fixing issues if bones were moved before adding a rod, which happens when extending/retracting a piston
- Trailing distance UI is now offset based on leading distance
- Leading and trail distance inputs now work as offsets, allowing negative values, with the actual values being based on the armature and/or rod dimensions (if available)
- These changes make it so that you typically won’t have to change leading/trailing distance
- Quick rig: Add cardan joint:
- Removed, cardan/universal joints now come as part of the asset library, a few variations have been added as well
- Quick rig: Combine cardan joint:
- only available if a cardan/uni joint armature is actually selected
- Quick rig selector:
- Changed in which order and how some operators are polled(and then added to the list if polled true)
- Tools that offered both a modal operator and an older variant now only offer a modal operator
- Some modal operators relied on mouse event pass_through to select objects(or bones etc.) This is problematic if a user has configured blender to select objects with the right mouse button. From now on, these modal operators/tools call bpy.ops.viewd3.select() when needed instead
- Parts and pistons are now bundled with the add-on as an asset library. This does allow for a slightly more streamlined installation process. Users won’t have to trigger asset updates if an external library is used
- Parts and piston (collection) management systems have been removed in favor of the blender asset browser. As such, both parts and pistons are technically blender assets from now on
- Removed Reset Hooks and Remove Constraints operators. Both unneeded as you won’t have to reset hooks and constraints can be removed with the set child of constraints tool
- In most cases where operators/functions still relied on collections, this has been replaced with custom properties:
- Piston armatures don’t need their own collection anymore
- Snap modal only requires that a piston object and planned piston instance empty are selected, even if the planned piston empties aren’t in the same collection
- Deleting objects that received such a custom property could be problematic, currently the only objects you really shouldn’t delete are: Piston armatures or their B empties and planned piston instance empties. This does not apply if you want to remove the planned piston instance or piston from the scene all together
- ‘placeholder’ propertygroup renamed to ‘pp_props’
- Added keymap to add-on preferences
- Numerous UI changes