First implementation of the PoseSaver UI in the Animation Pack. This is stage one and under testing. Lots of features planned but I want to get it out there and tested before I go too far with the backend of the code. Also added a config file so that the core of the UI is stored between Maya sessions.
Big update to the Pose Manager UI and general Pose code. Also modified the Setups to run under MacOS and Linux
MetaClass API included for testing. Script Inspector now integrated to the ScriptEditor RMB menu's. Various other bug fixes.
HUGE update to the code and toolset. Integrated MetaData into the entire setups with new api.
MetaData has been fleshed out hugely since the last release, lots of additions and much better attribute handling across the board. There's a few good test examples that I'll ship which should take you through the MetaData basics. This is the core of the updates and has taken a lot time to nail down. It's also now threaded into the main UI's and FilterNode calls.
MetaData NodeUI: Added a new MetaData nodeUI for managing and finding MetaData in your scene. This has a RMB menu for filtering for specific class nodes.
Mirroring of Animation and poses is now supported via the MetaRig. This rely's on markers laid down when adding a MetaRig solution to your setups. I may in the future make this more accessible to non-coders and add a MetaRig UI for binding your rigs to the setups.
MouseMoCap: New RecordAttrsUI added in the menu which allows you to marker channels in the channelBox for recording, when you hit the record, the timeline is played and all changes to those attributes recorded and turned into keys.
Fixed: The timeOffset of animation on selected nodes would fail if you had AnimationLayers, this should now be fixed.
Fixed: MenuSyetem fixed so you can do Red9.start() multiple times
Fixed: Preset management for MetaRig flag now fixed
v1.26 - patched
Added the attrMap functionality to the LockChannelUI for storing the status of entire rig hierarchy's
Moodified the MetaClass handling of message attributes
v1.27 - HUGE UPDATE!!
New Pose Saver with full relative, projected and absolute load methods. Allows you to load poses relative to the selected node rather than just in the world space they were stored. Pose Ui also has 2 new modes, 'project' or 'local', in project all save and delete functions are disabled, intended for collaborative studio use.
New Pose Point Cloud functionality added to allow you to adjust the world space of a pose in one simple go, also gives you skin geo reference to line the pose up as you want. Very powerful addition when used correctly.
Fully fleshed out MetaData API. Can't push this one enough as for all the TD's out there this is a big deal. This allows you to wire complete subsystems to your rig and navigate in code seamlessly.
Expanded FilterNode support so in the hierarchy search fields you can now use the 'NOT:' or '=' operators in the search, matching nodes with an attribute whos value = a given, or NOT ='s. Same with the nodeName search.
SceneReview Tool added for tracking notes and feedback live in the scene. Tracks conversations and has a live mode which opens the UI on the latest comment when the scene is open.
RandomizeKeys - added to the GraphEditor curve menu for adding and generating noise in animation curves.
- Red9_Anim - PoseLib now supports subfolders in the UI
- Red9_Anim - CameraTracker now in the Red9 Menu - generates an auto tracked, or panned, camera focusing on the selected node - very usefuyl for visualizing moCap
- Red9_Meta - metaHUDNode gone in - designed as a debug tool to enable you to easily monitor attributes in a managed HUD in the Maya viewports. Any attrs added to the mNode is monitored and added to the drawHud call. This is work in progress
- Red9_Anim - AnimtionFunctions now has a function for bindNodes, uses the same filtering and matching setups as all the rest of the code and allows you to bind full filtered hierarchies together, either direct connects or parentConstraints
- Red9_Anim - All animFunctions now accept matchMethod as an arg, this allows you to either accept 'prefix stripping' in any node matches or use 'base' = name for name exact match.
- Red9_Anim - PoseLib subfolders bug fixes so that you can sync subfolders to project libraries with the 'CopyLocal>>Project Pose' RMB call. This makes the missing subFolder if it's missing in the Project structure
- Red9_General - Timer decorator now shows module/class and func in the report feedback
- Red9_Meta - Added **KWS update support to the addAttr call, if the attr exists and you've passed in kws then these will get synced and updated if in the internal 'valid edit kws' list. Great for use in the __bindData__ call to sync properties.
- Red9_Core - Added more logic to the main MatchedNodeInputs call. Now allows you to pass in 2 hierarchies directly for processing. This means you can by-pass the filter processing in all animation Functions and pass 2 hierarchies directly in for processing!
Fix - Red9_Meta - type 'unicode' value's weren't being supported correctly in the setAttr func
Fix - Red9_Anim - MirrorSetup - loadMirror was failing to load custom Axis correctly.
Fix - Red9_Meta - isChildNode() wasn't dealing with longNames correctly
Mod - Red9_PoseSaver - batchPatchPoses() modified to make it more flexible. added arg to stop it always resaving the pose after patchfunc has been run. also now passing poseFile back into patchfunc
New - Red9_PoseSaver - poseHandler.py support added! - This is a BIG deal for TD's out there as it gives you access to all the internal node handling at a sub-folder level. Allows you to fully customize the pose behaviour on a folder basis!
Fix - Red9_Anim - PoseUI wasn't remembering the last subFolderyou were in.
New - Red9_Anim - PoseUI now has a RMB Make Directory call
New - Red9_Anim - PoseUI now has a 'Debug:Copy poseHandler.py to Folder'. This is an avanced option for by-passing the node handlers on a folder by folder basis!
Mod - Red9_Anim - 'Ctrl' click when launching the AnimationUI will boot it non-docked
Mod - Red9_Meta - Calls that previously only took an mType/mInstance as a [string] arg now also accept the class too... so r9Meta.getMetaNodes('MetaRig') and r9Meta.getMetaRig(r9Meta.MetaRig) both are accepted.
Mod - Red9_Meta - getChildren now takes an additional arg 'cAttrs' which can be used to only return children connected via a given attr name (this uses wildcards and will take a list)
Fix - Red9_Anim - added full traceback to the error handling in the AnimUI
Fix - Red9_Meta - added full traceback to the error handling in the nodeLockManager and thus the main class
Fix - Red9_Meta - setAttr wasn't raising errors due to the decorator. Patched
Mod - Red9_Meta - updated MetaHUD, simplified event handler, now connected to refresh by default
New - Red9_Meta - Added HUD wrappers now being called by the ChannelBox RMB menu - gives you access to the MetaHud monitors and makes the setup more integrated
Fix - Red9_Meta - Bug fix in the getConnectedMetaNodes. This was returning connected mNodes via all attrs, not just those connected via message links. Hence if 2 mNodes were connected via tx that would have passed through, which is wrong!
New - Red9_Meta - added a getMClassInstances() function which returns registered metaClass that are subclasses of the given arg. Good for grouping classes based on core base classesMod -
Red9_setup - modified the way I hack the native menu's, pulled the main calls and menu's out into a single mel file for all Maya versions to make things easierFix -
Red9_PoseSaver - the buildInternalDict call wasn't resetting the poseDict before running, this meant that if you were running this in a batch mode, the dict would just keep getting extendedMod -
Red9_PoseSaver - modified the poseHandler.py setup, now allows you to directly hack into the RMB popup menu in the poseUI and add your own items via the 'posePopupAdditions' funcMod -
Red9_PoseSaver - modified the posePath handler, if either the 'local' or 'project' main folders contain no poses then the UI switches straight to the subFolder handlerNew -
Red9_General - added 'Red9_Sound' menu and functions to the TraxEditor!
Mod - Red9_Anim - Modifications to the way the posePopupAdditions() in any poseHandlers.py file are built, I now pass in the main AnimUI class object directly so you can grab things like the poseDir, or selected pose straight from the UI Object. See updated example file for more info
Fix - Red9_Anim - AnimUI resize behaviour fixed so that the pose and UI resize correctly
Fix - Red9_Core - FilterNode searches now strip whitespaces from the args prior to running the searches
New - Red9_Anim - Added the ability to modify the pasteMethod used byt he copyKey calls directly in the UI
Mod - Red9_Pose - renamed main procs to "poseLaod" and "poseSave", also now allow both of these not to take a filepath so you can use it as a poseCache
New - Red9_Pose - added a "poseSaveCache" and "poseLoadCache", these are also capable of pushing a pose to an attr on the mNode itself, great for storing internal poses such as zero poses directly onto a rig.
New - Red9_Meta - added a "poseCacheStore and "poseCacheLoad" to MetaRig which you can use as a pose cache, OR you can serialize a pose to a given attr on the mNode itself. We use this internally to store a zeroPose on the MetaRig directly.
New - Red9_Anim - Interactive FilterCurves added as new feature and RandomizeKeys also now has interactive mode - BIG DEAL for animators!
Mod - Red9_Anim - Extended the FilterCurves functionality and added an interactive resample to it. Also now cache the current state of the curve display so that the toggle returns your last settings for display tangents and buffers.
Fix - Red9_Anim - MAJOR CRASH under Maya 2014 when using the poseSaver, this is now fixed, something's changed in the way Maya is managing popupMenu's!