Skip to content

Commit 8b9077c

Browse files
authored
Merge pull request #200 from TrevisanGMW/dev
release <- dev (3.3.0)
2 parents 5a73c98 + 7cea02b commit 8b9077c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3848
-631
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,14 @@ variety of tools and utilities. This menu contains sub-menus that have been orga
3030
for example: modeling, rigging, utilities, etc…
3131

3232
For help on how to use these scripts, click on the “Help” button at the top right of their window (within Maya) or
33-
check their documentation by going to the <a href="./docs">"docs"</a> folder. For changelog read the text at the top
34-
of the tool init file (just open the “.py” file using any text editor, such as notepad)
33+
check their documentation by going to the <a href="./docs">docs</a> folder. For changelog see the <a href="https://github.com/TrevisanGMW/gt-tools/releases">releases</a> page.
3534

3635
All of these items are supplied as is. You alone are solely responsible for any issues. Use at your own risk.
3736
Hopefully these scripts are helpful to you as they are to me.
3837

3938
Note: Python 2 is no longer supported. If you want to still use an older versions of Maya, make sure to use a GT-Tools version below "3.0.0" for compatibility.
4039

41-
<p><b>Package tested using Autodesk Maya 2022, 2023 and 2024 (Windows 10)</b></p>
40+
<p><b>Package tested using Autodesk Maya 2022, 2023 and 2024 (Windows 11)</b></p>
4241

4342
<h1>Organization</h1>
4443
<ul>

docs/README.md

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
<li><a href="#gt-create-testing-keys">GT Create Testing Keys</a></li>
5454
<li><a href="#gt-make-ik-stretchy">GT Make IK Stretchy</a></li>
5555
<li><a href="#gt-add-sine-attributes">GT Add Sine Attributes</a></li>
56+
<li><a href="#gt-ribbon-tool">GT Ribbon Tool</a></li>
5657
</ul>
5758
<h3><b>Utilities:</b></h3>
5859
<ul>
@@ -800,7 +801,7 @@ If painting the skin weights with "ngSkinTools" (third party plugin) you might h
800801
<p>
801802
<ul>
802803
<li><b>Home Remedy - Animated Short Film:</b><br><a href="https://vimeo.com/579130303">vimeo.com/579130303</a></li>
803-
<li><b>Art in the time of Corona:</b><br><a href="https://youtu.be/TtYRudIZBGQ?t=2023">youtu.be/TtYRudIZBGQ</a><br><a href="https://vimeo.com/564743576">vimeo.com/564743576</a></li>
804+
<li><b>Art in the time of Corona:</b><br><a href="https://youtu.be/TtYRudIZBGQ?t=2023">youtu.be/TtYRudIZBGQ</a><br></li>
804805
<li><b>Short Horror Animation:</b><br><a href="https://youtu.be/pH62aGjf9-Y?t=1198">youtu.be/pH62aGjf9-Y</a></li>
805806
</ul></p>
806807

@@ -1286,13 +1287,54 @@ If painting the skin weights with "ngSkinTools" (third party plugin) you might h
12861287
<li><b>Output:</b> Result of the sine operation.</li>
12871288
<li><b>Abs Output:</b> Absolute output. (no negative values).</li>
12881289
</ul>
1289-
1290+
<p>
12901291
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.<br>For example, connecting "sideOutput" to "translateY" will case the object to move up and down according to the side curve.
12911292

12921293
</p>
12931294

12941295
<br><br>
12951296

1297+
<!-- GT Ribbon Tool -->
1298+
<div>
1299+
<h1>GT Ribbon Tool</h1>
1300+
1301+
<img src="./media/gt_ribbon_tool.jpg" align="right"
1302+
alt="GT Ribbon Tool GUI">
1303+
1304+
<p>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.
1305+
1306+
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.</p>
1307+
1308+
<ul>
1309+
<li><b>Prefix:</b> Multiplier for the time input (tick)</li>
1310+
<li><b>Source Mode:</b> What the ribbon should use as input data.<br>
1311+
<ul>
1312+
<li><b>No Source:</b> Creates a simple ribbon.</li>
1313+
<li><b>Surface:</b> Uses provided surface as input.</li>
1314+
<li><b>Transform List:</b> Creates ribbon using a provided transform list.</li>
1315+
</ul>
1316+
</li>
1317+
<li><b>Number of Controls:</b> How many ribbon controls should be created.</li>
1318+
<li><b>Number of Joints:</b> How many skinned joints should be created.</li>
1319+
<li><b>Dropoff Rate:</b> Dropoff rate used for binding controls to ribbon surface. Similar to dropoff rate when binding joints to surfaces.</li>
1320+
<li><b>Span Multiplier:</b> If more than zero, it multiplies the number of spans on the target surface.</li>
1321+
<li><b>Equidistant:</b> Ensures equidistant calculation between the distance of every follicle.</li>
1322+
<li><b>Add FK:</b> Creates extra forward-kinematics controls to drive ribbon controls.</li>
1323+
<li><b>Parent Skin Joints:</b> Creates a hierarchy with the generated driven joints.</li>
1324+
<li><b>Constraint Source:</b> Constraint source transforms to follow the ribbon. (This skips joint creation)</li>
1325+
<li><b>Source Surface / Transform List:</b> Determines what should be used as source data. (Different data depending on source mode)
1326+
<ul>
1327+
<li><b>No Source:</b> Option is disabled as no source is needed. (Ribbon is a simple surface going from -12 to 12 in the grid)</li>
1328+
<li><b>Surface:</b> Expects the user to set an existing surface (nurbsSurface) to be used as ribbon.</li>
1329+
<li><b>Transform List:</b> Expects the user to set a list of objects to be used as reference for when creating the ribbon.<br>Surface is created using the position of the selected objects. Order is important and is used to create the flow of the ribbon.</li>
1330+
</ul>
1331+
</li>
1332+
<li><b>Create Ribbon:</b> Creates a ribbon setup using the preferences above.</li>
1333+
</ul>
1334+
1335+
<br><br>
1336+
1337+
12961338
</div>
12971339

12981340
<!-- GT Utilities -->

docs/media/gt_ribbon_tool.jpg

41.4 KB
Loading

gt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sys
22

33
# Package Variables
4-
__version_tuple__ = (3, 2, 3)
4+
__version_tuple__ = (3, 3, 0)
55
__version_suffix__ = ''
66
__version__ = '.'.join(str(n) for n in __version_tuple__) + __version_suffix__
77
__authors__ = ['Guilherme Trevisan']

gt/tools/auto_rigger/rig_constants.py

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,27 @@ def __init__(self):
1414
# General Keys and Attributes
1515
PROJECT_EXTENSION = "rig"
1616
FILE_FILTER = f"Rig Project (*.{PROJECT_EXTENSION});;"
17-
# Attributes and Keys
18-
JOINT_ATTR_UUID = "jointUUID"
19-
PROXY_ATTR_UUID = "proxyUUID"
20-
CONTROL_ATTR_UUID = "controlUUID"
21-
PROXY_ATTR_SCALE = "locatorScale"
22-
PROXY_META_PARENT = "metaParentUUID" # Metadata key, may be different from actual parent (e.g. for lines)
23-
PROXY_META_TYPE = "proxyType" # Metadata key, used to recognize rigged proxies within modules
24-
PROXY_CLR = "color" # Metadata key, describes color to be used instead of side setup.
25-
LINE_ATTR_CHILD_UUID = "lineProxySourceUUID" # Used by the proxy lines to store source
26-
LINE_ATTR_PARENT_UUID = "lineProxyTargetUUID" # Used by the proxy lines to store target
27-
JOINT_ATTR_DRIVEN_UUID = "jointDrivenUUID"
17+
# System Attributes
18+
ATTR_JOINT_UUID = "jointUUID"
19+
ATTR_MODULE_UUID = "moduleUUID"
20+
ATTR_PROXY_UUID = "proxyUUID"
21+
ATTR_DRIVER_UUID = "driverUUID"
22+
ATTR_JOINT_DRIVEN_UUID = "jointDrivenUUID"
23+
# Misc Attributes
24+
ATTR_PROXY_SCALE = "locatorScale"
25+
ATTR_JOINT_PURPOSE = "jointPurpose"
26+
ATTR_JOINT_DRIVERS = "jointDrivers"
27+
ATTR_LINE_CHILD_UUID = "lineProxySourceUUID" # Used by the proxy lines to store source
28+
ATTR_LINE_PARENT_UUID = "lineProxyTargetUUID" # Used by the proxy lines to store target
29+
# Metadata Keys
30+
META_PROXY_LINE_PARENT = "lineParentUUID" # Metadata key, line parent. Actual parent is ignored when present.
31+
META_PROXY_PURPOSE = "proxyPurpose" # Metadata key, used to recognize proxy purpose within modules
32+
META_PROXY_DRIVERS = "proxyDrivers" # Metadata key, used to find drivers (aka controls) driving the created joint
33+
META_PROXY_CLR = "color" # Metadata key, describes color to be used instead of side setup.
2834
# Separator Attributes
29-
SEPARATOR_STD_SUFFIX = "Options" # Standard (Std) Separator attribute name (a.k.a. header attribute)
30-
SEPARATOR_BEHAVIOR = "Behavior"
35+
SEPARATOR_OPTIONS = "options"
36+
SEPARATOR_BEHAVIOR = "behavior"
37+
SEPARATOR_AUTOMATION = "automation"
3138
# Group Names
3239
GRP_RIG_NAME = f'rig_{NamingConstants.Suffix.GRP}'
3340
GRP_PROXY_NAME = f'rig_proxy_{NamingConstants.Suffix.GRP}'
@@ -37,16 +44,29 @@ def __init__(self):
3744
GRP_SETUP_NAME = f'setup_{NamingConstants.Suffix.GRP}'
3845
GRP_LINE_NAME = f'visualization_lines'
3946
# Reference Attributes
40-
REF_ROOT_RIG_ATTR = "rootRigLookupAttr"
41-
REF_ROOT_PROXY_ATTR = "rootProxyLookupAttr"
42-
REF_ROOT_CONTROL_ATTR = "rootControlLookupAttr"
43-
REF_DIR_CURVE_ATTR = "dirCrvLookupAttr"
44-
REF_GEOMETRY_ATTR = "geometryGroupLookupAttr"
45-
REF_SKELETON_ATTR = "skeletonGroupLookupAttr"
46-
REF_CONTROL_ATTR = "controlGroupLookupAttr"
47-
REF_SETUP_ATTR = "setupGroupLookupAttr"
48-
REF_LINES_ATTR = "linesGroupLookupAttr"
47+
REF_ATTR_ROOT_RIG = "rootRigLookupAttr"
48+
REF_ATTR_ROOT_PROXY = "rootProxyLookupAttr"
49+
REF_ATTR_ROOT_CONTROL = "rootControlLookupAttr"
50+
REF_ATTR_DIR_CURVE = "dirCrvLookupAttr"
51+
REF_ATTR_GEOMETRY = "geometryGroupLookupAttr"
52+
REF_ATTR_SKELETON = "skeletonGroupLookupAttr"
53+
REF_ATTR_CONTROL = "controlGroupLookupAttr"
54+
REF_ATTR_SETUP = "setupGroupLookupAttr"
55+
REF_ATTR_LINES = "linesGroupLookupAttr"
4956
# Multipliers
5057
LOC_RADIUS_MULTIPLIER_DRIVEN = .8
5158
LOC_RADIUS_MULTIPLIER_FK = .3
5259
LOC_RADIUS_MULTIPLIER_IK = .6
60+
# Misc
61+
ENUM_ROTATE_ORDER = 'xyz:yzx:zxy:xzy:yxz:zyx'
62+
63+
64+
class RiggerDriverTypes:
65+
def __init__(self):
66+
"""
67+
Driver Type Constant values used by the drivers and controls.
68+
"""
69+
FK = "fk"
70+
IK = "ik"
71+
OFFSET = "offset"
72+
COG = "cog"

0 commit comments

Comments
 (0)