diff options
| author | MobileMachine\jeremy <[email protected]> | 2017-06-06 22:59:03 -0400 |
|---|---|---|
| committer | MobileMachine\jeremy <[email protected]> | 2017-06-06 22:59:03 -0400 |
| commit | 24725fa8681f906ab44d80687c09fecc171a2896 (patch) | |
| tree | 312a601df29aca7f8db9f44082d96ebc7a679138 /Documentation/build/_modules/RigModules/ART_Head.html | |
| parent | Initial commit (diff) | |
| download | artv2-24725fa8681f906ab44d80687c09fecc171a2896.tar.xz artv2-24725fa8681f906ab44d80687c09fecc171a2896.zip | |
Initial Submission
First submission of current state of ARTv2. Currently considered to be in Alpha. There are a couple of animation tools not implemented yet, and one module not implemented yet, as well as incomplete documentation.
Diffstat (limited to 'Documentation/build/_modules/RigModules/ART_Head.html')
| -rw-r--r-- | Documentation/build/_modules/RigModules/ART_Head.html | 1164 |
1 files changed, 1164 insertions, 0 deletions
diff --git a/Documentation/build/_modules/RigModules/ART_Head.html b/Documentation/build/_modules/RigModules/ART_Head.html new file mode 100644 index 0000000..ab3c49e --- /dev/null +++ b/Documentation/build/_modules/RigModules/ART_Head.html @@ -0,0 +1,1164 @@ + + +<!doctype html> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>RigModules.ART_Head — ARTv2 1.0 documentation</title> + + <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" /> + <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../../', + VERSION: '1.0', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../../_static/jquery.js"></script> + <script type="text/javascript" src="../../_static/underscore.js"></script> + <script type="text/javascript" src="../../_static/doctools.js"></script> + <script type="text/javascript" src="../../_static/bizstyle.js"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <meta name="viewport" content="width=device-width,initial-scale=1.0"> + <!--[if lt IE 9]> + <script type="text/javascript" src="_static/css3-mediaqueries.js"></script> + <![endif]--> + </head> + <body role="document"> + <div class="related" role="navigation" aria-label="related navigation"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li> + </ul> + </div> + <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> + <div class="sphinxsidebarwrapper"> +<div id="searchbox" style="display: none" role="search"> + <h3>Quick search</h3> + <form class="search" action="../../search.html" method="get"> + <div><input type="text" name="q" /></div> + <div><input type="submit" value="Go" /></div> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body" role="main"> + + <h1>Source code for RigModules.ART_Head</h1><div class="highlight"><pre> +<span></span><span class="sd">"""</span> +<span class="sd">Author: Jeremy Ernst</span> + +<span class="sd">===============</span> +<span class="sd">File Attributes</span> +<span class="sd">===============</span> +<span class="sd"> * **icon:** This is the image file (125x75 .png) that gets used in the RigCreatorUI</span> + +<span class="sd"> * **hoverIcon:** When you hover over the module in the module list, it will swap to this icon</span> +<span class="sd"> (background changes to orange). There are .psd template files for these.</span> + +<span class="sd"> * **search:** These are search terms that are accepted when searching the list of modules in the</span> +<span class="sd"> RigCreatorUI</span> + +<span class="sd"> * **class name:** The name of the class.</span> + +<span class="sd"> * **jointMover:** The relative path to the joint mover file. Relative to the ARTv2 root directory.</span> + +<span class="sd"> * **baseName:** The default name the module will get created with. Users can then add a prefix and/or</span> +<span class="sd"> suffix to the base name.</span> + +<span class="sd"> * **rigs:** This is a simple list of what rigs this module can build. This feature isn't implemented yet,</span> +<span class="sd"> but the plan is to query this list and present these options to the user for them to select what rigs</span> +<span class="sd"> they want to build for the module. Right now, it will build all rigs.</span> + +<span class="sd"> * **fbxImport:** This is a list that will show the options for the module in the import mocap interface.</span> +<span class="sd"> Normally, this list will have at least None and FK.</span> + +<span class="sd"> * **matchData:** This is a list of options that will be presented for the module in a comboBox in the</span> +<span class="sd"> match over frame range interface. First argument is a bool as to whether the module can or can't</span> +<span class="sd"> match. The second arg is a list of strings to display for the match options. For example:</span> +<span class="sd"> matchData = [True, ["Match FK to IK", "Match IK to FK"]]</span> + +<span class="sd"> * **controlTypes:** This is a list of lists, where each item in the main list is a list comprised of the</span> +<span class="sd"> name of the attribute that gets added to the network node that contains the control information.</span> +<span class="sd"> The second arg in each list entry is a control type, like FK or IK. This is used in the select</span> +<span class="sd"> rig controls interface for filtering out which controls on each module you want to select. On</span> +<span class="sd"> this module, the values are: controlTypes = [["fkControls", "FK"]], which means that the</span> +<span class="sd"> attribute that holds the control info is called fkControls, and those controls are of type FK.</span> + +<span class="sd"> .. image:: /images/selectRigControls.png</span> + +<span class="sd">===============</span> +<span class="sd">Class</span> +<span class="sd">===============</span> +<span class="sd">"""</span> +<span class="c1"># file imports</span> +<span class="kn">import</span> <span class="nn">json</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span> + +<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span> + +<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span> +<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span> +<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span> +<span class="kn">from</span> <span class="nn">System.ART_RigModule</span> <span class="k">import</span> <span class="n">ART_RigModule</span> +<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span> + +<span class="c1"># file attributes</span> +<span class="n">icon</span> <span class="o">=</span> <span class="s2">"Modules/head.png"</span> +<span class="n">hoverIcon</span> <span class="o">=</span> <span class="s2">"Modules/hover_head.png"</span> +<span class="n">search</span> <span class="o">=</span> <span class="s2">"biped:head:neck"</span> +<span class="n">className</span> <span class="o">=</span> <span class="s2">"ART_Head"</span> +<span class="n">jointMover</span> <span class="o">=</span> <span class="s2">"Core/JointMover/ART_Head_1Neck.ma"</span> +<span class="n">baseName</span> <span class="o">=</span> <span class="s2">"Head"</span> +<span class="n">rigs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FK"</span><span class="p">]</span> +<span class="n">fbxImport</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"None"</span><span class="p">,</span> <span class="s2">"FK"</span><span class="p">]</span> +<span class="n">matchData</span> <span class="o">=</span> <span class="p">[</span><span class="kc">False</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="c1"># This is for matching over frame range options. (Matching between rigs of the module)</span> +<span class="n">controlTypes</span> <span class="o">=</span> <span class="p">[[</span><span class="s2">"fkControls"</span><span class="p">,</span> <span class="s2">"FK"</span><span class="p">]]</span> + + +<div class="viewcode-block" id="ART_Head"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head">[docs]</a><span class="k">class</span> <span class="nc">ART_Head</span><span class="p">(</span><span class="n">ART_RigModule</span><span class="p">):</span> + <span class="sd">"""This class creates the head module"""</span> + +<div class="viewcode-block" id="ART_Head.__init__"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">moduleUserName</span><span class="p">):</span> + <span class="sd">"""Initiate the class, taking in the instance to the interface and the user specified name.</span> + +<span class="sd"> :param rigUiInst: This is the rig creator interface instance being passed in.</span> +<span class="sd"> :param moduleUserName: This is the name specified by the user on module creation.</span> + +<span class="sd"> Instantiate the following class variables as well:</span> +<span class="sd"> * **self.rigUiInst:** take the passed in interface instance and make it a class var</span> +<span class="sd"> * **self.moduleUserName:** take the passed in moduleUserName and make it a class var</span> +<span class="sd"> * **self.outlinerWidget:** an empty list that will hold all of the widgets added to the outliner</span> + +<span class="sd"> Also, read the QSettings to find out where needed paths are.</span> +<span class="sd"> """</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span> <span class="o">=</span> <span class="n">rigUiInst</span> + <span class="bp">self</span><span class="o">.</span><span class="n">moduleUserName</span> <span class="o">=</span> <span class="n">moduleUserName</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">"toolsPath"</span><span class="p">)</span> + + <span class="n">ART_RigModule</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"ART_Head_Module"</span><span class="p">,</span> <span class="s2">"ART_Head"</span><span class="p">,</span> <span class="n">moduleUserName</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.addAttributes"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.addAttributes">[docs]</a> <span class="k">def</span> <span class="nf">addAttributes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Add custom attributes this module needs to the network node.</span> + +<span class="sd"> Always calls on base class function first, then extends with any attributes unique to the class.</span> +<span class="sd"> """</span> + + <span class="c1"># call the base class method first to hook up our connections to the master module</span> + <span class="n">ART_RigModule</span><span class="o">.</span><span class="n">addAttributes</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + + <span class="c1"># add custom attributes for this specific module</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"Created_Bones"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".Created_Bones"</span><span class="p">,</span> <span class="s2">"neck_01::head::"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"baseName"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".baseName"</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"canAim"</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">"bool"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".canAim"</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"aimMode"</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">"bool"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".aimMode"</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"neckJoints"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.skeletonSettings_UI"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.skeletonSettings_UI">[docs]</a> <span class="k">def</span> <span class="nf">skeletonSettings_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> This is the UI for the module that has all of the configuration settings.</span> + +<span class="sd"> :param name: user given name of module (prefix + base_name + suffix)</span> +<span class="sd"> :param width: width of the skeleton settings groupBox. 335 usually</span> +<span class="sd"> :param height: height of the skeleton settings groupBox.</span> +<span class="sd"> :param checkable: Whether or not the groupBox can be collapsed.</span> + + +<span class="sd"> Build the groupBox that contains all of the settings for this module. Parent the groupBox</span> +<span class="sd"> into the main skeletonSettingsUI layout.</span> +<span class="sd"> Lastly, call on updateSettingsUI to populate the UI based off of the network node values.</span> + +<span class="sd"> .. image:: /images/skeletonSettings.png</span> + +<span class="sd"> """</span> + <span class="c1"># width, height, checkable</span> + + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span> + <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> + + <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span> + <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> + <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># groupbox all modules get</span> + <span class="n">ART_RigModule</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="mi">335</span><span class="p">,</span> <span class="mi">228</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> + + <span class="c1"># STANDARD BUTTONS</span> + + <span class="c1"># create a VBoxLayout to add to our Groupbox and then add a QFrame for our signal/slot</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">320</span><span class="p">,</span> <span class="mi">210</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">320</span><span class="p">,</span> <span class="mi">210</span><span class="p">))</span> + + <span class="c1"># create layout that is a child of the frame</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> + + <span class="c1"># current parent</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParentMod</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">currentParentMod</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParentLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">"Current Parent: "</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParentLabel</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParentMod</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">currentParentLabel</span><span class="p">)</span> + + <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignHCenter</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">currentParentMod</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span><span class="p">)</span> + + <span class="c1"># button layout for name/parent</span> + <span class="bp">self</span><span class="o">.</span><span class="n">buttonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">buttonLayout</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeNameBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">"Change Name"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeParentBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">"Change Parent"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">changeNameBtn</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">changeParentBtn</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeNameBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">"blueButton"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeParentBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">"blueButton"</span><span class="p">)</span> + + <span class="c1"># bake offsets button</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeToolsLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeToolsLayout</span><span class="p">)</span> + + <span class="c1"># Bake OFfsets</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">"Bake Offsets"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">headerFont</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsets</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">"Bake the offset mover values up to the global movers to get them in sync"</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">"blueButton"</span><span class="p">)</span> + + <span class="c1"># button signal/slots</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeNameBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">changeModuleName</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">changeParentBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">changeModuleParent</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">))</span> + + <span class="c1"># Number of Neck Bones</span> + <span class="bp">self</span><span class="o">.</span><span class="n">neckLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">neckLayout</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">numNeckBonesLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">"Number of Neck Bones: "</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeckBonesLabel</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Preferred</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeckBonesLabel</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeckBonesLabel</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">neckLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">numNeckBonesLabel</span><span class="p">))</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpinBox</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setMaximum</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setMinimum</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">neckLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="p">)</span> + + <span class="c1"># rebuild button</span> + <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">"Apply Changes"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">headerFont</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span> + + <span class="c1"># spinBox & checkbox signal/slots</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">valueChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toggleButtonState</span><span class="p">)</span> + + <span class="c1"># signal slot for groupbox checkbox</span> + <span class="n">QtCore</span><span class="o">.</span><span class="n">QObject</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">SIGNAL</span><span class="p">(</span><span class="s2">"toggled(bool)"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setVisible</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + + <span class="c1"># add custom skeletonUI settings name, parent, rig types to install, mirror module, etc.</span> + <span class="c1"># add to the rig cretor UI's module settings layout VBoxLayout</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="p">)</span> + + <span class="c1"># Populate the settings UI based on the network node attributes</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateSettingsUI</span><span class="p">()</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.updateSettingsUI"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.updateSettingsUI">[docs]</a> <span class="k">def</span> <span class="nf">updateSettingsUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + + <span class="sd">"""</span> +<span class="sd"> Update the skeleton settings UI based on the network node values for this module.</span> +<span class="sd"> """</span> + + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">numNeck</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">)</span> + + <span class="c1"># update UI elements</span> + <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">numNeck</span><span class="p">)</span> + + <span class="c1"># apply changes</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.updateNeck"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.updateNeck">[docs]</a> <span class="k">def</span> <span class="nf">updateNeck</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attachedModules</span><span class="p">,</span> <span class="n">oldNum</span><span class="p">):</span> + + <span class="sd">"""</span> +<span class="sd"> Take the number of neck bones value and rebuild the joint mover.</span> + +<span class="sd"> The head module has 3 joint mover files, 1 for each possible neck number. When the number of neck bones is</span> +<span class="sd"> changed, the current module has its information stored (placement, etc), the module is then deleted,</span> +<span class="sd"> the new joint mover path is constructed and brought in, and lastly it resolves any dependency issues.</span> +<span class="sd"> (Like if there was a leaf joint as a child of a neck bone that no longer exists)</span> + +<span class="sd"> :param attachedModules: self.checkForDependencies()</span> +<span class="sd"> :param oldNum: the existing amount of neck bones prior to the update</span> +<span class="sd"> """</span> + + <span class="c1"># gather information (current name, current parent, etc)</span> + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".moduleName"</span><span class="p">)</span> + <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">)</span> + <span class="n">newNum</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">))</span> + + <span class="c1"># call on base class delete</span> + <span class="n">movers</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnJointMovers</span> + <span class="k">for</span> <span class="n">moverGrp</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span> + <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">moverGrp</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="c1"># store mover positions (movers = [all global, all offset, all geo])</span> + <span class="n">basePositions</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">movers</span><span class="p">:</span> + <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">each</span><span class="p">:</span> + <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">attrValues</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span> + <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">"."</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)</span> + <span class="n">attrValues</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">])</span> + <span class="n">basePositions</span><span class="p">[</span><span class="n">mover</span><span class="p">]</span> <span class="o">=</span> <span class="n">attrValues</span> + + <span class="c1"># delete joint mover</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">)</span> + + <span class="c1"># build new jmPath name</span> + <span class="n">jmPath</span> <span class="o">=</span> <span class="n">jointMover</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">".ma"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">newNum</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"Neck.ma"</span> <span class="c1"># ART_Head_1Neck</span> + <span class="bp">self</span><span class="o">.</span><span class="n">jointMover_Build</span><span class="p">(</span><span class="n">jmPath</span><span class="p">)</span> + + <span class="c1"># apply base positions</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">basePositions</span><span class="p">:</span> + + <span class="n">mover</span> <span class="o">=</span> <span class="n">key</span> + <span class="n">attrList</span> <span class="o">=</span> <span class="n">basePositions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrList</span><span class="p">:</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">"."</span> <span class="o">+</span> <span class="n">attr</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">attr</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + + <span class="c1"># parent the joint mover to the offset mover of the parent</span> + <span class="n">mover</span> <span class="o">=</span> <span class="s2">""</span> + + <span class="k">if</span> <span class="n">parent</span> <span class="o">==</span> <span class="s2">"root"</span><span class="p">:</span> + <span class="n">mover</span> <span class="o">=</span> <span class="s2">"root_mover"</span> + + <span class="k">else</span><span class="p">:</span> + <span class="c1"># find the parent mover name to parent to</span> + <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span> + <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span> + + <span class="c1"># delete the old constraint and create the new one</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp_parentConstraint*"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp_parentConstraint*"</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp_scaleConstraint*"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp_scaleConstraint*"</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># create the connection geo between the two</span> + <span class="n">childMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findOffsetMoverFromName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createBoneConnection</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">childMover</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># if there were any module dependencies, fix those now.</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">attachedModules</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">elementList</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">attachedModules</span><span class="p">:</span> + <span class="n">elementList</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="s2">" -> parent changed from: "</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">" to: "</span><span class="p">,</span> <span class="s2">"root</span><span class="se">\n</span><span class="s2">"</span><span class="p">])</span> + <span class="n">currentParent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">if</span> <span class="n">currentParent</span> <span class="o">!=</span> <span class="s2">"root_mover"</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="s2">"root_mover"</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="s2">"root_mover"</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">,</span> <span class="s2">"root"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># then, update settings UI for those dependency modules to display new parent info</span> + <span class="n">modules</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getAllModules</span> + + <span class="k">if</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span> + <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">".moduleName"</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">modInst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span> + <span class="k">if</span> <span class="n">modInst</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">==</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="c1"># find the current groupBox for this module</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span> + <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span> + <span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> <span class="o">==</span> <span class="n">modName</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> + + <span class="c1"># relaunch the skeleton settings UI with new info</span> + <span class="n">modInst</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">modName</span><span class="p">)</span> + + <span class="c1"># create the connection geo between the two</span> + <span class="n">mover</span> <span class="o">=</span> <span class="s2">"root_mover"</span> + <span class="n">childMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findOffsetMoverFromName</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createBoneConnection</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">childMover</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> + <span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">applyModuleChanges</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># warn user about changes</span> + <span class="n">winParent</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span> + <span class="n">win</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">DialogMessage</span><span class="p">(</span><span class="s2">"Attention!"</span><span class="p">,</span> + <span class="s2">"The following modules have had their parent changed due to the change</span><span class="se">\</span> +<span class="s2"> in this module's structure:"</span><span class="p">,</span> + <span class="n">elementList</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">winParent</span><span class="p">)</span> + <span class="n">win</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.applyModuleChanges"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.applyModuleChanges">[docs]</a> <span class="k">def</span> <span class="nf">applyModuleChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">):</span> + + <span class="sd">"""</span> +<span class="sd"> Update the scene after the settings are changed in the skeleton settings UI.</span> + +<span class="sd"> This means also updating the created_bones attr, updating the joint mover if needed,</span> +<span class="sd"> running self.updateNeck, updating the outliner, and updating the bone count.</span> + +<span class="sd"> :param moduleInst: self (usually, but there are cases like templates where an inst on disc is passed in.)</span> +<span class="sd"> """</span> + + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + + <span class="c1"># get prefix/suffix</span> + <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">prefix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">"_"</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">suffix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="s2">"_"</span> <span class="o">+</span> <span class="n">suffix</span> + + <span class="c1"># create list of the new created bones</span> + <span class="n">joints</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="c1"># get current neck value</span> + <span class="n">currentNum</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">))</span> + + <span class="c1"># get new neck value</span> + <span class="n">uiNeckVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">value</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">uiNeckVal</span> <span class="o">!=</span> <span class="n">currentNum</span><span class="p">:</span> + <span class="c1"># update neck value, and call on update neck</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">,</span> <span class="n">uiNeckVal</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># look for any attached modules</span> + <span class="n">attachedModules</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">checkForDependencies</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateNeck</span><span class="p">(</span><span class="n">attachedModules</span><span class="p">,</span> <span class="n">currentNum</span><span class="p">)</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">uiNeckVal</span><span class="p">):</span> + <span class="n">joints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s2">"neck_0"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">suffix</span><span class="p">)</span> + + <span class="n">joints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s2">"head"</span> <span class="o">+</span> <span class="n">suffix</span><span class="p">)</span> + + <span class="c1"># build attrString</span> + <span class="n">attrString</span> <span class="o">=</span> <span class="s2">""</span> + <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span> + <span class="n">attrString</span> <span class="o">+=</span> <span class="n">bone</span> <span class="o">+</span> <span class="s2">"::"</span> + + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".Created_Bones"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".Created_Bones"</span><span class="p">,</span> <span class="n">attrString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="c1"># reset button</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + + <span class="c1"># update outliner</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateOutliner</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateBoneCount</span><span class="p">()</span> + + <span class="c1"># clear selection</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.toggleButtonState"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.toggleButtonState">[docs]</a> <span class="k">def</span> <span class="nf">toggleButtonState</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + + <span class="sd">"""Toggle the state of the Apply Changes button."""</span> + + <span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">isEnabled</span><span class="p">()</span> + <span class="k">if</span> <span class="n">state</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">applyButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.addJointMoverToOutliner"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.addJointMoverToOutliner">[docs]</a> <span class="k">def</span> <span class="nf">addJointMoverToOutliner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + + <span class="sd">"""</span> +<span class="sd"> Add the joint movers for this module to the outliner.</span> + +<span class="sd"> Depending on the module settings, different joint movers may or may not be added. Also, each "joint" usually</span> +<span class="sd"> has three movers: global, offset, and geo. However, not all joints do, so this method is also used to specify</span> +<span class="sd"> which joint movers for each joint are added to the outliner.</span> + +<span class="sd"> .. image:: /images/outliner.png</span> + +<span class="sd"> """</span> + <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">topLevelItemCount</span><span class="p">()</span> + + <span class="c1"># Add the module to the tree widget in the outliner tab of the rig creator UI</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_treeModule"</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">topLevelItem</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <span class="n">foreground</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QBrush</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_treeModule"</span><span class="p">]</span><span class="o">.</span><span class="n">setForeground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">foreground</span><span class="p">)</span> + + <span class="c1"># add the neck 01</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_treeModule"</span><span class="p">])</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createGlobalMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createOffsetMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createMeshMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + + <span class="c1"># add neck 02</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">])</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createGlobalMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createOffsetMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createMeshMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + + <span class="c1"># add neck 03</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">])</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createGlobalMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createOffsetMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">],</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createMeshMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + + <span class="c1"># add head</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">]</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_treeModule"</span><span class="p">])</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createGlobalMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createOffsetMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createMeshMoverButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_head"</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">)</span> + + <span class="c1"># create selection script job for module</span> + <span class="bp">self</span><span class="o">.</span><span class="n">createScriptJob</span><span class="p">()</span> + + <span class="c1"># update based on spinBox values</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateOutliner</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">updateBoneCount</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">treeWidget</span><span class="o">.</span><span class="n">expandAll</span><span class="p">()</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.updateOutliner"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.updateOutliner">[docs]</a> <span class="k">def</span> <span class="nf">updateOutliner</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Whenever changes are made to the module settings, update the outliner to show the new or removed movers</span> +<span class="sd"> """</span> + + <span class="c1"># NECK</span> + <span class="n">numNeck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">numNeck</span><span class="o">.</span><span class="n">value</span><span class="p">()</span> + <span class="k">if</span> <span class="n">numNeck</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">numNeck</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">numNeck</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_01"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_02"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">"_neck_03"</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.pinModule"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.pinModule">[docs]</a> <span class="k">def</span> <span class="nf">pinModule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Pin the module in place so the parent does not move the module. Each module has to define how it needs to be</span> +<span class="sd"> pinned.</span> +<span class="sd"> """</span> + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">topLevelMover</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_neck_01_mover_grp"</span> + + <span class="k">if</span> <span class="n">state</span><span class="p">:</span> + + <span class="n">loc</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">spaceLocator</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">loc</span> <span class="o">+</span> <span class="s2">".v"</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">topLevelMover</span><span class="p">,</span> <span class="n">loc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> + <span class="n">const</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">topLevelMover</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".pinConstraint"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">"pinConstraint"</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">"message"</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">const</span> <span class="o">+</span> <span class="s2">".message"</span><span class="p">,</span> <span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".pinConstraint"</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">state</span><span class="p">:</span> + + <span class="n">connections</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".pinConstraint"</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">connections</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">constraint</span> <span class="o">=</span> <span class="n">connections</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.skinProxyGeo"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.skinProxyGeo">[docs]</a> <span class="k">def</span> <span class="nf">skinProxyGeo</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Skin the proxy geo brought in by the module. Each module has to define how it wants to skin its proxy geo.</span> +<span class="sd"> """</span> + + <span class="c1"># get the network node</span> + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".moduleName"</span><span class="p">)</span> + <span class="n">baseName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".baseName"</span><span class="p">)</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">baseName</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">prefix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">"_"</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="k">if</span> <span class="n">suffix</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="s2">"_"</span> <span class="o">+</span> <span class="n">suffix</span> + + <span class="c1"># get this module's proxy geo meshes</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_mover_grp"</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">proxyGeoMeshes</span> <span class="o">=</span> <span class="p">[]</span> + <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span> + <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"proxy_geo"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">each</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"transform"</span><span class="p">:</span> + <span class="n">proxyGeoMeshes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> + + <span class="c1"># skin the proxy geo meshes</span> + <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">proxyGeoMeshes</span><span class="p">:</span> + <span class="n">dupeMesh</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">duplicate</span><span class="p">(</span><span class="n">mesh</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"skin_"</span> <span class="o">+</span> <span class="n">mesh</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">dupeMesh</span> <span class="o">+</span> <span class="s2">".overrideEnabled"</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">dupeMesh</span> <span class="o">+</span> <span class="s2">".overrideDisplayType"</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + + <span class="c1"># create skinned geo group</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">"skinned_proxy_geo"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="n">empty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"skinned_proxy_geo"</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">dupeMesh</span><span class="p">,</span> <span class="s2">"skinned_proxy_geo"</span><span class="p">)</span> + + <span class="n">boneName</span> <span class="o">=</span> <span class="n">mesh</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_"</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> + <span class="n">boneName</span> <span class="o">=</span> <span class="n">boneName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">"_proxy_geo"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">joint</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">boneName</span> <span class="o">+</span> <span class="n">suffix</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">joint</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">dupeMesh</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">([</span><span class="n">dupeMesh</span><span class="p">,</span> <span class="n">joint</span><span class="p">])</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">tsb</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">maximumInfluences</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">obeyMaxInfluences</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">bindMethod</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">skinMethod</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> + <span class="n">normalizeWeights</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.buildRigCustom"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.buildRigCustom">[docs]</a> <span class="k">def</span> <span class="nf">buildRigCustom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">textEdit</span><span class="p">,</span> <span class="n">uiInst</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Build the rigs for this module.</span> + +<span class="sd"> This method defines what rigs are built and how they are built when the asset is published. It posts any build</span> +<span class="sd"> info to the passed in textEdit.</span> + +<span class="sd"> :param textEdit: passed in text edit that the rig build can post updates to</span> +<span class="sd"> :param uiInst: passed in instance of the buildProgressUI</span> +<span class="sd"> """</span> + + <span class="k">if</span> <span class="n">textEdit</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">textEdit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" Building "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">" Rig.."</span><span class="p">)</span> + + <span class="c1"># get the created joints</span> + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnNetworkNode</span> + <span class="n">parentBone</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">)</span> + <span class="n">joints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnCreatedJoints</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># create groups and settings</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + + <span class="c1"># create the rig group</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="n">empty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_group"</span><span class="p">)</span> + <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">parentBone</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigGrp</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> + + <span class="c1"># create the rig settings group</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigSettings</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="n">empty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_settings"</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigSettings</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigGrp</span><span class="p">)</span> + <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigSettings</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigSettings</span> <span class="o">+</span> <span class="s2">"."</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="c1"># create the ctrl group (what will get the constraint to the parent)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">rigCtrlGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="n">empty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">"_ctrl_grp"</span><span class="p">)</span> + <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">parentBone</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigCtrlGrp</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigCtrlGrp</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigGrp</span><span class="p">)</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># Build the FK Neck Rig</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + + <span class="n">fkControls</span> <span class="o">=</span> <span class="p">[]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">topNode</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="c1"># get number of neck bones</span> + <span class="n">numNeck</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">)</span> + <span class="n">neckJoints</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">joints</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span> + <span class="n">neckJoints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">joints</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + + <span class="c1"># create FK controls for neck joints, adding space switching to base neck joint</span> + <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">neckJoints</span><span class="p">:</span> + <span class="k">if</span> <span class="n">joint</span> <span class="o">==</span> <span class="n">joints</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createControlFromMover</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">networkNode</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> + + <span class="n">fkControl</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">)</span> + <span class="n">animGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim_grp"</span><span class="p">)</span> + <span class="n">spaceSwitcher</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim_space_switcher"</span><span class="p">)</span> + <span class="n">spaceSwitchFollow</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim_space_switcher_follow"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">topNode</span> <span class="o">=</span> <span class="n">spaceSwitchFollow</span> + + <span class="n">fkControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">spaceSwitchFollow</span><span class="p">,</span> <span class="n">fkControl</span><span class="p">,</span> <span class="n">joint</span><span class="p">])</span> + <span class="c1"># color the control</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">colorControl</span><span class="p">(</span><span class="n">fkControl</span><span class="p">,</span> <span class="mi">18</span><span class="p">)</span> + + <span class="k">else</span><span class="p">:</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createControlFromMover</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">networkNode</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + + <span class="n">fkControl</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">)</span> + <span class="n">animGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim_grp"</span><span class="p">)</span> + + <span class="n">fkControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">animGrp</span><span class="p">,</span> <span class="n">fkControl</span><span class="p">,</span> <span class="n">joint</span><span class="p">])</span> + + <span class="c1"># color the control</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">colorControl</span><span class="p">(</span><span class="n">fkControl</span><span class="p">,</span> <span class="mi">18</span><span class="p">)</span> + + <span class="c1"># create hierarchy</span> + <span class="n">fkControls</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> + + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">fkControls</span><span class="p">)):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">fkControls</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">fkControls</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> + <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># Build the FK Head Rig</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="n">headJoint</span> <span class="o">=</span> <span class="n">joints</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="n">data</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createControlFromMover</span><span class="p">(</span><span class="n">headJoint</span><span class="p">,</span> <span class="n">networkNode</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> + + <span class="n">headControl</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">headJoint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">)</span> + <span class="n">animGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">headJoint</span> <span class="o">+</span> <span class="s2">"_anim_grp"</span><span class="p">)</span> + <span class="n">spaceSwitcher</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">headJoint</span> <span class="o">+</span> <span class="s2">"_anim_space_switcher"</span><span class="p">)</span> + <span class="n">spaceSwitchFollow</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">headJoint</span> <span class="o">+</span> <span class="s2">"_anim_space_switcher_follow"</span><span class="p">)</span> + + <span class="c1"># color the control</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">colorControl</span><span class="p">(</span><span class="n">headControl</span><span class="p">,</span> <span class="mi">17</span><span class="p">)</span> + + <span class="c1"># parent head to neck</span> + <span class="n">lastNeck</span> <span class="o">=</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">spaceSwitchFollow</span><span class="p">,</span> <span class="n">lastNeck</span><span class="p">)</span> + + <span class="n">fkControls</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">animGrp</span><span class="p">,</span> <span class="n">headControl</span><span class="p">,</span> <span class="n">headJoint</span><span class="p">])</span> + + <span class="c1"># parent head rig to rigGrp</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">topNode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigCtrlGrp</span><span class="p">)</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># lock attrs</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">fkControls</span><span class="p">:</span> + <span class="n">control</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="k">if</span> <span class="n">control</span> <span class="o">!=</span> <span class="n">headControl</span><span class="p">:</span> + <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">".scaleX"</span><span class="p">,</span> <span class="s2">".scaleY"</span><span class="p">,</span> <span class="s2">".globalScale"</span><span class="p">,</span> <span class="s2">".visibility"</span><span class="p">]:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">control</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">".visibility"</span><span class="p">]:</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">control</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># hook up to driver skeleton</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">fkControls</span><span class="p">:</span> + <span class="n">control</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">joint</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">pointConstraint</span><span class="p">(</span><span class="n">control</span><span class="p">,</span> <span class="s2">"driver_"</span> <span class="o">+</span> <span class="n">joint</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">orientConstraint</span><span class="p">(</span><span class="n">control</span><span class="p">,</span> <span class="s2">"driver_"</span> <span class="o">+</span> <span class="n">joint</span><span class="p">)</span> + + <span class="c1"># plug master control scale into a new mult node that takes joint.scale into input 1, and master.scale</span> + <span class="c1"># into input 2, and plugs that into driver joint</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">"master_anim"</span><span class="p">):</span> + <span class="n">globalScaleMult</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">shadingNode</span><span class="p">(</span><span class="s2">"multiplyDivide"</span><span class="p">,</span> <span class="n">asUtility</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">"_globalScale"</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="s2">"master_anim.scale"</span><span class="p">,</span> <span class="n">globalScaleMult</span> <span class="o">+</span> <span class="s2">".input1"</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">control</span> <span class="o">+</span> <span class="s2">".scale"</span><span class="p">,</span> <span class="n">globalScaleMult</span> <span class="o">+</span> <span class="s2">".input2"</span><span class="p">)</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createConstraint</span><span class="p">(</span><span class="n">globalScaleMult</span><span class="p">,</span> <span class="s2">"driver_"</span> <span class="o">+</span> <span class="n">joint</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"output"</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createConstraint</span><span class="p">(</span><span class="n">control</span><span class="p">,</span> <span class="s2">"driver_"</span> <span class="o">+</span> <span class="n">joint</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># add info to module</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="n">fkRigData</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">fkControls</span><span class="p">:</span> + <span class="n">fkRigData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + + <span class="c1"># add created control info to module</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".fkControls"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">"fkControls"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</span><span class="p">)</span> + <span class="n">jsonString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">fkRigData</span><span class="p">)</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".fkControls"</span><span class="p">,</span> <span class="n">jsonString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</span><span class="p">)</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # Parent Under Offset Ctrl # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># parent under offset_anim if it exists(it always should)</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">"offset_anim"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigGrp</span><span class="p">,</span> <span class="s2">"offset_anim"</span><span class="p">)</span> + + <span class="c1"># return data</span> + <span class="n">parentBone</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".parentModuleBone"</span><span class="p">)</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">uiInst</span><span class="o">.</span><span class="n">rigData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">rigCtrlGrp</span><span class="p">,</span> <span class="s2">"driver_"</span> <span class="o">+</span> <span class="n">parentBone</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span> + <span class="k">except</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># update progress</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="k">if</span> <span class="n">textEdit</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">textEdit</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">18</span><span class="p">))</span> + <span class="n">textEdit</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" SUCCESS: FK Build Complete!"</span><span class="p">)</span> + <span class="n">textEdit</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.pickerUI"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.pickerUI">[docs]</a> <span class="k">def</span> <span class="nf">pickerUI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">center</span><span class="p">,</span> <span class="n">animUI</span><span class="p">,</span> <span class="n">networkNode</span><span class="p">,</span> <span class="n">namespace</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Build the animation picker for the module.</span> + + +<span class="sd"> :param center: the center of the QGraphicsScene</span> +<span class="sd"> :param animUI: the instance of the AnimationUI</span> +<span class="sd"> :param networkNode: the module's network node</span> +<span class="sd"> :param namespace: the namespace of the character</span> + +<span class="sd"> """</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">namespace</span> <span class="o">=</span> <span class="n">namespace</span> + <span class="n">neckJoints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".neckJoints"</span><span class="p">)</span> + + <span class="c1"># create qBrushes</span> + <span class="n">yellowBrush</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">yellow</span> + <span class="n">blueBrush</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">220</span><span class="p">,</span> <span class="mi">255</span><span class="p">)</span> + <span class="n">greenBrush</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span> + <span class="n">clearBrush</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QBrush</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">black</span><span class="p">)</span> + <span class="n">clearBrush</span><span class="o">.</span><span class="n">setStyle</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span> + + <span class="c1"># create the picker border item</span> + <span class="k">if</span> <span class="n">networkNode</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">":"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">moduleNode</span> <span class="o">=</span> <span class="n">networkNode</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">moduleNode</span> <span class="o">=</span> <span class="n">networkNode</span> + + <span class="n">borderItem</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerBorderItem</span><span class="p">(</span><span class="n">center</span><span class="o">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="mi">50</span><span class="p">,</span> <span class="n">center</span><span class="o">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="n">clearBrush</span><span class="p">,</span> <span class="n">moduleNode</span><span class="p">)</span> + + <span class="c1"># get controls</span> + <span class="n">fkControls</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".fkControls"</span><span class="p">))</span> + <span class="n">fkControls</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> + <span class="n">buttonData</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="c1"># create buttons</span> + <span class="n">headButton</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> + <span class="p">[[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">60</span><span class="p">],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">60</span><span class="p">],</span> <span class="p">[</span><span class="mi">40</span><span class="p">,</span> <span class="mi">40</span><span class="p">],</span> <span class="p">[</span><span class="mi">40</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">35</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> + <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">40</span><span class="p">],</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">60</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> + <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">yellowBrush</span><span class="p">,</span> <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">headButton</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">yellowBrush</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">neckJoints</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> + <span class="n">neck1Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> + <span class="p">[[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">32</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">35</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">40</span><span class="p">,</span> <span class="mi">85</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">85</span><span class="p">],</span> + <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> + <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck1Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">neckJoints</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="n">neck1Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> + <span class="p">[[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">32</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">35</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="mi">68</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">68</span><span class="p">],</span> + <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> + <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck1Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="n">neck2Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="p">[[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">70</span><span class="p">],</span> <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="mi">70</span><span class="p">],</span> <span class="p">[</span><span class="mi">40</span><span class="p">,</span> <span class="mi">80</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">80</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> + <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck2Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="k">if</span> <span class="n">neckJoints</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span> + <span class="n">neck1Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> + <span class="p">[[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">8</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">32</span><span class="p">,</span> <span class="mi">63</span><span class="p">],</span> <span class="p">[</span><span class="mi">35</span><span class="p">,</span> <span class="mi">55</span><span class="p">],</span> <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="mi">68</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">68</span><span class="p">],</span> + <span class="p">[</span><span class="mi">5</span><span class="p">,</span> <span class="mi">55</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> + <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck1Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="n">neck2Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="p">[[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">70</span><span class="p">],</span> <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="mi">70</span><span class="p">],</span> <span class="p">[</span><span class="mi">38</span><span class="p">,</span> <span class="mi">76</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">76</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> + <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck2Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="n">neck3Button</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButtonCustom</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="p">[[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">78</span><span class="p">],</span> <span class="p">[</span><span class="mi">38</span><span class="p">,</span> <span class="mi">78</span><span class="p">],</span> <span class="p">[</span><span class="mi">40</span><span class="p">,</span> <span class="mi">84</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">84</span><span class="p">]],</span> <span class="p">[</span><span class="mi">30</span><span class="p">,</span> <span class="mi">5</span><span class="p">],</span> + <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">,</span> <span class="n">borderItem</span><span class="p">)</span> + <span class="n">buttonData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">neck3Button</span><span class="p">,</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">fkControls</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">blueBrush</span><span class="p">])</span> + + <span class="c1"># =======================================================================</span> + <span class="c1"># go through button data, adding menu items</span> + <span class="c1"># =======================================================================</span> + <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">buttonData</span><span class="p">:</span> + <span class="n">button</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + + <span class="n">zeroIcon1</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">((</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">"System/zeroAll.png"</span><span class="p">))))</span> + <span class="n">zeroIcon2</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">((</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">"System/zeroSel.png"</span><span class="p">))))</span> + <span class="n">selectIcon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">((</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">"System/select.png"</span><span class="p">))))</span> + + <span class="n">button</span><span class="o">.</span><span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">selectIcon</span><span class="p">,</span> <span class="s2">"Select All Controls"</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectRigControls</span><span class="p">))</span> + <span class="n">button</span><span class="o">.</span><span class="n">menu</span><span class="o">.</span><span class="n">addSeparator</span><span class="p">()</span> + + <span class="n">button</span><span class="o">.</span><span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">zeroIcon1</span><span class="p">,</span> <span class="s2">"Zero Out Attrs (All)"</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetRigControls</span><span class="p">,</span> <span class="kc">True</span><span class="p">))</span> + <span class="n">button</span><span class="o">.</span><span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">zeroIcon2</span><span class="p">,</span> <span class="s2">"Zero Out Attrs (Sel)"</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetRigControls</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span> + + <span class="c1"># =======================================================================</span> + <span class="c1"># #Create scriptJob for selection. Set scriptJob number to borderItem.data(5)</span> + <span class="c1"># =======================================================================</span> + <span class="n">scriptJob</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="p">[</span><span class="s2">"SelectionChanged"</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectionScriptJob_animUI</span><span class="p">,</span> <span class="n">buttonData</span><span class="p">)],</span> + <span class="n">kws</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="n">borderItem</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">scriptJob</span><span class="p">)</span> + <span class="n">animUI</span><span class="o">.</span><span class="n">selectionScriptJobs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">scriptJob</span><span class="p">)</span> + + <span class="k">return</span> <span class="p">[</span><span class="n">borderItem</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">scriptJob</span><span class="p">]</span></div> + + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> + <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span> +<div class="viewcode-block" id="ART_Head.importFBX"><a class="viewcode-back" href="../../head.html#RigModules.ART_Head.ART_Head.importFBX">[docs]</a> <span class="k">def</span> <span class="nf">importFBX</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">importMethod</span><span class="p">,</span> <span class="n">character</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Import FBX motion onto this module's rig controls.</span> + +<span class="sd"> :param importMethod: The import method to be used (options defined in the file attributes)</span> +<span class="sd"> :param character: the namespace of the character</span> + +<span class="sd"> Each module has to define what import methods it offers (at the very top of the module file) and then define</span> +<span class="sd"> how motion is imported using those methods.</span> +<span class="sd"> """</span> + + <span class="n">returnControls</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="c1"># get basic info of node</span> + <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">returnRigNetworkNode</span> + <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".moduleName"</span><span class="p">)</span> + <span class="n">baseModuleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".baseName"</span><span class="p">)</span> + + <span class="c1"># find prefix/suffix of module name</span> + <span class="n">prefixSuffix</span> <span class="o">=</span> <span class="n">moduleName</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">baseModuleName</span><span class="p">)</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="kc">None</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="n">prefixSuffix</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> + <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefixSuffix</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> + <span class="k">if</span> <span class="n">prefixSuffix</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="n">prefixSuffix</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + + <span class="c1"># get joints</span> + <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">".Created_Bones"</span><span class="p">)</span> + <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">joints</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"::"</span><span class="p">)</span> + <span class="n">createdJoints</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span> + <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">:</span> + <span class="n">createdJoints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span> + + <span class="c1"># IMPORT FK</span> + <span class="k">if</span> <span class="n">importMethod</span> <span class="o">==</span> <span class="s2">"FK"</span><span class="p">:</span> + + <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">createdJoints</span><span class="p">:</span> + <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">character</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">):</span> + <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">character</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">)</span> + <span class="n">returnControls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">character</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="s2">"fk_"</span> <span class="o">+</span> <span class="n">joint</span> <span class="o">+</span> <span class="s2">"_anim"</span><span class="p">)</span> + + <span class="c1"># IMPORT NONE</span> + <span class="k">if</span> <span class="n">importMethod</span> <span class="o">==</span> <span class="s2">"None"</span><span class="p">:</span> + <span class="k">pass</span> + + <span class="k">return</span> <span class="n">returnControls</span></div></div> +</pre></div> + + </div> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related" role="navigation" aria-label="related navigation"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © Copyright 2017, Jeremy Ernst. + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2. + </div> + </body> +</html>
\ No newline at end of file |