tag:blogger.com,1999:blog-173494362024-03-12T19:09:34.971-04:00griffinanimationThe art and animation of Ryan Griffin.Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-17349436.post-26185134960020909162018-06-22T14:20:00.001-04:002018-06-22T14:22:04.570-04:00Maya 2018 Time Editor Batch import fbxI'm doing a thing that requires the import of multiple FBX files into the Time Editor. The time editor is this sort of non-linear animation editing system that's now available in Maya. If this plan work out, I will need to import about 200 animation files. Since the file/import can only handle one file at a time, I decided to make a little script. This is super basic at the moment, but may provide a launchpad for further refinement.<br />
<br />
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #f9ee98;">import </span>pymel.core <span style="color: #f9ee98;">as </span>pm
<span style="color: #f9ee98;">def </span><span style="color: #9b703f;">multiFbxTimeEditImporter</span>()<span style="color: #cda869;">:</span><span style="color: #cda869;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #5f5a60; font-style: italic;"> """</span><span style="color: #5f5a60; font-style: italic;">Stub function for batch importing fbx files to the Time Editor</span><span style="color: #5f5a60; font-style: italic;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #5f5a60; font-style: italic;"> :return:</span><span style="color: #5f5a60; font-style: italic;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #5f5a60; font-style: italic;"> """</span><span style="color: #5f5a60; font-style: italic;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"> basicFilter <span style="color: #cda869;">= </span><span style="color: #a5c261;">"*.fbx"</span><span style="color: #a5c261;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"> result <span style="color: #cda869;">= </span>pm.fileDialog2(<span style="color: #aa4926;">fileFilter</span><span style="color: #cda869;">=</span>basicFilter<span style="color: #cc7832;">, </span><span style="color: #aa4926;">fileMode</span><span style="color: #cda869;">=</span><span style="color: #cf6a4c;">4</span><span style="color: #cc7832;">, </span><span style="color: #aa4926;">dialogStyle</span><span style="color: #cda869;">=</span><span style="color: #cf6a4c;">2</span>)
<span style="color: #f9ee98;">for </span>r <span style="color: #f9ee98;">in </span><span style="color: #dad085;">range</span>(<span style="color: #dad085;">len</span>(result))<span style="color: #cda869;">:</span><span style="color: #cda869;"> </span>f <span style="color: #cda869;">= </span>result[r]
nn <span style="color: #cda869;">= </span>result[r].rpartition(<span style="color: #a5c261;">'/'</span>)[<span style="color: #cf6a4c;">2</span>].replace(<span style="color: #a5c261;">'.fbx'</span><span style="color: #cc7832;">, </span><span style="color: #a5c261;">''</span>)
<span style="color: #80807f;">ntrack </span><span style="color: #cda869;">= </span>pm.timeEditorTracks(<span style="color: #a5c261;">'Composition1'</span><span style="color: #cc7832;">, </span><span style="color: #aa4926;">edit</span><span style="color: #cda869;">=</span><span style="color: #dad085;">True</span><span style="color: #cc7832;">, </span><span style="color: #aa4926;">addTrack</span><span style="color: #cda869;">=-</span><span style="color: #cf6a4c;">1</span><span style="color: #cc7832;">, </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #aa4926;"> trackType</span><span style="color: #cda869;">=</span><span style="color: #cf6a4c;">0</span><span style="color: #cc7832;">, </span><span style="color: #aa4926;">trackName</span><span style="color: #cda869;">=</span>nn)
pm.timeEditorClip(nn<span style="color: #cc7832;">, </span><span style="color: #aa4926;">importFbx</span><span style="color: #cda869;">=</span>f<span style="color: #cc7832;">, </span><span style="color: #aa4926;">importOption</span><span style="color: #cda869;">=</span><span style="color: #a5c261;">"generate"</span><span style="color: #cc7832;">, </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #aa4926;"> ipo</span><span style="color: #cda869;">=</span><span style="color: #a5c261;">"cuves"</span><span style="color: #cc7832;">, </span><span style="color: #aa4926;">importAllFbxTakes</span><span style="color: #cda869;">=</span><span style="color: #dad085;">True</span><span style="color: #cc7832;">,</span><span style="color: #cc7832;"> </span></pre>
<pre style="background-color: #141414; color: #f8f8f8; font-family: 'Courier New'; font-size: 9.0pt;"><span style="color: #aa4926;"> importTakeDestination</span><span style="color: #cda869;">=</span>r<span style="color: #cc7832;">, </span><span style="color: #aa4926;">track</span><span style="color: #cda869;">=</span><span style="color: #a5c261;">'Composition1|'</span><span style="color: #cda869;">+</span>nn)</pre>
Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com1tag:blogger.com,1999:blog-17349436.post-48221144961909899662018-01-29T13:45:00.002-05:002018-02-28T00:12:32.754-05:00Python 101 On Demand at The Rigging DojoHello, fellow consumers of all things CG. For those that aren't aware, for several years I ran a course on using Python with Autodesk Maya over at the Rigging Dojo. Now I have three young kids, a dozen side projects, and a serious time deficit. To that end, I'm offering up the entire 8 week Python 101 as part of the Dojo's on-demand training lineup. In this course, you will get the complete walk-through from the very basic concepts all the way up to class inheritance and sub-classes. This is a project driven course, which means you will create a basic rigging tool built on a foundation that is simple and easily extended. But wait! There's More! I don't want to make this a dead course with no new content so I will be doing regular additions to the video series where I share some of the cool Python, PyMel, and Pyside tricks I pick up in my day to day work as a Technical Animator. Those videos will be available to you as part of the On Demand Training at no additional charge. You will also get access to the Python project I used in the course so you can clearly see the final code. So what are you waiting for? Check out the syllabus outline below, and click the link to sign up.<br />
<br />
You might also want to take a look at another project I've been working on. Do you remember those three kids I mentioned? Well, I love teaching so much, I thought I may as well try to teach my kids how to animate, write code, make games, and do other artsy things. I also thought some of you might enjoy joining us on the adventure so I'm posting our process, finished pieces, and a bunch of rambling about being a good parent and junk. Check that out <a href="http://mediaresonate.com/" target="_blank">here</a>. You can also visit our <a href="https://www.youtube.com/channel/UCJ8NQBdC61q7DMY7EeWrJSQ" target="_blank">YouTube channel</a> or our <a href="https://www.facebook.com/media.resonate/" target="_blank">Facebook Page</a>. Thanks for taking a peak.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8BjDgK-AdvHBDjPIkROlT1PxQ1JiDiWB6XHJK4MY7z0r6Wu0YTKKAGFrK1w9m6Vb4U32uNirquLsnt4YvimUw07KnGWW7G_H3MLZ60WjSbflZd1d6Mr6yTOoaULPEwQkpY8ZH2Q/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="326" data-original-width="1178" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8BjDgK-AdvHBDjPIkROlT1PxQ1JiDiWB6XHJK4MY7z0r6Wu0YTKKAGFrK1w9m6Vb4U32uNirquLsnt4YvimUw07KnGWW7G_H3MLZ60WjSbflZd1d6Mr6yTOoaULPEwQkpY8ZH2Q/s640/Capture.JPG" width="640" /></a></div>
<br />
Sign up Here: <a href="https://ondemand.riggingdojo.com/a/7256/gv2WyhBN">https://ondemand.riggingdojo.com/a/7256/gv2WyhBN</a><br />
View the syllabus <a href="https://drive.google.com/open?id=1qBnG20o_Gwi3VN6Y8l9PuHLg6Qk-IKMx" target="_blank">HERE</a><br />
Tou should also check out some of the other great courses offered like the props course from the Talented Jeff Brodsky. <a href="https://ondemand.riggingdojo.com/a/6118/gv2WyhBN"> https://ondemand.riggingdojo.com/a/6118/gv2WyhBN</a><br />
<br />
<br />
Learn More<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/HaazBdTrrMQ/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/HaazBdTrrMQ?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com1tag:blogger.com,1999:blog-17349436.post-40687497940006372722018-01-17T10:41:00.002-05:002018-01-29T12:45:39.066-05:00YouTube InitializedGood news Everyone! I just pulled a bunch of my content from Vimeo and put it on YouTube with nice cover art and all the trimmings. I'm not sure how relevant these videos are anymore, but consider it a sign that I plan on adding new more exciting content soon. So head on over to YouTube, hit that subscribe button, and stay tuned.<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/8mdMmIzNG0c/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/8mdMmIzNG0c?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-25739307828217063692018-01-15T12:26:00.000-05:002018-01-15T12:27:47.214-05:00Ranger Rig Production Part2I just accidentally deleted the original draft of this so I'm posting again. Sadly I dropped this project for a while, however I do intend to return to it at some point.<br /><br />
Two words that are stuck in my brain when it comes to animation requirements are dependability, and predictability. Nice words right, but what do they mean in context to a rig? A dependable rig shouldn’t break. Stretchy limbs should always stretch, matching should always match, and all those other super high-tech features should stay super. Predictability comes into play when you’re creating multiple rigs for a production. If one rig has certain features, control shapes, and so on, then all the rigs should have those features. You don’t want to call your arm to head space switch attribute “head switch” on one rig and “noggin toggle” on another. So listen, this all sounds great, but stuff always happens on the first pass of any rig. Maybe you didn’t understand all of the animators requirements, or the animator will need the rig to do some crazy thing for a specific shot. Animator: “In this shot I need the character to shove his foot in his mouth while doing the chicken dance”. You also need to consider that you are just a human. You are going to make mistakes, or miss some connection somewhere that causes the rig to turn into a ball of polygons when a particular set of controls are used in combination. That’s okay. Animators are generally understanding people who are willing to laugh at with you when when something explodes, but it’s the Character TD’s job to make sure that the chance of errors have been minimized before the rig is delivered. <br />
So how do we minimize the margin for error? Doing things procedurally goes a long way toward that goal. While you may have had a rough night drinking craft beer samplers at your sister's birthday party, your code will be a bit more sensible. Knowing it has to work in the morning, your code will refrain from any any heavy partying thus allowing it to perform predictably the next day. It’s also important for you to talk to the animators before creating the rig they will use. I know they can be king of intimidating standing over there talking about acting choices and motivation while they wildly swing around a plastic sword, but it’s unlikely they will strike you “intentionally” if you go over to discuss the requirements for the shot or animation sequence they will be working on.<br />
Lastly you should consider technical requirements. If you are working on a game you may be up against a joint limit and you are probably limited to the types of deformers you can use. In most case you won’t be able to use any deformers to effect the actual skinned mesh, but you can use deformers to drive the rig. And let’s not forget number of influences per vertex! In my opinion these limitations are the factors that make game rigging so interesting and challenging. Game rigs need to push toward that cinematic quality without crazy deformers, muscle systems, and per shot rigs. Okay I’m slipping into a tangent. What other technical requirements should we consider. Well we will probably want the rig to run at more than one frame per second. This means we need to be smart with our deformer use, expressions, muscle systems, and all that fancy stuff that makes a rig fancy. Time for another shameless shout out to the Rigging Dojo who has some excellent information on the topic of <a href="https://web.archive.org/web/20160515185004/http://www.riggingdojo.com/2015/10/22/blazing-fast-character-rigs-with-maya-2016/">rig performance.</a><br />
Above all else, the animator wants to create the pose they want as quickly and easily as possible without counter animating! If you remember that one thing, you are sure to be surrounded by happy animators<br />
<br />
Now for those of you who refused to read all those boring words above, I present a synopsis in bullet point form.<br />
Designing a great rig<br />
<br />
<ul>
<li>Dependability and Predictability.</li>
<li>The animator can get the poses they need as easily as possible with no counter animating.</li>
<li>The rig can achieve the requirements of a particular shot, a series of shots, or an animation set.</li>
<li>The rig should be fast enough to allow for real time playback.</li>
<li>The rig should Saweet! </li>
</ul>
<br />
<br />
<br />
With all of the previous stuff in mind I will now set out to define the requirements for the Ranger Rig.<br />
Ranger Rig Requirements<br />
<ul>
<li>Audience: The animation community at large.</li>
<li>Use: I have no idea what you are going to do with this thing and I don’t plan on asking each of you personally so I will defer to some general requirements.</li>
<li>General Requirements:</li>
<li>Cinematic quality face with minimal controls to drive toward major poses like mouth corner wide and brow up. Sub-controls will allow for fine tuning the pose.</li>
<li>Beny controls.</li>
<li>Stretchy limbs.</li>
<li>Automated correctives.</li>
<li>Commonly used space switches.</li>
<li>360 degree twist extractors to prevent flipping.</li>
<li>The foot.</li>
<li>Heel to toe roll.</li>
<li>Animatable points for twist and pivot.</li>
<li>Toe twist, flap, and pivot.</li>
<li>Breathing controls.</li>
<li>Weapon controls with the ability to easily sheath the sword.</li>
<li>Possibly the ability to remove the boots, and armor. </li>
<li>Optional dynamics for little dangly bits.</li>
<li>The rig should be built procedurally where possible. This means all the artsy things like nice face shapes should be handled by math and junk, with an optional layer that uses blendshapes, and deformers.</li>
<li>It must be fast! This may mean things like proxy geometry, total abandonment of expressions, and systems optimized for multithreading.</li>
<li>Support for older versions of Maya.</li>
</ul>
That looks like a pretty good list for the moment. I would love to hear your opinions on what makes for a great rig with some specific information on features you would like to see on the Ranger. I think my next pose will talk about my plans for the face as I'm psyched up to get started on that. That’s all for now everyone.Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-5704193346322905092018-01-15T11:45:00.002-05:002018-01-29T12:49:41.611-05:00The Kids Said What. Animation and Family FunThe kids and I have started a new project where we are exploring art, animation, music, and more. Every week or so we work on some project like an animated video which we post on YouTube. We then follow that up with a video showing how we did what we did. I was inspired to take on this project because it offers us an opportunity to learn and grow as a family while providing a learning experience and hopefully some entertainment to our viewers. I encourage you to please show your support for this endeavor by visiting our <a href="https://www.youtube.com/channel/UCJ8NQBdC61q7DMY7EeWrJSQ" target="_blank">YouTube channel</a> and our <a href="http://mediaresonate.com/" target="_blank">Blog</a>. We would be pleased if you could subscribe so you can keep up to date on all of our latest creations.<br />
I would't feel right if I left the post here without giving you a sample of the sort of things we are working on. So without further delay I present The Kids Say What's first creation. The Fluffy Rainbow Butterfly Unicorn Kitty.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe width="854" height="480" src="https://www.youtube.com/embed/HleR7ZvQwxg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br />
<br />Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-49131139093149947642017-12-18T22:50:00.003-05:002017-12-18T22:50:33.619-05:00Pixel Art!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiSl11UYFW69JSNMrJYAviNa7cGghLnF7R0PbnGeXZR3Ltg_hV77YSE_bIA1x7upnMic4bYELmOs0g18jNt4hSojlIpAdrkZeKe03RDa0Sp-SXRRKC_aTXWcGAMsAPA93F3q7xGw/s1600/Deal.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="274" data-original-width="293" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiSl11UYFW69JSNMrJYAviNa7cGghLnF7R0PbnGeXZR3Ltg_hV77YSE_bIA1x7upnMic4bYELmOs0g18jNt4hSojlIpAdrkZeKe03RDa0Sp-SXRRKC_aTXWcGAMsAPA93F3q7xGw/s1600/Deal.PNG" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyIP1JKvP42swnkB7S9WSylQTL4VqWy2vpzogwpEfCSLKKmSKz5H3WMTYIFi0B0QGRLGnMLebXq7s8QTHJ0gZZqI2WcBQgod1gMEt6juvK99gHFUZXMWP25hBZ8dvvvC_m98qhUQ/s1600/DealSpace.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="326" data-original-width="326" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyIP1JKvP42swnkB7S9WSylQTL4VqWy2vpzogwpEfCSLKKmSKz5H3WMTYIFi0B0QGRLGnMLebXq7s8QTHJ0gZZqI2WcBQgod1gMEt6juvK99gHFUZXMWP25hBZ8dvvvC_m98qhUQ/s320/DealSpace.PNG" width="320" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-42436279463142840442016-03-05T21:50:00.002-05:002016-03-07T13:59:00.335-05:00Ranger Rig Production Part1<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Every year or so I like to take on a big personal rigging project so I can pick up some new tricks without the pressures and constraints of an actual production. This time around I will be mixing in several ventures all aimed at creating a film quality rig that can be distributed to the animation community at large. I will start off by outlining the goals of this project while giving a few details on how I plan on achieving these goals. Now before I get too deep into this, let me issue a fair warning that I have a son on the way any day now, so this project could go several weeks without anything to report. Alrighty then, with my excuses out of the way, let's push on. </span></div>
<b id="docs-internal-guid-101e0773-49df-5b76-2102-f92744aaa472" style="font-weight: normal;"><br /></b>
<br />
<h4 dir="ltr" style="line-height: 1.38; margin-bottom: 2pt; margin-top: 12pt;">
<span style="background-color: transparent; color: #e69138; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Goals</span></h4>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Work with a small team to develop some rigging tools. Except for the artsy stuff, I hope to generate every part of this rig procedurally. Details on this small team and that development process will be coming soon.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Develop a robust facial rigging solution that looks great without a bunch of fancy deformers, but is able to layer in deformers and blendshapes to push the look to the next level.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Push myself to push my skills at cinematic quality rigging.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Teach all of you about my process. Hopefully we will both learn something new! I won't be going full tutorial style on everything I do here, however I may make tutorials available in one form or another later on. For now you can check out the </span><a href="http://www.riggingdojo.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Rigging Dojo</span></a><span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, where you can get my Python class along with a ton of information on everything rigging related.</span></div>
</li>
</ul>
<div>
<ul>
</ul>
<div>
<span style="color: #cccccc;"><b><br /></b></span></div>
<div>
<span id="docs-internal-guid-101e0773-49df-0194-6145-7e22e89c95b6"><span style="color: #cccccc; font-family: "arial"; font-size: 14.6667px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">If I'm going to rig a character, I suppose I will need to start with a model. No, not just any model. It needs to be a great model. Fortunately for me, the extremely talented Daniel Williams has offered up one of his creations for this mad science project. I highly encourage you to check out </span><a href="http://pointpusher.artstation.com/" style="text-decoration: none;"><span style="color: #1155cc; font-family: "arial"; font-size: 14.6667px; font-weight: 700; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">his work</span></a><span style="color: #cccccc; font-family: "arial"; font-size: 14.6667px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">. This is typically the section where I would talk about good topology for rigging, but Danny's models already have fantastic topology. I will talk briefly about what makes topology "fantastic", and I will do some comparisons between what I look for in a cinematic mesh versus a game ready mesh in later posts. Before we get into all of that I want to show you what we'll be working with.</span></span></div>
<div>
<span style="color: #cccccc;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbHja-lqLqfrElblrn-M0YHUfMh929UDAlqePDMUMwLXYNEsIz2aYaP15iq2gPerUPo0hyUscJPFQMQRlJK394OByMN3mgZ4hpagu_dMffloFlr7njKK7wZA2rzHeq3gftcpV3g/s1600/Ranger34.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbHja-lqLqfrElblrn-M0YHUfMh929UDAlqePDMUMwLXYNEsIz2aYaP15iq2gPerUPo0hyUscJPFQMQRlJK394OByMN3mgZ4hpagu_dMffloFlr7njKK7wZA2rzHeq3gftcpV3g/s400/Ranger34.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-9R4okJPYOeGfqssVG4uqrIfbDRH-OZvLIQlgsDwWj8mCzHu2DbzSNaDixwYzox55q9r3EQYVQThwRgdkqjfbvrTIwwm5w5t3FisNA6zLKP3FogC1mGaqqbr6Xkl3DopS8FHsQA/s1600/RangerFace.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-9R4okJPYOeGfqssVG4uqrIfbDRH-OZvLIQlgsDwWj8mCzHu2DbzSNaDixwYzox55q9r3EQYVQThwRgdkqjfbvrTIwwm5w5t3FisNA6zLKP3FogC1mGaqqbr6Xkl3DopS8FHsQA/s320/RangerFace.JPG" width="320" /></a></div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxpusSvBMZkj3EdlvKi3pT4Musf2-vEE9eE6lh1MFs4Jt8C-qGBpyCTuUEiSHk6b9c6yZIaUva0kBEfpZOJr2upHIMGvzlsUdyP854AUya9TKR-BrAlgirJUZodC4ApHPT418_w/s1600/RangerFull.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaxpusSvBMZkj3EdlvKi3pT4Musf2-vEE9eE6lh1MFs4Jt8C-qGBpyCTuUEiSHk6b9c6yZIaUva0kBEfpZOJr2upHIMGvzlsUdyP854AUya9TKR-BrAlgirJUZodC4ApHPT418_w/s320/RangerFull.JPG" width="320" /></a><br />
<span style="color: #cccccc;"><br />Check out <a href="http://pointpusher.artstation.com/portfolio/zbrush-workshop-project-2014">this link</a> to see the Ranger in all his rendered glory.<br /><br /><br />Here are some reasons why I think this topology is Fantastic!</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2JdpMiSWauUpg7HDJH0LgZyNeXy73eMtZFyp7cQYzW_LSf8CAvxYpZtuyQ6UjOqwProEmPxS-n3mPeFaHKIRozVXw4BkZtRfMzOH4ZEumcUxHly1a1hz-AmQLfa0sn_D-1MT0WA/s1600/RangerFaceTopo.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2JdpMiSWauUpg7HDJH0LgZyNeXy73eMtZFyp7cQYzW_LSf8CAvxYpZtuyQ6UjOqwProEmPxS-n3mPeFaHKIRozVXw4BkZtRfMzOH4ZEumcUxHly1a1hz-AmQLfa0sn_D-1MT0WA/s320/RangerFaceTopo.JPG" width="240" /></a></div>
<br />
<div>
<ul>
<li><span style="color: #cccccc;">The continuous line across the brow.</span></li>
<li><span style="color: #cccccc;">The edge that flows from the nose to the mouth furrow line.</span></li>
<li><span style="color: #cccccc;">The clean circular edges around the mouth.</span></li>
<li><span style="color: #cccccc;">The extruded face between the brows for a nice brow furrow.</span></li>
</ul>
<div>
<span style="color: #cccccc;"><br /></span></div>
</div>
</div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span>
<br />
<br />
<br />
<span style="color: #cccccc;"><br /></span>
<span style="color: #cccccc;">While this is a great model, I will suggest the following edits to the face topology.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ZC3oaGXFw2pNTImOVogV2vd7Sqn_ECG4WLMaTd6An-q-IIcCNDtAmSq9WEAdmp7f0IZesEUxKCeuboh8KwfIsh6s4suc4L5mcx0U87rSdTwgJFibRQVgnlxMLFhKc-3Xh1ZbVg/s1600/RangerFaceEdits.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ZC3oaGXFw2pNTImOVogV2vd7Sqn_ECG4WLMaTd6An-q-IIcCNDtAmSq9WEAdmp7f0IZesEUxKCeuboh8KwfIsh6s4suc4L5mcx0U87rSdTwgJFibRQVgnlxMLFhKc-3Xh1ZbVg/s320/RangerFaceEdits.JPG" width="238" /></a></div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;"><br /></span></div>
<div>
<span style="color: #cccccc;">That's all I have time for tonight. In my next post I want to start designing the requirements for this rig so I can break the work into chunks. We will talk about how I determine those requirements, and my process for plotting out how to meet them. Thanks for stopping by and I hope to see you here next time.</span></div>
Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-36723230211189101392016-03-03T22:52:00.002-05:002016-03-04T12:56:45.455-05:00Surface Based Facial Rigging POCI pulled out this face rig proof of concept that illustrates the idea of controlling interpolation through the use of surfaces. All of the animation is driven by just 3 controls, with a set of minor controls that follow along with the majors so you can fine tune.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="282" mozallowfullscreen="" src="https://player.vimeo.com/video/157678739" webkitallowfullscreen="" width="500"></iframe>
<a href="https://vimeo.com/157678739">SurfaceFacePOC_01</a> from <a href="https://vimeo.com/griffinanimator">ryan griffin</a> on <a href="https://vimeo.com/">Vimeo</a>.Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-80434763400332477482016-03-01T16:24:00.003-05:002016-03-01T16:59:39.824-05:00Leg Rigging in Maya<span style="color: #cccccc;">I wrote up this little leg rigging tutorial with the Python code I captured while manually rigging. I thought this might be a handy resource for aspiring riggers. This is basically the process I use when figuring out some new rigging technique. Later on I will go back and refine the code to make it more concice and versatile.</span><br />
<span style="color: #cccccc;"><br /></span>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">IK Stretchy no Flip Leg Tutorial</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In this tutorial I will walk you through the creation of a robust ik leg setup. This is not the only way to build a leg, but I feel this setup introduces some pretty useful concepts that can be applied to your own rig. Lets get started.</span></div>
<span style="color: #cccccc;"><b id="docs-internal-guid-d5b528b7-340f-d26f-7b6c-7b23316b6311" style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step1: Create the joints</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">First we need to draw our joint chain. In my example I have named the joints ( jnt_pelvis, ikj_hip, ikj_knee, ikj_ankle, ikj_ball, and ikj_toe). Once the joints are created, you should orient them using Skeleton/Orient Joint. I chose to use X down the bone and Y up. This orientation will be important later on, so just make a mental note if you decide to use a different orientation.</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step2: Drawing the IK:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Draw an ikRP solver from ikj_hip to ikj_ankle.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Draw an ikSC solver from ikj_ankle to ikj_ball.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Draw an ikSC solver from ikj_ball to ikj_toe.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Here is an example of how we could do this with Python.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.ikHandle(n= "ikh_leg", sj= "ikj_hip", ee= "ikj_ankle", sol = "ikRPsolver")</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.ikHandle(n= "ikh_ball", sj= "ikj_ankle", ee= "ikj_ball", sol = "ikSCsolver")</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.ikHandle(n= "ikh_toe", sj= "ikj_ball", ee= "ikj_toe", sol = "ikSCsolver")</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step3: Grouping the IK:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We need to create groups to use for rotating the toe, foot roll, and so on. The setup I am presenting is a bit different than most tutorials I have seen, and we need to create some extra groups to accommodate that fact.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create the following groups. I will write this in Python format.</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">footGroups = ("grp_footPivot", "grp_heel", "grp_toe", "grp_ball", "grp_flap")</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">for item in footGroups:</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.group(n=item, empty=True, world=True)</span></div>
<b style="font-weight: normal;"><span style="color: #cccccc;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">grp_footPivot should be left at the origin.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">grp_heel should be moved to the heel of the foot geometry.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">grp_toe should be moved to ikj_toe.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">grp_ball should be moved to ikj_ball.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">grp_flap should be moved to ikj_ball</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You can move these by first getting the position of the joints using cmds.xform</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You can then place the groups with xform again.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">hipPos = cmds.xform("ikj_hip", q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">anklePos = cmds.xform("ikj_ankle", q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ballPos = cmds.xform("ikj_ball", q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">toePos = cmds.xform("ikj_toe", q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform("grp_toe", ws=True, t=toePos)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform("grp_ball", ws=True, t=ballPos)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform("grp_flap", ws=True, t=ballPos)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The heel is tricky. We need an object to set the position</span></div>
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="395"></col><col width="229"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><span style="color: #cccccc;"><br /></span>
<span style="color: #cccccc;"><br /></span>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we need to put our groups and ik handles into a hierarchy. </span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #cccccc;"><span style="background-color: transparent; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="195" src="https://lh4.googleusercontent.com/MlWrkKVTLx-kN-_MyNTTbwvarmFmXn4g6Bl3UHqCkx4AA6de60ZvZ_hhhqs4hqu23XyNDJKVpdn16JElAUVk42Wkz8gWK-QngFp0QgbXEfSd8b5twDCWg2eWhzESoyiS" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="207" /></span><span style="background-color: transparent; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">*</span></span></div>
</td></tr>
</tbody></table>
</div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('grp_heel', 'grp_footPivot')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('grp_toe', 'grp_heel')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('grp_ball', 'grp_toe')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('grp_flap', 'grp_toe')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('ikh_leg', 'grp_ball')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('ikh_ball', 'grp_ball')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('ikh_toe', 'grp_flap')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent(‘grp_footPivot’, ‘ctrl_leg’)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step 4: Foot Control</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a control object to control your foot. Snap the controls pivot to your ikj_ankle and be sure to freeze transforms. I named my foot control “ctrl_leg”. Now you can parent the “grp_footPivot” to “ctrl_leg”</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step 5: No Flip Knee</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a locator. Name it “lctrPv_leg”, and snap it to the position of “jnt_pelvis”. Parent the locator under “jnt_pelvis”. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.spaceLocator(n='lctrPv_leg')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">pelvisPos = cmds.xform('jnt_pelvis', q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform('lctrPv_leg', ws=True, t=pelvisPos)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Select the locator, then the “ikh_leg”, and execute Constrain > Pole Vector.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.poleVectorConstraint ('lctrPv_leg', 'ikh_leg', weight=1)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a float attribute called "Twist" on the ikFootCtrl controller. Select the ctrl_leg and execute this command.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Twist', longName='Twist', defaultValue=0, k=True)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a plusMinusAverage utility, and call it pmaNode_LegTwist.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a multiplyDivide utility and call it mdNode_LegTwist.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("plusMinusAverage", asUtility=True, n='pmaNode_LegTwist')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("multiplyDivide", asUtility=True, n='mdNode_LegTwist')</span></div>
<b style="font-weight: normal;"><span style="color: #cccccc;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Set up the connections using the following commands :</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Twist', 'mdNode_LegTwist.input1X')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.ry', 'mdNode_LegTwist.input1Y')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('jnt_pelvis.ry', 'mdNode_LegTwist.input1Z')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_LegTwist.input2X', -1)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_LegTwist.input2Y', -1)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_LegTwist.input2Z', -1)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_LegTwist.input1X', 'pmaNode_LegTwist.input1D[0]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_LegTwist.input1Y', 'pmaNode_LegTwist.input1D[1]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('pmaNode_LegTwist.output1D', 'ikh_leg.twist')</span></div>
<b style="font-weight: normal;"><span style="color: #cccccc;"><br /></span></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step 6: Create the Stretchy IK</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Start by creating all of the nodes we will need for the stretch.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("addDoubleLinear", asUtility=True, n='adlNode_LegStretch')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("clamp", asUtility=True, n='clampNode_LegStretch')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("multiplyDivide", asUtility=True, n='mdNode_LegStretch')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("multiplyDivide", asUtility=True, n='mdNode_KneeStretch')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("multiplyDivide", asUtility=True, n='mdNode_AnkleStretch')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Add a “Stretch” attribute to ctrl_leg.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.select(‘ctrl_leg’)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Stretch', longName='Stretch', defaultValue=0, k=True)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a distance tool to measure the distance between our hip and ankle joints.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Use Create/Measure Tools/Distance Tool.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Snap one locator to ikj_hip and name it ‘lctrDis_hip’. Parent this locator to ‘jnt_pelvis’</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Snap the other locator to ikj_ankle and name it ‘lctrDis_ankle’. Parent this locator to grp_heel’</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">hipPos = cmds.xform('ikj_hip', q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">anklePos = cmds.xform('ikj_ankle', q=True, ws=True, t=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">disDim = cmds.distanceDimension(sp=(hipPos), ep=(anklePos))</span></div>
<span style="color: #a2c4c9;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.rename('distanceDimension1', 'disDimNode_legStretch')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.rename('locator1', 'lctrDis_hip')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.rename('locator2', 'lctrDis_ankle')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('lctrDis_hip', 'jnt_pelvis')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('lctrDis_ankle', 'grp_ball')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Next we will need to figure out the length of the leg when it is fully extended. We could do this by moving the leg control until the leg is straight, and querying the distance tools distance attribute, but this is inaccurate and can not be scripted. Instead we will use python to get the translateX values of our joints. We will then add those values.</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">kneeLen = cmds.getAttr('ikj_knee.tx')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">print kneeLen</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ankleLen = cmds.getAttr('ikj_ankle.tx')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">print ankleLen</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">legLen = (kneeLen + ankleLen)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">print legLen</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Enter our new found length values into the corresponding Nodes.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('adlNode_LegStretch.input2', legLen)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_LegStretch.input2X', legLen)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_KneeStretch.input2X', kneeLen)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('mdNode_AnkleStretch.input2X', ankleLen)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #cccccc;"><span style="background-color: transparent; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Connect the nodes to get the final stretch value that will be applied to our joints.</span><span style="background-color: transparent; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="239" src="https://lh3.googleusercontent.com/kG_tCYHZJPwQRTXTbKNjinCTExiktnbns2pBx9HJncfwZzr3qWtFYkDnbxpJKKfTt5-o9MQee_28dJUeVbsapYWoR7_J4Y_ShAWteonQK2yfTRLN1lHi6pWJrnMzca4a" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="800" /></span></span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The clamp node lets us control the amount of stretch.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Stretch', 'adlNode_LegStretch.input1')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("clampNode_LegStretch.minR", 12.800084)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("mdNode_LegStretch.operation", 2)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Connect the distance dimension so we always know the current length of the leg.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('disDimNode_legStretch.distance', 'clampNode_LegStretch.inputR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr( 'adlNode_LegStretch.output', 'clampNode_LegStretch.maxR')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we feed the total value into a multiply divide so we can distribute the value to our joints.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('clampNode_LegStretch.outputR', 'mdNode_LegStretch.input1X')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_LegStretch.outputX', 'mdNode_KneeStretch.input1X')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_LegStretch.outputX', 'mdNode_AnkleStretch.input1X')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Finally, we output our new values into the translateX of the knee and ankle joints.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_KneeStretch.outputX', 'ikj_knee.tx')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('mdNode_AnkleStretch.outputX', 'ikj_ankle.tx')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step 7: Create the Foot Roll</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">By now you are hopefully familiar with what the lines of code are doing. For this next part I will not offer too much in depth explanation. We will create a foot roll attribute that goes all the way from the ball to the toe roll. We will do this using only nodes. It may be easier to accomplish this with set driven keys, but I prefer not to use SDKs when possible.</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create Attributes on the ctrl_foot</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.select('ctrl_leg')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Roll_Break', longName='Roll_Break', defaultValue=0, k=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Foot_Roll', longName='Foot_Roll', defaultValue=0, k=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Setup the foot roll</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create utility nodes</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("condition", asUtility=True, n='conNode_ballRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("condition", asUtility=True, n='conNode_negBallRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("condition", asUtility=True, n='conNode_toeRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("plusMinusAverage", asUtility=True, n='pmaNode_ballRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("plusMinusAverage", asUtility=True, n='pmaNode_toeRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.shadingNode("condition", asUtility=True, n='conNode_heelRoll')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('pmaNode_toeRoll.operation', 2)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_toeRoll.operation", 2)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_toeRoll.colorIfFalseR", 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_toeRoll.colorIfFalseG", 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_toeRoll.colorIfFalseB", 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ('conNode_heelRoll.operation', 4)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('conNode_heelRoll.colorIfFalseB', 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('conNode_heelRoll.colorIfFalseR', 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr('conNode_heelRoll.colorIfFalseG', 0)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr("pmaNode_ballRoll.operation", 2)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_negBallRoll.operation", 3)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.setAttr ("conNode_ballRoll.operation", 3)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Setup Toe</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_toeRoll.firstTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_toeRoll.colorIfTrueR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Roll_Break', 'conNode_toeRoll.secondTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Roll_Break', 'conNode_toeRoll.colorIfFalseR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Roll_Break', 'pmaNode_toeRoll.input1D[1]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('conNode_toeRoll.outColorR', 'pmaNode_toeRoll.input1D[0]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('pmaNode_toeRoll.output1D', 'grp_toe.rx')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Setup Heel</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_heelRoll.firstTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_heelRoll.colorIfTrueR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('conNode_heelRoll.outColorR', 'grp_heel.rotateX')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Setup Ball</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_ballRoll.firstTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Roll', 'conNode_ballRoll.colorIfTrueR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Roll_Break', 'conNode_negBallRoll.secondTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Roll_Break', 'conNode_negBallRoll.colorIfTrueR')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('conNode_negBallRoll.outColorR', 'pmaNode_ballRoll.input1D[0]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('grp_toe.rx', 'pmaNode_ballRoll.input1D[1]')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('pmaNode_ballRoll.output1D', 'grp_ball.rx')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('conNode_ballRoll.outColorR', 'conNode_negBallRoll.firstTerm')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('conNode_ballRoll.outColorR', 'conNode_negBallRoll.colorIfFalseR')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Make a Toe Flap</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We will need to make a new attribute called Toe_Flap on ctrl_foot. Then we can connect Toe_Flap to grp_flap rotateX.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.select('ctrl_leg')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Toe_Flap', longName='Toe_Flap', defaultValue=0, k=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Toe_Flap', 'grp_flap.rx')</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Step 8: Pivot for Bank and Twist</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a new control object. I am using something that looks like a pin. Name the control ‘ctrl_footPivot’</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Move the control to the grp_ball.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ballPos = cmds.xform('grp_ball', q=True, t=True, ws=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform('ctrl_footPivot', t=ballPos)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Deselect the ctrl_footPivot, and create an empty group at the origin. Name the group ‘grp_ctrl_footPivot’.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.group(n='grp_ctrl_footPivot', empty=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Parent the grp_ctrl_footPivot to ctrl_footPivot.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('grp_ctrl_footPivot', 'ctrl_footPivot')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Parent the ctrl_footPivot to ctrl_foot and freeze transforms on ctrl_footPivot.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.parent('ctrl_footPivot', ‘ctrl_foot’)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.makeIdentity( apply=True )</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we will connect the grp_ctrl_footPivot.translate to grp_footPivot.rotatePivot</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('grp_ctrl_footPivot.translate', 'grp_footPivot.rotatePivot')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Move grp_ctrl_footPivot to the position of grp_ball.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.xform('grp_ctrl_footPivot', t=ballPos)</span></div>
<span style="color: #cccccc;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Make a couple more attributes for twist and bank, then hook those up to the grp_footPivot.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.select('ctrl_leg')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Foot_Pivot', longName='Foot_Pivot', defaultValue=0, k=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.addAttr( shortName='Foot_Bank', longName='Foot_Bank', defaultValue=0, k=True)</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Pivot', 'grp_footPivot.ry')</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #a2c4c9; font-family: "arial"; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cmds.connectAttr('ctrl_leg.Foot_Bank', 'grp_footPivot.rz')</span></div>
<b style="font-weight: normal;"><span style="color: #cccccc;"><br /></span></b><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cccccc; font-family: "arial"; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Please email me with any questions or errors. I do not claim that this is the perfect leg rig. I designed this to try some new ideas and to incorporate some time tested methods.</span></div>
<span style="color: #cccccc; font-family: "arial"; font-size: 16px; vertical-align: baseline; white-space: pre-wrap;">-Ryan Griffin ryan@griffinanimation.com</span>Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-41454021225404517352016-02-17T20:32:00.002-05:002016-02-29T12:27:40.032-05:00Trying to get a handle on ZBrushThis is a WIP that I've been working on for ever. Generally I work on modeling so I can get a better idea of what makes for good topology and to get a better feel for the process so I can communicate better with the artists. Unfortunately as a rigger I'm a bit of a topology nut so I ended up working backwards from topo to sculpt. At this point I'm just trying to let topology go for the moment so I can focus on form.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn-Z6a6jfC4mUaTrcpdyAIxjbAayRXscDYMWK5BmnMGXE6XBzyBGTXByDqLZ6SbgxL2A4puR3nRe_an2pvPxn99XaW1qRnmya4uMzqIUKhc7A1Y8010MlTdJ1jAQmZFxLrRod3-w/s1600/Boo.JPG" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn-Z6a6jfC4mUaTrcpdyAIxjbAayRXscDYMWK5BmnMGXE6XBzyBGTXByDqLZ6SbgxL2A4puR3nRe_an2pvPxn99XaW1qRnmya4uMzqIUKhc7A1Y8010MlTdJ1jAQmZFxLrRod3-w/s320/Boo.JPG" width="214" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKTFBAxFsTcU-V1Dvfu67TqUMPWz_u4MfiOkknW9D694hiRazmmriAz0KORecXMIyq6cBSAW5unoQQoOHD1d9HV53czEZld4csIvZwfnTmX_7s1FuhDRbsYpf0f_-7YcPCLaWaHw/s1600/BooMaya.JPG" imageanchor="1"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKTFBAxFsTcU-V1Dvfu67TqUMPWz_u4MfiOkknW9D694hiRazmmriAz0KORecXMIyq6cBSAW5unoQQoOHD1d9HV53czEZld4csIvZwfnTmX_7s1FuhDRbsYpf0f_-7YcPCLaWaHw/s320/BooMaya.JPG" width="230" /></a>Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-56837840002150315592015-06-04T15:18:00.002-04:002016-02-06T21:21:42.535-05:00Skylanders Superchargers
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/ZP5RiVJT9Ik/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/ZP5RiVJT9Ik?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Check it out <a href="http://www.skylanders.com/?utm_campaign=skylanders-superchargers-reveal&utm_medium=search&utm_source=google&utm_keyword=skylanders-Superchargers-exact" target="_blank">here</a>.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="background-color: white; color: #404040; font-family: "roboto" , "arial" , sans-serif; font-size: 13px; line-height: 18.2000007629395px;"><br /></span>Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-44222403110921494152014-11-07T11:53:00.002-05:002014-11-07T11:53:36.660-05:00Maya Symmetry ConstraintYou may have noticed that joints in Maya can now include a symmetry constraint. I have been leaning heavily on this new feature in my latest rigging tool. I think the constraint is so cool that I want to use it for other types of transforms. Well guess what. It works! Here is a short example that shows the symmetry constraint applied to a couple of polyCubes.
<br />
<br />
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0alCyz4OlRBrBrG1hSHOUmqEl38axSixte8J4zHQsptg9TQfD0Zt3K34aOUJAyvUDj_ssQTfyNxz-beaRgIWeNIIoqK07kwVOktvWmjNgdM7Mkr8P8VE0qkiy2rgy718XpoWQxw/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> import maya.cmds as cmds
cmds.createNode('symmetryConstraint', n='symmetryConstraint2')
cmds.polyCube(n='pCube1')
cmds.polyCube(n='pCube2')
cmds.connectAttr('pCube1.translate', 'symmetryConstraint2.targetTranslate')
cmds.connectAttr('pCube1.rotate', 'symmetryConstraint2.targetRotate')
cmds.connectAttr('pCube1.scale', 'symmetryConstraint2.targetScale')
cmds.connectAttr('pCube1.parentMatrix[0]', 'symmetryConstraint2.targetParentMatrix')
cmds.connectAttr('pCube1.worldMatrix[0]', 'symmetryConstraint2.targetWorldMatrix')
cmds.connectAttr('pCube1.rotateOrder', 'symmetryConstraint2.targetRotateOrder')
cmds.connectAttr('symmetryConstraint2.constraintTranslate', 'pCube2.translate')
cmds.connectAttr('symmetryConstraint2.constraintRotate', 'pCube2.rotate')
cmds.connectAttr('symmetryConstraint2.constraintScale', 'pCube2.scale')
cmds.connectAttr('symmetryConstraint2.constraintRotateOrder', 'pCube2.rotateOrder')
cmds.connectAttr('pCube2.parentInverseMatrix[0]', 'symmetryConstraint2.constraintInverseParentWorldMatrix')
cmds.parent('symmetryConstraint2', 'pCube2')
cmds.select('pCube1')
</code></pre>
<br />Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0tag:blogger.com,1999:blog-17349436.post-83320916716118876142014-11-07T11:49:00.002-05:002014-11-07T11:49:43.622-05:00Of loss and new beginnings.So a few months ago I canceled my hosting account at GoDaddy and neglected to pull down a recent backup of the sites data. I am sure I have a somewhat recent copy somewhere that I will probably pull over as time allows. Much like the mandala, I may just let it go so I can have a fresh start.Anonymoushttp://www.blogger.com/profile/11473696678449311252noreply@blogger.com0