TL;DR: Download and extract the files; Drag and drop the file "setup_drag_drop_maya.py" onto the Maya viewport;
Select the option "Install", "Uninstall" or "Run Only"; Enjoy!
This script collection comes with an auto setup tool ("setup_drag_drop_maya.py") to call it drag and drop the file on your Maya viewport. From the setup window you can "Install", "Uninstall" or "Run Only".
How to run it step by step:
After installing, you can delete the downloaded/extracted files (as they have already been copied)
When installing it for the first time, Maya might show you a small dialog window saying "UserSetup Checksum Verification", you can confirm it with a "Yes". This window is only letting you know that the "userSetup.mel" script was modified. This is a security feature from Autodesk that is used to tell the user that the startup script was modified. This check is used to prevent infected scenes from modifying the startup script without the user knowing. In our case, we did it deliberately as part of the installation process, so you can just confirm it.
The setup window offers the option to run the tools without installing them. To do this, follow the same drag and drop steps and click on "Run Only" instead of "Install". This is going to load the tools from the location you have them, allowing you to run it one time only.
Simply install it again. The auto setup will handle the file changes.
If updating a major version, it's recommended that you uninstall it first before installing it again. This will eliminate any unnecessary files.
In case updating it manually, make sure to overwrite (replace) the files when moving them.
Users running windows can also use the "setup_express_launcher.bat" file to run setup options without opening Maya.
The same file can be used with arguments to run a launching option directly. For example, a shortcut with the argument
"-launch" ("..\setup_express_launcher.bat -launch") will open Maya directly with the option "Run Only" from the GUI Setup window, essentially creating a shortcut to use the tools without installing them.
The package adds a dropdown menu to the main Maya window. It provides the user with easy access to the other scripts based on categories.
This menu contains sub-menus that have been organized to contain related tools. For example: modeling, rigging, utilities, etc...
How does Maya know to run the script and create the menu?:
When you install the script package, it adds a line of code to the "userSetup.mel" file. This file gets executed every time Maya opens.
Help > About:
This option opens a window showing basic information about GT Tools.
Help > Re-Build Menu: It re-creates the GT Tools menu, and does a rehash to pick up any new scripts.
Help > Check for Updates:
Opens the script "gt_check_for_updates" to compare your version with the latest release.
Help > Toggle Develop Mode: Toggles the state of development mode. When active a new sub-menu "Develop" appears under the main drop-down menu. This sub-menu contains tools and functions used for the development of new tools.
Help > Installed Version: What version is currently installed.
This script compares your current GT Tools version with the latest release from Github. In case the version installed is older than the latest release, an option to update becomes available.
In this window you can also control how often the script will automatically check for updates.
Status:
Result from the comparison. In case you have an older version it will let you know that the script package can be updated.
Web Response:
The script needs to ask Github for the latest release to be able to compare with the one you have. In case internet is not available or a firewall blocked the connection you will see the error code here. (These are HTTP status codes)
Re-Build Menu: It re-creates the GT Tools menu, and does a rehash to pick up any new scripts. (Good for when updating, so you don't need to restart Maya)
Installed Version:
Version currently installed on your computer. In case you never installed the menu, it will be (v0.0.0).
Latest Release: Latest version available on Github.
Latest Release Changelog: Here you can find a list showing all the main changes applied to the three latest versions. The version number can be found on the top left corner and the release date on the top right corner.
Auto Check For Updates: This function controls the behavior of the auto updater. In case active, it will use the interval value to determine if it should check for new releases. The user will only see the update window in case there is an actual update. (This function has no impact in your Maya startup time as it only gets executed only when necessary and it waits for the program to be idle. Click on the button to toggle between Activated/Deactivated
Interval: This is how often the script will auto check for updates. Click on the button to change between the available intervals. (5 day, 15 days, 30 days, 3 months, 6 months, 1 year)
Refresh: Checks for updates again.
Update: This button is only available in case there is a new update available. When clicked it opens the page for you to download the latest version. Simply install it again to update.
Semantic Versioning: MAJOR.MINOR.PATCH
Script for quickly renaming multiple objects.
Feedback is given through inView messages at the left bottom corner.
Modes:
- Selected: uses selected objects when renaming.
- Hierarchy: uses hierarchy when renaming.
- All: uses everything in the scene (even hidden nodes)
Other Tools:
- Remove First Letter: removes the first letter of a name.
If the next character is a number, it will be deleted.
- Remove Last Letter: removes the last letter of a name.
- U-Case: makes all letters uppercase.
- Capitalize: makes the 1st letter of every word uppercase.
- L-Case: makes all letters lowercase
Rename and Number / Letter: Renames selected objects and add a number or a letter to them.
- Use Source : Keeps the original name and only adds the number/letter.
- Start # : first number when counting the new names.
- Padding : how many zeros before the number. e.g. "001".
- Uppercase : Makes the letter uppercase.
Prefix and Suffix:
Prefix: adds a string in front of a name.
Suffix: adds a string at the end of a name.
- Auto: Uses the provided strings to automatically name objects according to their type or position.
1st example: a mesh would automatically receive "_geo"
2nd example: an object in positive side of X, would automatically receive "left_: .
- Input: uses the provided text as a prefix or suffix.
Search and Replace: Uses the well-known method of search and replace to rename objects.
Script for sorting outliner hierarchies. Options will not re-parent objects, only change their order.
Utilities / Settings:
- Move Up: Moves the selected objects up in the hierarchy order.
- Move Down: Moves the selected objects down in the hierarchy order.
- Move Front: Moves the selected objects to the top of the hierarchy order.
- Move Back: Moves the selected objects to the bottom of the hierarchy order.
- Shuffle: Randomizes the order of the selected objects.
Sort Ascending/Descending:
Determines if the output of the operations will be in an increasing order or decreasing.
Sort by Name:
- Re-order selected elements based on their names. For example:
"Object_B", "Object_C", "Object_A", would become:
"Object_A", "Object_B", "Object_C"
This also works with numbers. It reads the letters from left to right.
Sort by Attribute:
- Re-order selected elements based on an attribute. For example:
"Object_B.ty" = 5, "Object_C.ty" = 10, "Object_A" = 1, would become:
"Object_C.ty" = 10, "Object_B.ty" = 5, "Object_A" = 1 (matching the order of the values)
You can also use user-defined/custom attributes by filling the text-field on top of the "Sort by Attribute" button.
This script allows you to update selections to contain (or not) filtered elements. You can also save and load previous selections.
Element Name: This option allows you to check if the string used for the object name contains or doesn't contain the, the provided strings (parameters).
Element Type: This filter will check the type of the element to determine if it should be part of the selection or not.
Element Type > Behavior (Dropdown Menu): Since most elements are transforms, you can use the dropdown menu "Behavior" to determine how to filter the shape element (usually hidden inside the transform).
(You can consider transform, shape, both or ignore it)
Visibility State: Selection based on the current state of the node's visibility attribute.
Outliner Color (Transform): Filters the option under Node > Display > Outliner Color. In case you're unsure about the exact color, you can use the "Get" button to automatically copy a color.
Store Selection Options:
Select objects and click on "Store Selection" to store them for later.
Use the "-" and "+" buttons to add or remove elements.
Use the "Reset" button to clear your selection.
You can save your selection in two ways:
As a set: creates a set containing your selection.
As text: creates a txt file containing the code necessary to recreate selection.
Create New Selection: Uses all objects as initial selection
Update Current Selection: Considers only selected objects
This script displays a list with the name, type and path of any common nodes found in Maya.
You can select the node listed by clicking on it or change its name or path by double clicking the cell.
The icon on the left describes the validity of the path. If the file or directory is found in the system it shows a green confirm icon otherwise it shows a red icon.
Auto Path Repair: This function walks through the folders under the provided directory looking for missing files. If it finds a match, the path is updated.
Search and Replace: This function allows you to search and replace strings in the listed paths.
Refresh: Re-populates the list while re-checking for path validity.
Search Path: A directory path used when looking for missing files.
Supported Nodes:
file (UDIMS and Image Sequences), audio, cacheFile, AlembicNode, BifMeshImportNode, gpuCache, MASH_Audio, aiPhotometricLight, aiStandIn, aiVolume, RedshiftProxyMesh, RedshiftVolumeShape, RedshiftNormalMap, RedshiftDomeLight, RedshiftIESLight, imagePlane
Script for quickly coloring elements in Maya.
Feedback is given through inView messages at the left bottom corner.
Modes:
- Drawing Override: Utilize "Object > Object Display > Drawing Overrides" to set color.
- Wireframe Color: Utilize "Display > Wireframe Color..." to set color.
Target:
- Transform: Colorize actual selection. Usually a "transform"
- Wireframe Color: Colorize the shape node inside the transform
Current Color:
The color used in the operation. Click on the color to open Maya's color picker.
Color Presets:
A list of common colors. When clicked it sets the color.
Set Color For:
- Outliner: Control the outliner color
- Wireframe Color: Control the wireframe color seen in the viewport
Script for transferring translate, rotate or scale data from one object to another.
Transfer (Source/Targets):
1. Select Source 1st
- Wireframe Color: Utilize "Display > Wireframe Color..." to set color.
Target:
- Transform: Colorize actual selection. Usually a "transform"
2. Select Targets 2nd,3rd...
3. Select which transforms to transfer (or maybe invert)
Transfer from one side to the other:
"From Right to Left" and From Left To Right" functions.
1. Select all elements
2. Select which transforms to transfer (or maybe invert)
3. Select one of the "From > To" options
e.g. "From Right to Left" :
Copy transforms from objects
with the provided prefix "Right Side Tag" to objects
with the provided prefix "Left Side Tag".
Copy and Paste Transforms:
As the name suggests, it copy transforms, which populates the text fields, or it pastes transforms from selected fields back to selected objects.
Export and Import Transforms:
Exports a file containing Translate, Rotate, and Scale data for every selected object.
When importing, it tries to find the same elements to apply the exported data.
Script for storing then baking transforms using world-space data.
1. Target(s)
Use "Load Selection" to define targets (objects to extract transform from).
2. Animation Range
Enter animation range (Start & End). That's the range used by the script when extracting or baking transforms
3. Extract World Space
Extract and store transforms; This creates a dictionary with the transforms of the loaded objects throughout the animation range.
4. Bake transforms when necessary
Bake the transforms when necessary. For example, after updating the object's parent into another pose, you bake it forcing the loaded object to go back to the stored position (world-space)
This script performs a series of checks to detect common issues that are often accidentally ignored/unnoticed.
Checklist:
- Operation: Name of the check the script will perform
- Status: Result received from the test
- Info: Extra info or comments regarding the results
Checklist Status:
These are also buttons, you can click on them for extra functions:
- Grey: Default color, not yet tested.
- Green: Pass color, no issues were found.
- Yellow: Warning color, some possible issues were found.
- Red: Error color, issues were found.
- Black: Exception color, an issue caused the check to fail. (Likely because of a missing plug-in or unexpected value)
- Question Mark, click on button for more help.
Settings:
Change what values cause the script to return a warnings and errors.
- Apply: Stores the settings and go back to the main window (settings are persistent between Maya sessions)
- Export Settings: Exports a txt file containing all current settings.
- Import Settings: Imports a txt file exported using the previously mentioned function.
- Reset to Default Values: Resets expected values to default values.
Main Buttons:
- Generate Report: Creates a temporary txt file with all the information collected during the checks.
- Refresh: Runs all checks again.
Checklist Operations:
This script generates the Python code necessary to create a selected curve.
Helpful for when you want to save a curve to your shelf or to add it to a script.
How to use it:
1. Make sure you delete the curve's history before generating the code.
2. Select the curve you want to convert to code.
3. Click on the "Generate" button to generate the code.
Add import "maya.cmds":
Adds a line that imports Maya's cmds API. This is necessary for when running python scripts.
Force Open:
Doesn't check if the curve is periodic leaving it open.
"Generate" button:
Outputs the python code necessary to create the curve inside the "Output PYthon Curve" box.
Run Code:
Attempts to run the code (or anything written) inside "Output Python Curve" box
Save to Shelf:
Saves the code (or anything written) inside "Output Python Curve" box as a shelf button.
This script creates merged curves containing the input text from the text field.
(All shapes go under one transform)
How to use it:
1. Select what font you want to use.
2. Type the word you want to create in the "Text:" text field.
3. Click on the "Generate" button.
You can create multiple curves at the same time by separating them with commas ",".
Current Font:
Click on the button on its right to change the font
This script generates the Python code necessary to recreate a curve shape state.
How to use it:
1. Select the curve (or curve's transform) you want to convert to code.
2. Click on the "Generate" button to generate the code.
"Extract State" button:
Outputs the python code necessary to recreate the current curve shape inside the "Output PYthon Curve" box.
Run Code:
Attempts to run the code (or anything written) inside "Output Python Code" box
Save to Shelf:
Saves the code (or anything written) inside "Output Python Code" box as a shelf button.
Script used to quickly transfer UVs between objects. It allows you to export or import UVs or transfer them from an object to other objects in the scene.
This script automatically bakes the UVs onto the intermediate object allowing you to transfer UVs without generating history.
Export UVs:
Exports an OBJ file containing the model and its UVs (similar to simply exporting and OBJ file through the file menu)
Import UVs:
Imports the previously exported OBJ file and transfers its UVs to the intermediate object of your selection. It allows you to import the UVs without generating history.
Transfer from Source to Target(s)
Allows you to quickly transfer UVs from the first object in your selection to the other objects in the same selection. Thus, you first select your source, then your targets. This method will also use the intermediate object, so no construction history will be left behind.
Quite simple script used as a reminder that the standard sphere is not the only sphere option.
Standard Sphere:
Creates the standard Maya sphere. "Create > Polygon Primitives > Sphere"
Standard Sphere:
Creates a sphere using a cube. "Create > Polygon Primitives > Cube" then "Mesh > Smooth (2x)"
Platonic Sphere A:
Creates a sphere using a platonic solid. (Settings: Icosahedron, Quads, 1, 1, 1)
Platonic Sphere A:
Creates a sphere using a platonic solid. (Settings: Octahedron, Quads, 2, 1, 1)
Script for quickly generating an advanced biped rig.
For more predictable results execute the script in a new scene containing only the geometry of the desired character. This solves most naming conflicts and data loss issues. In case you want the auto rigger to manage your geometry, parent it under a group called "geometry_grp".
In case you experience any issues with the rig, let me know through the "Issues" tab on Github.
Here are some highlights of what it creates:
Tabs:
The tabs "Facial", "Corrective" and "Settings" control optional rigging steps and work in a similar way to the base rig.
- Lock Attribute: Many controls come with channels automatically locked so they behave in an expected way, but in certain situations you might want to unlock these so you have more flexibility. For this, you can just change the "Lock ATTR" (ATTR could be channels TRS, XYZ) custom attribute. A good example is the foot rolls. They have their Y and Z rotations locked by default, but in case you want to rotate the foot in another direction you can change "Lock YZ" to "Off".
- Follow Object: A few controls give you the option to follow other controls or move on their own. These are the pole vector controls (such as the IK knees and IK elbows) and the eye controls. Below you can see an example of the eye controls following or not the head.
- Stretchy Attributes: The custom attributes to control how the stretchy system behaves can be found under the FK/IK Switch Controls. In order to use the stretchy system the rig must be configured to to "IK".
- Finger Automation: To pose the fingers more conveniently, you can use the finger controls. These will automatically rotate all the fingers according to the provided parameters.
- Abduction/Adduction System:: You can control the abduction and adduction actions for the fingers by scaling the "finger_ctrl" in "Z".
- Auto Knuckles Compression:: The auto knuckles compression system will make the knuckle joints (thumb01, index01...) move closer to one another as the hand closes in order to prevent gaps between the fingers.
Below you can watch a few animations that used GT Biped Auto Rigger to rig their characters.
Do you want to share your animation here? Send me a message!
Extra functions and automation for rigs generated using GT Biped Auto Rigger.
This script includes FK/IK Switchers, Pose managers, Animation managers and more.
How to use it:
1. Under "Namespace:" click on "Get" to use the character's namespace.
(In case you're not using a namespace, just click on "Clear")
2. If the character is found, the FK/IK buttons will light up according to the current state.
3. Use the desired function to animate or pose your character.
This is the FK/IK Switcher. When a button is colored light grey, it means that the system recognized its current state as FK or IK. Use Switch to toggle or click on the desired system to force it into that state. (Whatever pose found in one system will be copied into the other) </li>
Used to manage static poses. It doesn't key the character, only poses it.
Used to manage static poses. It doesn't key the character, only poses it.
Overall Settings for this script. These are persistent and will retain their values in between sessions.
This script applies patches to a HumanIK Mocap character while it's been transferred to a Biped Rig (Created using GT Biped Auto Rigger)
For this script to work, the target rig should have a custom rig defined under HumanIK.
Patches:
HIK Character/Target Text Field
This is your final rigged character that will receive the animation.
HIK Mocap / Source Text Field
This is the motion capture skeleton to be sourced into the rig.
"P" (Properties) buttons
Selects the HumanIK properties of the character found in the text field.
Get Current Target/Source:
Populates the "HIK Character/Target" and "HIK Mocap / Source" text fields with the same data found under the HumanIK menu.
Bake Mocap with Fixes:
Bakes the Source character animation into the Target character while applying the active patches to the characters.
This script exports a biped rig into FBX while including only the necessary data for animation or model to work in a real-time engine. Any namespaces included in animation files (due to being references) are automatically stripped before exporting.
Generated FBX file uses real-time properties such as triangulation and SmoothingGroups and ContainerObjects
This script generates the Python code necessary to select all joints influencing a skinCluster node.
How to use it:
1. Select bound meshes or surfaces.
2. Click on the "Extract Bound Joints" button to generate the code.
"Extract Bound Joints to Python" button:
Outputs the python code necessary to reselect the joints into the "Output PYthon Curve" box.
"Extract Bound Joints to Selection Sets" button:
Saves the bound joints as selection sets instead of Python. One set per mesh. (May or may not include mesh, according to checkbox settings.
Run Code:
Attempts to run the code (or anything written) inside "Output Selection Command" box
Save to Shelf:
Saves the code (or anything written) inside "Output Selection Command" box as a shelf button.
This script automates the creation of connections between attributes from source (output) and target (input).
Use Selection for Source and Target (s):
When this option is activated, you no longer need to load sources/target (s).
You can simply select: 1st: source, 2nd, 3rd... : target(s)
Add Reverse Node:
Adds a reverse node between connections.
Disconnect:
Break connections between selected nodes.
Force Connection (Overrides Existing):
Connects nodes even if they already have a connection.
Add Custom Node Between Connection:
Allows user to create a node between connections. (Excellent for controlling dataflow.)
-Custom Node: Which node to create
-Add Input Node: Creates one master control to update all in betweens.
Load Source/Target Objects:
Use these buttons to load the objects you want to use as source and target (s).
Source Attribute and Target Attributes:
Name of the attribute you want to connect.
Requirement: Use long or short name (no nice names)
List All Attributes and List Keyable Attributes:
Returns a list of attributes that can be used to populate the Source and Target Attributes fields.
This script offers utilities to handle blend shape nodes and targets.
Delete All Blend Shape Nodes:
Deletes all nodes of the type "blendShape" found in the opened Maya scene.
Delete All Blend Shape Targets:
Deletes all targets found inside the scene's blend shape nodes, but leave the nodes behind.
Load Morphing Object:
Determines the source of the morphing node. Runs basic validation and populates the scroll field with blend shape nodes found under the selected object.
Blend Shape Nodes:
A list of the blend shape nodes found under the selected object.
Search and Replace Target Names:
Allows you to search and replace strings used on blend shape target names (only the selected blend shape target will be affected).
Search and Replace Target Names:
Runs search and replace operation.
This script automates the creation of attributes used to drive blend shapes.
Load Morphing Object:
Determines the source of the morphing node. Runs basic validation and populates the scroll field with blend shape nodes.
Blend Shape Nodes:
Once the morphing object is loaded, this box shows a list of blend shape nodes. Click on the desired node to select it.
Load Attribute Holder:
This is the object to receive the driving attributes. Usually a curve control.
Desired Filter:
Strings in this text field will be included in the list of affected targets.
If empty, everything will be included. (multiple strings can be separated using commas ","
Undesired Filter:
Strings in this text field will be removed from the list of affected targets.
If empty, filter will not take effect. (multiple strings can be separated using commas ","
Drop-down Menu (Includes, Starts With, Ends With):
These options determine how the desired or undesired strings will be filtered.
Ignore Uppercase:
If active, the script will ignore the capitalization of the filter strings.',
Add Separator:
If active, the script will also attempt to create a locked attribute to be used as a separator.
Example - "Blends: "-------------"
Ignore Connected:
If active, the script will ignore blend targets that already have incoming connections.
Sort Attributes:
If active, the script will sort the list of attributes before creating them.
Modify Range:
If active, the script will create an in-between node to remap the value according to what is provided under "old" and "new" minimum and maximum values
Modify Range:
If active, the script will create an in-between node to remap the value according to what is provided under "old" and "new" minimum and maximum values
Old Min/Max & New Min/Max:
This values are used for the remapping of the morphing attributes. Blend shapes are usually deactivated when as 0 and activated when at 1. If remapped to min: 0 and max: 10, the range would now be bigger but reflect the same values. For example 7.3 would actually load 0.73 of the blend target.
Script for mirroring clusters on mesh objects.
Step 1:
Load your mesh by selecting it in the viewport or in the outliner,
then click on "Select Mesh".
Requirements: Must be one single mesh transform.
Step 2:
Load your clusterHandle by selecting it in the viewport or in the outliner,
then click on "Select Cluster".
Requirements: Must be one single clusterHandle.
Step 3:
Select your mirror axis X, Y or Z. It will always mirror on the negative direction
Step 4:
To save time you can automatically rename the mirrored clusters using the search and replace text fields.
For example search for "left_" and replace with "right_"
This script creates a inbetween transform for the selected elements.
Layer Type:
This pull-down menu determines what type object will be created.
Parent Type:
This pull-down menu determines where the pivot point of the generated element will be extracted from.
Outliner Color:
Determines the outliner color of the generated element.
New Transform Suffix:
Determines the suffix to be added to generated transforms.
This script generates FK controls for joints while storing their transforms in groups.
Just select the desired joints and run the script.
Colorize Controls:
Automatically colorize controls according to their names (prefix). It ignores uppercase/lowercase.
No Prefix = Yellow
"l_" or "left_" = Blue
"r_" or "right_" = Red
Select Hierarchy:
Automatically selects the rest of the hierarchy of the selected object, thus allowing you to only select the root joint before creating controls.
(Advanced) Custom Curve:
You can change the curve used for the creation of the controls. Use the script "GT Generate Python Curve" to generate the code you need to enter here.
Joint, Control, and Control Group Tag:
Used to determine the suffix of the elements.
Joint Tag is removed from the joint name for the control.
Control Tag is added to the generated control.
Control Group Tag is added to the control group.
(The control group is the transform carrying the transforms of the joint).
Ignore Joints Containing These Strings:
The script will ignore joints containing these strings. To add multiple strings use commas - ",".
This script creates a sequence of keys with offset,
usually used for testing controls or skin weights.
How to use:
1. Select Target Object(s)
2. Provide Offset Value(s)
3. Create Testing Keyframes
Offset Amount:
These are the values that will be added to the object.
If set to "0.0" it will be ignored. (No keys will be created)
Reset All Offset Values:
Resets all offset text fields to "0.0"
Add Inverted Offset Movement:
Auto creates another key with the inverted offset value.
For example, an offset of "1.0" will also create another offset at "-1.0"
creating an oscillating movement like a sine function.
Use World Space (WS) Values:
Moves objects as if they were not part of a hierarchy, which mimics the behavior of the world space.
Delete Previously Created Keys:
Deletes all keys attached to the selected controls before creating new ones.
(Doesn't include Set Driven Keys)
Create Testing Keyframes:
Creates keyframes according to the provided settings.
This script makes an IK setup stretchy.
Load an ikHandle and an attribute holder then click on "Make Stretchy"
To use this script to its full potential, provide an object to be the attribute holder. (Usually the control driving the ikHandle)
Stretchy System Prefix:
As the name suggests, it determined the prefix used when naming nodes for the stretchy system.
If nothing is provided, it will be automatically named "temp".
Load IK Handle:
Use this button to load your ikHandle.The joints will be automatically extracted from it.
Load Attribute Holder:
Use this button to load your attribute holder.
This is usually a control. A few custom attributes will be added to this object, so the user can control the stretchy system.
- Stretchy Attributes: The attribute holder will receive custom attributes to control how the stretchy system behaves.
By default, the attribute holder determines the stretch, to change this behavior, constraint or parent the object "stretchyTerm_end" to another object.
Create Sine attributes without using third-party plugins or expressions.
Just select and object, then click on "Add Sine Attributes"
- Sine Attributes:: The attribute holder will receive custom attributes to control how the stretchy system behaves.
Added attributes don't affect your attribute holder in any way, it's up to you do create necessary connections that will determine how these new values will be used.
For example, connecting "sideOutput" to "translateY" will case the object to move up and down according to the side curve.
Tool for automating the process of creating ribbons. A ribbon is a commonly used setup in rigging that serves as a flexible surface for attaching joints and controls. Ribbon rigging is particularly useful for creating smooth and natural-looking deformations, especially in areas of the character where complex movements are required, such as the spine, limbs, or facial features. By attaching joints and control objects to the ribbon, animators can easily manipulate and pose the character, achieving realistic movement and expressions.
GT Utilities (GTU) is a collection of smaller functions that don't necessary need or use a window/dialog.
Most of these functions can be found under "GT Tools > Utilities" but a few of them are scattered throughout other menus.
Standalone use:
In case you're using the standalone version of GT Utilities, you'll have to uncomment one of the functions at the bottom of the script.
This utility reloads the current Maya file (scene).
Reloading means re-opening it without attempting to save.
It only works if the file was saved at least once.
This utility attempts to open the current Maya file directory.
In case it fails, the path for the file is printed to the script editor.
It only works if the file was saved at least once.
Opens the resource browser, a menu that allows the used to see what images are available inside Maya and download them.
This function unlocks the translate, rotate, scale and visibility channels for the selected objects.
This function unhides/shows the translate, rotate, scale and visibility channels for the selected objects.
This function unhides/shows the translate, rotate, scale and visibility channels for the selected objects.
This utility makes the visibility of the local rotation axis of the selected objects uniform.
For example, if two out of three objects have their LRA visible, it makes all of them visible.
Converts selected skeleton to a mesh version of it. Helpful when sending joints into another program that might not support or display joints in the same way Maya does. To use it, select the root joint of your skeleton and run the function. (No need to select all joints, just the root)
Uniformly toggles the option "Joint > Joint Labelling > Draw Label" (".drawLabel") for all joints in the scene (according to the state of the majority of them).
Selects all objects with the same short name. (A short name is the name of the object without its path)
Toggles most of the Heads-Up Display (HUD) options according to the state of the majority of them.
(Keeps default elements ON when toggling it OFF)
Attempts to import all loaded references.
Attempts to remove all references.
Moves the pivot point of the selected objects to the top of their bounding box.
Moves the pivot point of the selected objects to the base of their bounding box.
Moves the selected objects to the center of the grid (0,0,0) origin point.
Resets translate, rotate and scale back to zero. For example, you can select all controls of a character and reset its pose.
This pose will not reset translate for joints.
Resets the visibility of all joints. It sets the radius of all joints to one. (Unless the channel is locked) and sets the visibility to "On". It also changes the global joint display scale (multiplier) back to one.
Resets most of the attributes for the default "persp" camera.
Merges all namespaces back to the root, essentially deleting them.
Deletes all display layers.
Deletes all nodes related to the nucleus system.
Deletes all keyframes. (It does not affect set driven keys)
Generates previews for all file nodes using UDIMs.
Converts selected Bifrost meshes into the standard Maya meshes.
(Bif objects are created using Bifrost Graph)
Copies a material from the selection to the clipboard to later be applied to another object.
It supports components such as faces.
Pastes a material to the selection. (Use the Copy Material function to copy it first)
It supports components such as faces.
Moves curve shapes of the selected curves into one single transform, essentially combining them.
In case a bezier curve is found, the script gives you the option of converting them to NURBS.
Parents every curve shape of the selection under a new transform, causing them to be separated.
This script helps decrease the time Maya takes to load before becoming fully functional.
How It works:
Not all plugins are used every time Maya is opened, but they are usually still loaded during startup. This causes the startup time to be quite slow.
This script aims to fix that, by helping you skip the heavy plugins while still having easy access to them.
1st: Optimize.
2nd: Create Shelf Buttons.
3rd: Enjoy faster startups.
Plugin List:
This is a list of common plugins that are usually automatically loaded by default.
Plugin File: Name of the file used by the plugin.
Auto Load: Is this plugin automatically loading?
Installed: Is the plugin installed?
Control: General name of the plugin.
"Shelf Button" and "Auto Load" Buttons:
Shelf Button: Creates a Shelf Button (under the current shelf) to load the plugin and give you feedback on its current state.
Auto Load: Toggles the Auto Load function of the plugin.
(same as "Auto Load" in the plugin manager)
Custom Shelf Button:
This script couldn't account for every heavy 3rd party plug-in.This shouldn't be an issue as you can manually add any plugin.
Just manually deactivate your third party plugin by going to "Windows > Settings/Preferences > Plug-in Manager"
Then create a custom load button using the textField that says "Other Plugins"
This script allows you import the data of a JSON file (exported out of fSpy) into Maya.
What is fSpy:
fSpy is a fantastic software that allows you to quickly and easily create a 3D camera match.
The files created with it can easily be imported in Blender, but not in Maya. That's what this script aims to address.
You can find more information and a tutorial on their website: https://fspy.io/
How It works:
Using the JSON file, this script applies the exported matrix to a camera so it matches the position and rotation identified in fSpy.
It also calculates the focal length assuming that the default camera in Maya is a 35mm camera.
How to use it:
Step 1: Create a camera match in fSpy. (There is a tutorial about it on their website)
Step 2: Export the JSON file by going to "File > Export > Camera parameters as JSON".
Step 3: Load the files by opening the script and entering the path for your JSON and Image files.
Step 4: Use the Import button to generate the camera.
JSON File Path:
This is a path pointing to the JSON file you exported out of fSpy.
In case the file was altered or exported/created using another program it might not work as expected.
Image File Path:
A path pointing to the image file you used for your camera match with in fSpy.
Do not change the resolution of the image file or crop the image or it might not work properly.
Set Scene Resolution:
Uses the size of the image to determine the resolution of the scene.
This settings are found under "Render Settings > Image Size" (Resolution)
+Z Axis is +Y:
Rotates the camera so the default +Z axis becomes +Y.
This might be necessary in case the default settings were used inside fSpy. This is because different softwares use different world coordinate systems.
Lock Camera
Locks the generated camera, so you don't accidentally move it.
This script allows you to quickly send images and videos (playblasts) from Maya to Discord using a Discord Webhook to bridge the two programs.
Webhooks:
A webhook (a.k.a. web callback or HTTP push API) is a way for an app to provide other applications with real-time information.
You can use it to send messages to text channels without needing the discord application.
How to get a Webhook URL:
If you own a Discord server or you have the correct privileges, you can go to the settings to create a Webhook URL.
To create one go to:
"Discord > Server > Server Settings > Webhooks > Create Webhook"
Give your webhook a name and select what channel it will operate.
Copy the "Webhook URL" and load it in the settings for this script.
If you're just an user in the server, you'll have to ask the administrator of the server to provide you with a Webhook URL.
Send Buttons:
Send Message Only: Sends only the attached message.
(Use the text-field above the buttons to type your message)
Send Desktop Screenshot: Sends a screenshot of your desktop.
(This includes other programs and windows that are open)
Send Maya Window: Sends only the main Maya window.
(This ignores other windows, even within Maya)
Send Viewport: Sends an image of the active viewport.
(Includes Heads Up Display text, but no UI elements)
Send Playblast: Sends a playblast video.
(Use the script settings to determine details about the video)
Send OBJ/FBX: Sends a model using the chosen format.
For settings, go to "File > Export Selection... > Options"
Settings:
The settings are persistent, which means they will stay the same between Maya sessions.
Custom Username:
Nickname used when posting content through the webhook.
Image and Video Format:
Extension used for the image and video files.
Video Options:
Determines the settings used when recording a playblast.
Feedback and Timestamp Options:
Determines feedback visibility and timestamp use.
Limitations:
Discord has a limit of 8MB for free users and 50MB for paid users for when uploading a file.
If you get the error "Payload Too Large" it means your file exceeds the limits. Try changing the settings.
This script helps you calculate the total render time of a task based on how long it takes to render a frame..
Average Time Per Frame:
Integer describing the average time used to render one frame of your animation.
The drop-down menu to the right describes the unit used for the provided number. Seconds, minutes or hours.
Total Number of Frames:
The total number of frames to be rendered.
The "Get Current" button uses the timeline to determine how many frames are likely being rendered using the in and out values.
Total Number of Machines:
The number of computers rendering the same job.
The render time may vary per machine based on the available setup.