<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4026718897670748265</id><updated>2024-11-01T06:42:16.300-04:00</updated><category term="maya"/><category term="tips and tricks"/><category term="animation"/><category term="sketch"/><category term="video"/><category term="workflow"/><category term="drawing"/><category term="mel"/><category term="scripting"/><category term="digital painting"/><category term="reference"/><category term="math"/><category term="python"/><category term="render"/><category term="rigs"/><category term="color pencil"/><category term="message"/><category term="movies"/><category term="physics"/><category term="website"/><category term="blog"/><category term="books"/><category term="gamedev"/><category term="info"/><category term="welcome message"/><category term="zbrush"/><title type='text'>Animation for the Hardcore.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.animatedlew.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-2997310867684469166</id><published>2016-11-30T08:37:00.001-05:00</published><updated>2016-12-29T22:30:49.364-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blog"/><category scheme="http://www.blogger.com/atom/ns#" term="gamedev"/><category scheme="http://www.blogger.com/atom/ns#" term="info"/><title type='text'>Check out my new gamedev blog!</title><content type='html'>&lt;p dir=&quot;ltr&quot;&gt;Hop over to &lt;a href=&quot;http://lewismoronta.com/&quot;&gt;www.lewismoronta.com&lt;/a&gt; to check out game development articles and graphics programming in general.&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/2997310867684469166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2016/11/check-out-my-new-gamdev-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/2997310867684469166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/2997310867684469166'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2016/11/check-out-my-new-gamdev-blog.html' title='Check out my new gamedev blog!'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-8720723772957386521</id><published>2016-10-31T18:41:00.002-04:00</published><updated>2016-10-31T18:41:43.392-04:00</updated><title type='text'>Halloween Special: How to Draw Spooky Spiderwebs in JavaScript! </title><content type='html'>&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/M1UNc8yeGE0&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/8720723772957386521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2016/10/halloween-special-how-to-draw-spooky.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8720723772957386521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8720723772957386521'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2016/10/halloween-special-how-to-draw-spooky.html' title='Halloween Special: How to Draw Spooky Spiderwebs in JavaScript! '/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/M1UNc8yeGE0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-634718534751382307</id><published>2016-10-12T15:01:00.000-04:00</published><updated>2016-10-12T15:01:03.547-04:00</updated><title type='text'>I Got a New Microphone: Blue Yeti</title><content type='html'>...so naturally, here&#39;s an unboxing in stop-motion :)
&lt;br/&gt;
&lt;br/&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/NkV4G9RcfjQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/634718534751382307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2016/10/i-got-new-microphone-blue-yeti.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/634718534751382307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/634718534751382307'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2016/10/i-got-new-microphone-blue-yeti.html' title='I Got a New Microphone: Blue Yeti'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/NkV4G9RcfjQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-6368353096186953567</id><published>2013-03-16T22:51:00.001-04:00</published><updated>2016-10-12T14:54:05.727-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="rigs"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>CGS Head Rig Animation</title><content type='html'>Hey everyone! I want to share my latest animation. I rigged the head over several weeks and animated it in the past few days. I haven&#39;t worked on any corrective blends yet so I&#39;m still open to critiques. The animation is meant to push the limits of the rig. Thanks for watching!&lt;br /&gt;&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/G5MJ0NHvMgQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/6368353096186953567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/03/cgs-head-rig-animation.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/6368353096186953567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/6368353096186953567'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/03/cgs-head-rig-animation.html' title='CGS Head Rig Animation'/><author><name>Animated Lew</name><uri>http://www.blogger.com/profile/06307508586416998847</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp83s2alne-jQI5D30xVp2PKVHnvA5I-nrsfJ4Lg6m1X6AkFpP1zqq08l7KapBQZBgJXPkyGH1fwloO1JJy0PgxSTR3yEg2qh7YkVfYjBPb3Ndjg0Cx6o4vjP9cKJewi8/s220/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/G5MJ0NHvMgQ/default.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-6468105861953079621</id><published>2013-03-13T03:35:00.001-04:00</published><updated>2013-03-17T03:13:07.547-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="reference"/><category scheme="http://www.blogger.com/atom/ns#" term="rigs"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>Angle Based Deformers</title><content type='html'>What I am about to talk about is closely related to Pose Space Deformers--I’m sure you can find the original SIGGRAPH PSD papers online. However, the setup I present below is a simple network that allows you to trigger actions and/or blends based on the angle between two vectors. Vectors save the day once again…&lt;br /&gt;
&lt;br /&gt;
Why ditch Euler angles when we already have angle positions?? Because of the nature of Eulers, the X, Y, and Z components are calculated in a specific way that won’t work in many situations. One of the main reasons for this is &lt;a href=&quot;http://en.wikipedia.org/wiki/Gimbal_lock&quot; target=&quot;_blank&quot;&gt;Gimbal Lock&lt;/a&gt;. This one reason can make things a living nightmare for us.&lt;br /&gt;
Using the dot product, we can find the angle between two vectors, A and B, by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #4bacc6;&quot;&gt;&lt;i&gt;Θ&lt;/i&gt; = acos(A · B)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This means that if we were to attach a locator to a pair of adjacent joints, where both locator’s origin is positioned where the joints connect, you can find the arc cosine of the dot product of both of these vectors, and return the angle between them. I know… it sounds wordier than it really is.&lt;br /&gt;
&lt;br /&gt;
Here’s how I set this up in Maya:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivh19xDRRORSGYaHaNYujLpIHeYa_cYQA0-kXA7CaFIWOiFhXjQHbXV_X0WvXOX0iKhTcQZ7l26Nh5SbuKTUY9Mi0B_TgXqOOun85pjkQAisC04qf3WkH2jYxs4lvIFHp99zo7fDTFCQt6/s1600-h/psdNetwork_v01%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;psdNetwork_v01&quot; border=&quot;0&quot; height=&quot;349&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaE26uvZmH-MzLs-_ywJoVC6P4uFe0cy6TfyfGulZjI-3JDdFgUr8TVqyWhFvnhXmhAwkHgHi5zuKfMVXLS2fC1K48Dp0gAKXrO2RL59hM54yJ4HjSWfp3LdOppF7joWFyTe_GnsmIIyxr/?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;psdNetwork_v01&quot; width=&quot;481&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To be able to see the results of my network, I attached the output of setRange to a blendshape channel. I then animated the joint driving the location of a locator to get a change in the angle between locator1 and locator2. Maya’s angleBetween node returns 0-180, so I scaled that value down to 0 to 1 using the setRange node.&lt;br /&gt;
&lt;br /&gt;
We could have just as easily used an expression to put this example together. However, I prefer to stay away from expressions for anything that I can build using nodes. Native nodes evaluate faster and you can’t break their dependencies by duplicating the network or changing their names!&lt;br /&gt;
&lt;br /&gt;
I hope you can find many uses for this angle based setup. Let me know what you come up with!&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/6468105861953079621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/03/angle-based-deformers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/6468105861953079621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/6468105861953079621'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/03/angle-based-deformers.html' title='Angle Based Deformers'/><author><name>Animated Lew</name><uri>http://www.blogger.com/profile/06307508586416998847</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp83s2alne-jQI5D30xVp2PKVHnvA5I-nrsfJ4Lg6m1X6AkFpP1zqq08l7KapBQZBgJXPkyGH1fwloO1JJy0PgxSTR3yEg2qh7YkVfYjBPb3Ndjg0Cx6o4vjP9cKJewi8/s220/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaE26uvZmH-MzLs-_ywJoVC6P4uFe0cy6TfyfGulZjI-3JDdFgUr8TVqyWhFvnhXmhAwkHgHi5zuKfMVXLS2fC1K48Dp0gAKXrO2RL59hM54yJ4HjSWfp3LdOppF7joWFyTe_GnsmIIyxr/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-337563932406743664</id><published>2013-02-09T21:48:00.001-05:00</published><updated>2013-02-09T21:52:56.523-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="reference"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><title type='text'>NURBS Curves: How to use Knot Vectors</title><content type='html'>When working in Maya, we create curves freely without crunching numbers. We use them in Maya Hair, Spline IK rigs, Motion/Flow paths, as control curves for characters rigs, create them procedurally for modeling, amongst other uses. My goal in this post is for you to better understand how to generate curves using knot vectors.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
Linear curves are simply lines that follow the standard &lt;a href=&quot;http://en.wikipedia.org/wiki/Y_%3D_mx_%2B_b&quot; target=&quot;_blank&quot;&gt;y = mx + b&lt;/a&gt; formula. In Maya, they are created as a curve of 1 degree. That means that the highest power in the equation is 1. In theory, this curve type has 2 knots. The relation between knots to CV is: &lt;b&gt;#knots = (#CVs+deg -1)&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;string $curve = `curve -d 1 -p -2 0 0 -p 2 0 -2`;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Simply pass in your two points, and tell Maya that you’re drawing a linear curve. Let’s attach a &lt;b&gt;curveInfo&lt;/b&gt; node to this curve and poke around a little bit.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: #4bacc6;&quot;&gt;string $cInfo = `arclen -ch 1 $curve`;&lt;br /&gt;getAttr($cInfo+&quot;.knots[*]&quot;);&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #a5a5a5; font-family: Courier New;&quot;&gt;&lt;br /&gt;// Result: 0 1 //&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #a5a5a5; font-family: Courier New;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;
It seems that there are two knots on this curve that are weighted to each CV on the curve. Using &lt;b&gt;#knots = (#CVs+deg -1), we know that we have 2 CVs on a curve of 1 degree, minus 1: that’s 2 knots.&lt;/b&gt; So we know that checks out.&lt;br /&gt;
&lt;br /&gt;
Before we investigate further, let’s try the same thing with a quadratic curve. Behind the scenes, Maya will draw the smooth curve using an equation where the highest degree order is 2. Since we all miss our high school math classes, let’s draw a &lt;a href=&quot;http://en.wikipedia.org/wiki/Parabola&quot; target=&quot;_blank&quot;&gt;parabola&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: #4bacc6;&quot;&gt;$curve = `curve -d 2 -p -1 0 -2 -p -1 0 0 -p 1 0 0 -p 1 0 -2`;&lt;br /&gt;$cInfo = `arclen -ch 1 $curve`;&lt;br /&gt;getAttr($cInfo+&quot;.knots[*]&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #a5a5a5;&quot;&gt;// Result: 0 0 1 2 2 //&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;color: #a5a5a5;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;
&lt;b&gt;We have a curve of 2 degrees, we plotted 4 points, minus 1: that’s a total of 5 knots. &lt;/b&gt;The collection of knots on a curve is referred to its &lt;b&gt;Knot Vector.&lt;/b&gt; However, what do these knot magnitudes mean? Each element in the vector determines where in parameter space the curve will be drawn. I know that’s a very vague statement but please stay with me!&lt;br /&gt;
&lt;br /&gt;
Think of the first and last points on a curve as an anchor. This is the most common type of knot vector: &lt;b&gt;Pinned Uniform Knot Vectors&lt;/b&gt;. Each anchor needs to be held down by the same number of knots as the curve’s degree. In our first example, we had a curve of 1 degree being pinned down by one knot on each end point. In our second example, we had a curve being held down by 2 knots on each end point.&lt;br /&gt;
&lt;br /&gt;
So then what does the 1 mean in the [0 0 1 2 2] result? It turns out that these numbers are arbitrary. The number values don’t matter in a Knot Vector. Say what? Yes, that’s right. &lt;b&gt;What matters is the ratios of the values to each other.&lt;/b&gt; The main rule is that Maya requires each knot’s magnitude to be in &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2012/en_us/Commands/curve.html&quot; target=&quot;_blank&quot;&gt;ascending&lt;/a&gt; order. So what happens if we create a curve but mess with that middle knot? What results will we get? Let’s try it!  &lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;curve -d 2 -p -1 0 -2 -p -1 0 0 -p 1 0 0 -p 1 0 –2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -k 0 -k 0 -k 0 -k 2 -k 2;&lt;/span&gt;&lt;/blockquote&gt;
By specifying the knot values to the curve command, it seems we have created a curve with non-uniform weighting. We modified the middle knot in a way that we made the curve appear &lt;a href=&quot;http://en.wikipedia.org/wiki/Discontinuity_%28mathematics%29&quot; target=&quot;_blank&quot;&gt;discontinuous&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Just for fun, we can weight the center knot to the other end to get a mirrored result.  &lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;curve -d 2 -p -1 0 -2 -p -1 0 0 -p 1 0 0 -p 1 0 –2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;-k 0 -k 0 -k 2 -k 2 -k 2;&lt;/span&gt;&lt;/blockquote&gt;
Go ahead and release the pins on this 2nd degree curve. Notice that you can easily un-anchor the curve from their start and end points by simply supplying different weights. This also makes your curve a lot shorter. This is something you need to try for yourself because it’s one of those things that are too abstract in words.&lt;br /&gt;
&lt;br /&gt;
Uniformly distributing our knots makes our NURBS curve simply a &lt;a href=&quot;http://mathworld.wolfram.com/B-Spline.html&quot; target=&quot;_blank&quot;&gt;B-Spline&lt;/a&gt;. Having the ability to specify and interactively adjust the knots is a feature of NURBS, or &lt;a href=&quot;http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline&quot; target=&quot;_blank&quot;&gt;Non-Uniform Rational B-Splines&lt;/a&gt;. Allowing a partial knot weight is a nice feature:  &lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;curve -d 2 -p -1 0 -2 -p -1 0 0 -p 1 0 0 -p 1 0 –2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -k 0 -k 0 -k 1.5 -k 2 -k 2;&lt;br /&gt;curve -d 2 -p -1 0 -2 -p -1 0 0 -p 1 0 0 -p 1 0 –2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -k 0 -k 0 -k 0.5 -k 2 -k 2;&lt;/span&gt;&lt;/blockquote&gt;
Finally, to nail the point, let’s try drawing an pinned cubic curve with a degree of 3.  &lt;br /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New;&quot;&gt;curve -d 3 -p -1 0 -3 -p -2 0 -2 -p 0 0 0 -p 2 0 -2 -p 1 0 –3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -k 0 -k 0 -k 0 -k 1 -k 2 -k 2 -k 2;&lt;/span&gt;&lt;/blockquote&gt;
Notice that I used 3 pinned knots to hold down the end points. The middle knot is exactly half way between 0 and 2. This makes the curve uniformly weighted. If you have questions, please let me know in the comment section! I’m sure there are things I can clarify. I want to be sure the information comes through clearly.  &lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;span style=&quot;color: #a5a5a5; font-size: xx-small;&quot;&gt;Notes:&lt;br /&gt;- Maya seems to ignore knot magnitudes on linear curves.&lt;br /&gt;- When creating curves with the &lt;span style=&quot;font-family: Courier New;&quot;&gt;-pointWeight&lt;/span&gt; flag, accurate knot values are not returned.&lt;br /&gt;- When editing curves created with the &lt;span style=&quot;font-family: Courier New;&quot;&gt;-pointWeight&lt;/span&gt; flag in the viewport, the curves seem to snap to a weighted value of 1 to each CV.&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/337563932406743664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/02/nurbs-curves-how-to-use-knot-vectors.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/337563932406743664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/337563932406743664'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/02/nurbs-curves-how-to-use-knot-vectors.html' title='NURBS Curves: How to use Knot Vectors'/><author><name>Animated Lew</name><uri>http://www.blogger.com/profile/06307508586416998847</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp83s2alne-jQI5D30xVp2PKVHnvA5I-nrsfJ4Lg6m1X6AkFpP1zqq08l7KapBQZBgJXPkyGH1fwloO1JJy0PgxSTR3yEg2qh7YkVfYjBPb3Ndjg0Cx6o4vjP9cKJewi8/s220/avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-7280230211485983967</id><published>2013-02-06T23:31:00.001-05:00</published><updated>2013-02-09T21:54:26.071-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="physics"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="reference"/><category scheme="http://www.blogger.com/atom/ns#" term="rigs"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>A List of My Favorite Books</title><content type='html'>Several people have asked me about what resources I use to learn my favorite topics. There are informative videos and written tutorials scattered all over the web, and only but a few are concise, efficient, and well prepared. This is why I rely mostly on books that are written by seasoned professionals that know a thing or two about teaching. Here is a list of the books I am in love with:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;MEL Scripting for Maya Animators&lt;/li&gt;
&lt;li&gt;Mastering Autodesk Maya&lt;/li&gt;
&lt;li&gt;Stop Staring: Facial Modeling and Animation Done Right&lt;/li&gt;
&lt;li&gt;Maya Python for Games and Film&lt;/li&gt;
&lt;li&gt;Complete Maya Programming I &amp;amp; II&lt;/li&gt;
&lt;li&gt;Art of Rigging I &amp;amp; II&lt;/li&gt;
&lt;li&gt;Professional MEL Solutions for Production&lt;/li&gt;
&lt;li&gt;Maya Visual Effects: The Innovator&#39;s Guide&lt;/li&gt;
&lt;li&gt;3D Math Primer for Graphics and Game Development&lt;/li&gt;
&lt;li&gt;Game Development with ActionScript &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
These gems are not listed in any particular order but &lt;b&gt;MEL Scripting for Maya Animators&lt;/b&gt; was the first book I ever read on MEL, or Maya for that matter. I bought the very first edition of that text because I was looking for a source of inspiration when I was stuck at home writing &lt;b&gt;Game Development with ActionScript&lt;/b&gt;. They are both considered oldies as far as technology goes, so they might be tough to find.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/7280230211485983967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/02/a-list-of-my-favorite-books.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7280230211485983967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7280230211485983967'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/02/a-list-of-my-favorite-books.html' title='A List of My Favorite Books'/><author><name>Animated Lew</name><uri>http://www.blogger.com/profile/06307508586416998847</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp83s2alne-jQI5D30xVp2PKVHnvA5I-nrsfJ4Lg6m1X6AkFpP1zqq08l7KapBQZBgJXPkyGH1fwloO1JJy0PgxSTR3yEg2qh7YkVfYjBPb3Ndjg0Cx6o4vjP9cKJewi8/s220/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-4679785821511221201</id><published>2013-02-02T17:58:00.000-05:00</published><updated>2013-02-02T17:59:03.771-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="physics"/><category scheme="http://www.blogger.com/atom/ns#" term="reference"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><title type='text'>Understanding 3D Vectors</title><content type='html'>&lt;b&gt;DISCLAIMER:&lt;/b&gt; This post covers the &lt;a href=&quot;http://en.wikipedia.org/wiki/Euclidean_vector&quot; target=&quot;_blank&quot;&gt;vector&lt;/a&gt; type in Maya. If you are new to vectors, please acquaint yourself with them and review the help docs before reading this post. I tried to keep this post as light on math as possible, however, I will clarify where needed, based on your suggestions. This is a huge topic and this post merely summarizes how useful vectors are.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://download.autodesk.com/global/docs/maya2013/en_us/files/topichead_1.htm&quot;&gt;User Guide&lt;/a&gt; &amp;gt; &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2013/en_us/files/topichead_10.htm&quot;&gt;Scripting&lt;/a&gt; &amp;gt; &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2013/en_us/files/GUID-E151A15C-BA1D-4E60-8DB6-9D92C6202170.htm&quot;&gt;MEL and Expressions&lt;/a&gt; &amp;gt; &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2013/en_us/files/Useful_functions.htm&quot;&gt;Useful functions&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Let’s break one of our toys apart and learn how things work from the inside out. The knowledge we acquire from doing this allows us to build bigger and better toys. &lt;b&gt;In physics, a vector is described as an entity that has both a magnitude and a direction.&lt;/b&gt; In MEL, a vector is represented by x, y, and z components. These components can be combined back into their scientific form at any time. Vectors can represent a location in space, the velocity and/or acceleration of an object, tracing rays between two points, etc.&lt;br /&gt;
&lt;br /&gt;
Retrieving a vector’s magnitude is trivial in MEL:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #4bacc6; font-family: Courier New; font-size: small;&quot;&gt;vector $A = &amp;lt;&amp;lt; 1, 2, 3&amp;gt;&amp;gt;;&lt;br /&gt;vector $B = &amp;lt;&amp;lt; 3, 2, 1&amp;gt;&amp;gt;;&lt;br /&gt;int $length = mag($A);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Finding the direction vector can by done by using the &lt;b&gt;unit &lt;/b&gt;function.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/e/ec/Parallelogram_law.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/e/ec/Parallelogram_law.PNG&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
When you perform arithmetic with vectors, the output is considered the resultant. Addition yields a vector that is said to be a diagonal in a parallelogram.&lt;br /&gt;
&lt;br /&gt;
This is interesting to us because if you were to take the B and move a copy (by adding it to A) to the head of A, we build ourselves a triangle that can used to solve for solutions. If we then move a copy of A to the head of B, we end up with a parallelogram. When you subtract a vector from another, the resultant yields a &lt;b&gt;magnitude &lt;/b&gt;that is the &lt;b&gt;distance &lt;/b&gt;between the heads of A and B. If you take B-A (, which is not the same as A-B, ) and add it to A, we have ourselves another triangle. &lt;b&gt;Still with me? &lt;/b&gt;This is only possible because a vector can be equal (&amp;amp; parallel) to any other vector in space as long as they are equal in direction and magnitude. So if you need to reposition a vector, do so by adding it to another vector location. That was the heaviest paragraph in this post, I promise!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.grc.nasa.gov/WWW/k-12/airplane/Images/vectadd.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://www.grc.nasa.gov/WWW/k-12/airplane/Images/vectadd.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
By multiplying a vector by a scalar value, we are simply scaling the the vector’s magnitude by that number. There are other types of vector products that are extremely important in computer graphics, the dot product, which yields a scalar value, and the cross product (, which yields another vector perpendicular to the first two. Nuff talk, let’s get to work.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
In Maya, create 4 locators. Name them A, B, C, &amp;amp; D. In the script editor, retrieve their world space positions and store those values in vectors. Imagine each locator to be a ray, that originates at the origin, and each locator shape being the vector’s head. Spread the locators in space away from the origin and each other, arbitrarily and for variety.&lt;br /&gt;
&lt;br /&gt;
Make C perpendicular to the first two, by taking the cross product of A &amp;amp; B and move C to the resultant. Now that you know that C perpendicular to the first two, there’s a good chance there is one axis that is not perpendicular to another. You can verify this by taking the dot product of two vectors. If the dot product is not 0, then your vectors are not perpendicular.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: yellow;&quot;&gt;TIP: Make the result of AxC a unit vector, a vector with the length 1, by using the unit function on C. The &#39;x&#39; in this notation signifies we&#39;re taking the cross product of these two vectors. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Anyway, take the cross product of A &amp;amp; C, and feed the result to B. You now have 3 axis that are perfectly orthogonal to each other. Assuming that A was already at the “lookAt” location, let’s place D along A’s axis, but with a magnitude of 1. Vectors of this length are called unit vectors. The process of getting this result is call normalization.&lt;br /&gt;
&lt;br /&gt;
Normalize A and pipe the results right into D. You now have solved for the same things that the aim constraint solves for in most 3D software, including games. If you were to normalize all 3 orthogonal axes, you would have what is called an &lt;b&gt;Orthonormal Basis&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s a code snippet:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// 3D (Basis) Vectors&lt;br /&gt;// By Lewis M., 2013&lt;br /&gt;// Usage:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;Arbitrarily &lt;/span&gt;&lt;/span&gt;place four locators in the scene&lt;br /&gt;// Name them A, B, C, &amp;amp; D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Retrieve A &amp;amp; B&#39;s locations&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;float $a_coord[] = `xform -q -ws -t A`;&lt;br /&gt;float $b_coord[] = `xform -q -ws -t B`;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;br /&gt;// Find an orthogonal vector to both A &amp;amp; B&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;vector $a = &amp;lt;&amp;lt;$a_coord[0], $a_coord[1], $a_coord[2]&amp;gt;&amp;gt;;&lt;br /&gt;vector $b = &amp;lt;&amp;lt;$b_coord[0], $b_coord[1], $b_coord[2]&amp;gt;&amp;gt;;&lt;br /&gt;vector $c = cross($a, $b);&lt;br /&gt;vector $d;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Scale it down to the length of 1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;$c = unit($c);&lt;br /&gt;move -a ($c.x) ($c.y) ($c.z) C;&lt;br /&gt;print dot($a, $b);&lt;/span&gt; &lt;span style=&quot;color: #999999;&quot;&gt;// Most likely not zero&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Adjust B to be orthogonal to both A and C&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;$b = cross($a, $c);&lt;br /&gt;$b = unit($b);&lt;br /&gt;move -a ($b.x) ($b.y) ($b.z) B;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Finally, scale down A and place D in the position&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;$d = unit($a);&lt;br /&gt;move -a ($d.x) ($d.y) ($d.z) D;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Just for fun, draw some visually appealing curves&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: cyan;&quot;&gt;curve -d 1 -p 0 0 0 -p ($a.x) ($a.y) ($a.z) -k 0 -k 1 ;&lt;br /&gt;curve -d 1 -p 0 0 0 -p ($b.x) ($b.y) ($b.z) -k 0 -k 1 ;&lt;br /&gt;curve -d 1 -p 0 0 0 -p ($c.x) ($c.y) ($c.z) -k 0 -k 1 ;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//grid -tgl 0;&lt;br /&gt;//refresh; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As an exercise, you can use MEL, Python, or even utility nodes to create the connections.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5afffN4_gJIy7p4B5ak-u3e6EdmnaiCMpvYbqf1rVGo3SS4Kg_fgmddiJPXT3Hy1QXqmugTARt2zCL546H6P7xsX5GAiJfOKLEfQMX_I7QlIQaNXWc_l92C_Hj0Bh64ZGE_TN58JurQ15/s1600-h/utilNodes02012013%25255B3%25255D.png&quot;&gt;&lt;img alt=&quot;Utility Nodes&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8OkRrKfG_cJpCusEk_MBYOvqW4YbAE-kGnBc26rHP_zQVV3sPqcwMfXaXs4TJPD-meSNJtid9-I0vmKMmH67I8j9e4NqcfDe_sGatmi7Mb3IXhH8qX3-Ryg_h7HdR1B_2GM3Kw4a7pLhV/?imgmax=800&quot; style=&quot;background-image: none; border-color: -moz-use-text-color; border-style: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;Utility Nodes&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Above is a picture of my little aim constraint node setup.&amp;nbsp; It differs from my discussion above because this version is interactive. In this version, I am able to position A wherever I want and have the other locators automatically update. The NURBS curves you see there are strictly for visual appeal&amp;nbsp;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRhXAVLP3shLxoKD8AaAb7GffV0cdR7dyl30hdyH6BomRQh3txJRUjb62qVeGvxSIq1YfUCB-lQNzkNwslMp7tOh_3-5mJGBMnLDixt4OM6Wafl480-0hFsJp33QLbLphN5a7GKDimwvIR/?imgmax=800&quot; /&gt;&lt;span id=&quot;goog_689325672&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/4679785821511221201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/02/understanding-3d-vectors.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4679785821511221201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4679785821511221201'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/02/understanding-3d-vectors.html' title='Understanding 3D Vectors'/><author><name>Animated Lew</name><uri>http://www.blogger.com/profile/06307508586416998847</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp83s2alne-jQI5D30xVp2PKVHnvA5I-nrsfJ4Lg6m1X6AkFpP1zqq08l7KapBQZBgJXPkyGH1fwloO1JJy0PgxSTR3yEg2qh7YkVfYjBPb3Ndjg0Cx6o4vjP9cKJewi8/s220/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8OkRrKfG_cJpCusEk_MBYOvqW4YbAE-kGnBc26rHP_zQVV3sPqcwMfXaXs4TJPD-meSNJtid9-I0vmKMmH67I8j9e4NqcfDe_sGatmi7Mb3IXhH8qX3-Ryg_h7HdR1B_2GM3Kw4a7pLhV/s72-c?imgmax=800" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-3658300753820617256</id><published>2013-01-31T22:52:00.002-05:00</published><updated>2013-01-31T23:20:44.331-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="mel"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>Useful Regular Expressions</title><content type='html'>Regular Expressions, or RegEx, are very powerful string parsers that are usually built into most popular programming languages. Both MEL and Python have a version that can be used to speed up your every day scripting tasks.&lt;br /&gt;
&lt;br /&gt;
Just the other day, I rewrote my sav+.mel script in python; it versions up the current file with the click of a button... It&#39;s so convenient to use and made me think of sharing some of the tools that I used to write it.&lt;br /&gt;
&lt;br /&gt;
Anyway, in MEL, two commands you should know are &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2012/en_us/Commands/gmatch.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;gmatch &lt;/b&gt;&lt;/a&gt;and &lt;a href=&quot;http://download.autodesk.com/global/docs/maya2012/en_us/Commands/match.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;match&lt;/b&gt;&lt;/a&gt;. &lt;b&gt;gmatch &lt;/b&gt;lets you know if it found a match, by returning a boolean, and &lt;b&gt;match &lt;/b&gt;returns the string result. Let&#39;s say you wanted to extract information from a path:&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;string $path = &quot;C:/folder/image01.jpg&quot;;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// Note: Windows users might want to look&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// into using&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;a href=&quot;http://download.autodesk.com/global/docs/maya2012/en_us/Commands/substituteAllString.html&quot; target=&quot;_blank&quot;&gt;substituteAllString&lt;/a&gt;($str, &quot;/&quot;, &quot;\\&quot;)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// to replace those &#39;/&#39; with &#39;\&#39; or&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// vice versa, as needed&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There are a few important pieces of information that we can immediately extract using RegEx. To extract the file name with its extension, try:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// This says: Starting from the end of&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// the line ($), extract every character&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// that is not a &#39;/&#39; or &#39;\&#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// As soon as it finds an &#39;/&#39; or &#39;\&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// it stops the match and returns the&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// string it gathers thus far&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;string $fullName = `match &lt;span style=&quot;color: white;&quot;&gt;&quot;[^/\\]*$&quot;&lt;/span&gt; $path`;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To extract the file name, try:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// This expression matches everything from the&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// beginning of the line (^), except &#39;.&#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// After it encounters the &#39;.&#39;, it ceases to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// match and returns the string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// &lt;span style=&quot;font-size: small;&quot;&gt;Notice we are feeding it the result from&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;// the previous line above...&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;string $fileName = `match &lt;span style=&quot;color: white;&quot;&gt;&quot;^[^.]+&quot;&lt;/span&gt; $fullName`;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To get the extension by itself, execute this line:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// This says: From the end of the line,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// find anything up until the &#39;.&#39; or &lt;span style=&quot;font-size: small;&quot;&gt;&#39;\&#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// Note that if there isn&#39;t a file extension,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// the $result will match the original $path &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;b&gt;string $ext = `match &lt;span style=&quot;color: white;&quot;&gt;&quot;[^/\\.]*$&quot;&lt;/span&gt; $path`; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To extract any trailing version numbers at the end of the file name, try:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// This says: From the end of the line&lt;span style=&quot;font-size: small;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;//&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;extract some digits&lt;span style=&quot;font-size: small;&quot;&gt;. I&lt;/span&gt;t&#39;s a good idea&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;// to check if the file name even trails&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// with numbers before extraction by using&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// gmatch with the same expression&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;string $ver = `match &lt;span style=&quot;color: white;&quot;&gt;&quot;[0-9]+$&quot;&lt;/span&gt; $file`; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now that you have all this data extract&lt;span style=&quot;font-size: small;&quot;&gt;ed&lt;/span&gt;, store it as &lt;b&gt;useful information&lt;/b&gt; in an object. Unfortunately, MEL isn&#39;t an &lt;a href=&quot;http://en.wikipedia.org/wiki/Object-oriented_programming&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Object Oriented&lt;/b&gt;&lt;/a&gt; language so there is no straight forward way to create a class of objects that &lt;a href=&quot;http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;encapsulates &lt;/b&gt;&lt;/a&gt;attributes and behaviors. You have full support for these things when using C++ and Python. Here&#39;s how I would store the info in MEL:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: cyan;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// Now all the information is neatly packed in an array&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;string $fileInfo[] = { $path, $fullName, $fileName, $ext, $ver };&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;
&lt;div style=&quot;-qt-block-indent: 0; -qt-user-state: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: cyan;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;print $fileInfo;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
If you guys and gals would like to know how to extract other pieces of data from strings, let me know. I&#39;ll be happy to discuss similar topics as well. I&#39;ll write up another post. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/3658300753820617256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2013/01/useful-regular-expressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3658300753820617256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3658300753820617256'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2013/01/useful-regular-expressions.html' title='Useful Regular Expressions'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-2114438994425861929</id><published>2012-12-22T12:37:00.000-05:00</published><updated>2016-10-12T14:55:06.257-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="render"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Knockout</title><content type='html'>Here&#39;s something I worked on recently...&lt;br /&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/qDfx0Xt7oYY&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/2114438994425861929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2012/12/knockout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/2114438994425861929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/2114438994425861929'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2012/12/knockout.html' title='Knockout'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/qDfx0Xt7oYY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-3937190144929129937</id><published>2012-02-22T00:13:00.003-05:00</published><updated>2013-01-31T23:21:46.027-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="render"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>The Stray</title><content type='html'>Here&#39;s how a stray dog calls for back up. I spent all of last week animating this puppy. I hope you like it!&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;281&quot; mozallowfullscreen=&quot;&quot; src=&quot;http://player.vimeo.com/video/37217833?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; webkitallowfullscreen=&quot;&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/3937190144929129937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2012/02/stray.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3937190144929129937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3937190144929129937'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2012/02/stray.html' title='The Stray'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-237214207421802545</id><published>2012-02-19T10:16:00.000-05:00</published><updated>2013-01-31T23:21:52.912-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="render"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Missing Parts</title><content type='html'>Next time you sign up for something, read it through thoroughly. Or parts can go missing...&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;375&quot; mozallowfullscreen=&quot;&quot; src=&quot;http://player.vimeo.com/video/37044791&quot; webkitallowfullscreen=&quot;&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/237214207421802545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2012/02/missing-parts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/237214207421802545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/237214207421802545'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2012/02/missing-parts.html' title='Missing Parts'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-809210821810524929</id><published>2012-02-01T10:53:00.003-05:00</published><updated>2013-01-31T23:22:55.296-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="message"/><category scheme="http://www.blogger.com/atom/ns#" term="reference"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>Updating My Advice</title><content type='html'>I&#39;m sure the information on this blog is becoming outdated. Therefore, I&#39;ve decided to update old posts with newer and better information if it&#39;s available. Since I&#39;ve learned a few tricks since the last time I posted anything useful, I will also try to put together quick tutorials demonstrating the concepts. Anyway, that&#39;s all. See you next time!</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/809210821810524929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2012/02/updating-my-advice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/809210821810524929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/809210821810524929'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2012/02/updating-my-advice.html' title='Updating My Advice'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-7643586412357231839</id><published>2012-02-01T10:51:00.000-05:00</published><updated>2013-01-31T23:23:09.603-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="render"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Professional Advice</title><content type='html'>Happy New Year everyone! This blog has been mighty quiet lately since I&#39;ve been in my cave updating all my older shots. I spent the entire month of January updating and tweaking the crap out of &quot;Professional Advice.&quot;&lt;br /&gt;
&lt;br /&gt;
Here&#39;s a toon handing out unsolicited advice. Bad things happen with toons do things they are not supposed to do... like shaking neon chemicals before mixing them with other explosive elements!&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;369&quot; mozallowfullscreen=&quot;&quot; src=&quot;http://player.vimeo.com/video/36969772&quot; webkitallowfullscreen=&quot;&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/7643586412357231839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2012/02/professional-advice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7643586412357231839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7643586412357231839'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2012/02/professional-advice.html' title='Professional Advice'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-8497432159305033089</id><published>2010-10-19T01:11:00.003-04:00</published><updated>2010-10-19T01:19:12.603-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>Maya, What Do Those Weird Color Codes Mean?</title><content type='html'>I work with Maya every day and I really enjoy our relationship. I love learning things about her and I also love teaching others what I&#39;ve learned. I&#39;m all about shortcuts and efficiency. Maya can get cranky if you don&#39;t notice her communication signals within your pipeline so it&#39;s best that you learn her mannerisms. If you don&#39;t, she will crash your file. Trust me.&lt;br /&gt;
&lt;br /&gt;
I recently noticed that many people haven&#39;t noticed what the &lt;b&gt;channelBox &lt;/b&gt;color codes mean. If you haven&#39;t noticed these, I recommend you look closer. This knowledge can aid you if something goes wrong... and sometimes it does.&lt;br /&gt;
&lt;br /&gt;
When a channel is &lt;b&gt;orange&lt;/b&gt;, this means the attribute is connected to an animation curve . When the channel is &lt;b&gt;yellow&lt;/b&gt;, it means the value has an incoming connection or is shared with another object. Usually that object is a character set or the object has dynamic forces affecting it.&lt;br /&gt;
&lt;br /&gt;
When the object is &lt;b&gt;purple&lt;/b&gt;, this means that there is an expression driving its value. When the channels are &lt;b&gt;blue&lt;/b&gt;, this means it is driven by a constraint.&lt;br /&gt;
&lt;br /&gt;
If the channel is either &lt;b&gt;gray &lt;/b&gt;or &lt;b&gt;light gray&lt;/b&gt;, this means it cannot be animated and/or it is locked.&lt;br /&gt;
&lt;br /&gt;
You can mute a channel so it has no affect on the scene--when you do this, the channel is coded &lt;b&gt;brown&lt;/b&gt;. And finally, the channels can be coded &lt;b&gt;green&lt;/b&gt;, meaning that its value is blended with another attribute.&lt;br /&gt;
&lt;br /&gt;
Sometimes the way things are connected in the &lt;b&gt;Hypergraph &lt;/b&gt;can affect the way things behave and are computed. Noticing the wrong color on your channel can indicate early signs of trouble. I hope this brief note has been helpful.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/8497432159305033089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/10/what-do-those-weird-color-codes-mean.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8497432159305033089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8497432159305033089'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/10/what-do-those-weird-color-codes-mean.html' title='Maya, What Do Those Weird Color Codes Mean?'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-1048041073261343989</id><published>2010-08-10T16:37:00.003-04:00</published><updated>2010-08-10T16:44:25.864-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>Animation Notes: Part 1</title><content type='html'>There are several animation ideas that have sinked in lately. I&#39;ve been obsessed with producing polished animation and in my journey, I realized I didn&#39;t have an ordered checklist. Here is a list of things that have helped my workflow.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The &lt;b&gt;translation channels&lt;/b&gt; should transition smoothly unless you have fast motions.&lt;/li&gt;
&lt;li&gt;The &lt;b&gt;orientation channels&lt;/b&gt; will probably not be smooth if the controller has active curves on all &lt;b&gt;Euler channels&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Run the &lt;b&gt;Euler Filter&lt;/b&gt; constantly after adjusting poses.&lt;/li&gt;
&lt;li&gt;Always chart out your phrases and refer to them till the end. The chart will force you to check your timing, spacing, favoring, easing.&lt;/li&gt;
&lt;li&gt;Do not shift keys! Keep all your &quot;drawings&quot; on their own space and time.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Be sure to have your stronger poses hold for at least 2 frames.&lt;/b&gt; This will allow the pose to read long enough before transitioning to the next key. This is help reduce that floaty CG feel.&lt;/li&gt;
&lt;li&gt;Always work from the root out.&lt;/li&gt;
&lt;li&gt;Try to have your breakdowns favor a key, especially if your timing is even or centered.&lt;/li&gt;
&lt;li&gt;Be sure to add texture to a motion by making sure the slow-in&#39;s and out&#39;s are &lt;b&gt;asymmetrical&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Write down where your keys and breakdowns are and mark them if your software allows it. Maya allows you to mark breakdowns [they become green ticks] and will also scale them along by the bounding keys.&lt;/li&gt;
&lt;li&gt;Use buffer curves before making major changes to a curve.&lt;/li&gt;
&lt;li&gt;Do not over polish by removing too many keys on rotation channels. This will remove the texture and the life from your animations.&lt;/li&gt;
&lt;li&gt;Pole/Aim constraints can be useful when rigging rotating props. You can avoid&lt;b&gt; Gimbal Lock&lt;/b&gt; by translating the control curve instead of orientating the rotating prop itself.&lt;/li&gt;
&lt;li&gt;When rigging props, try isolating rotations to avoid &lt;b&gt;Gimbal Lock&lt;/b&gt;. For  instance, create a control curve for &lt;b&gt;RY &lt;/b&gt;and another separate control for &lt;b&gt; RX &lt;/b&gt;&amp;amp; &lt;b&gt;RZ&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;What kind of things do you think about when polishing your shot?</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/1048041073261343989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/08/animation-notes-part-1.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/1048041073261343989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/1048041073261343989'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/08/animation-notes-part-1.html' title='Animation Notes: Part 1'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-1428654356275661665</id><published>2010-03-28T22:07:00.004-04:00</published><updated>2010-03-29T13:30:41.520-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Blocking Keys Without Setting Keys Video</title><content type='html'>My last article, &lt;a href=&quot;http://animatedlew.blogspot.com/2010/03/blocking-keys-without-setting-keys.html&quot;&gt;Blocking Keys Without Setting Keys&lt;/a&gt;, was lengthy so I decided to supplement it with a video walk-through. I hope the video helps to make sense out of everything I previously wrote about.&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;300&quot; width=&quot;400&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10512695&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10512695&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href=&quot;http://vimeo.com/10512695&quot;&gt;Blocking Keys Without Setting Keys Video&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/animatedlew&quot;&gt;Lewis Moronta&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/1428654356275661665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/03/blocking-keys-without-setting-keys_28.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/1428654356275661665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/1428654356275661665'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/03/blocking-keys-without-setting-keys_28.html' title='Blocking Keys Without Setting Keys Video'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-264899544478589628</id><published>2010-03-26T01:34:00.005-04:00</published><updated>2010-03-26T02:03:14.544-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>Blocking Keys Without Setting Keys!</title><content type='html'>Ok, so the title to this article may be a little exaggerated, but hey, I&#39;m an animator and it is one of the principles of animation. I will also explain how the title is a white lie by the end of this article...&lt;br /&gt;
&lt;br /&gt;
An important phase in most character animations is the blocking phase. This is where you focus on your golden poses, then phase into your keyframes, breakdowns, and finally, block in your extremes. Assuming you have your planning sketches handy, you would normally start at the beginning of the scene, setting a keyframe on every control while treating every key as drawing. After setting several poses, your timeline can easily become cluttered with red ticks representing your keyframes. If you wanted to adjust the timing of your animation, you would normally select all your controls and scale the keys either on your timeline or the dope sheet.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Character Set&lt;/b&gt;&lt;br /&gt;
Aside from the usual workflow, Maya has built in  tools, that if used properly, can allow us to focus on the blocking  phase without having us worry much about what the computer is doing  down at the key level. It is possible to abstract all your rigs&#39; control  curves into a single &lt;b&gt;Character Set&lt;/b&gt; and capture &lt;b&gt;Poses &lt;/b&gt;on a  higher level.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBEbyp5gZPV95crNeJhDm62ahgFlslkKLr961uoqqsdsCQ1Pkz_Iae6SMPsvjt32JAIUMKBbMB6WmP_ogeddNHYfbEa_D6j3plJKtBqx85ybl7Sv_3KB9cBqM5RpPImsQSDN3a0ZJMBcOw/s1600-h/Capture00.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;294&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBEbyp5gZPV95crNeJhDm62ahgFlslkKLr961uoqqsdsCQ1Pkz_Iae6SMPsvjt32JAIUMKBbMB6WmP_ogeddNHYfbEa_D6j3plJKtBqx85ybl7Sv_3KB9cBqM5RpPImsQSDN3a0ZJMBcOw/s320/Capture00.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The first step is to grab all the control curves on your character rig and navigate to &lt;b&gt;Animation:Character:Create Character Set:Options&lt;/b&gt;. Name your set &lt;b&gt;Poser&lt;/b&gt;. Select &lt;b&gt;Poser &lt;/b&gt;as your current &lt;b&gt;Character Set&lt;/b&gt; to the left of the&lt;b&gt; Auto Keyframe Toggle&lt;/b&gt; button. Now that you have a &lt;b&gt;Character Set &lt;/b&gt;active, navigate to &lt;b&gt;Animation:Animate:Create Pose:Options&lt;/b&gt;. Name it &lt;b&gt;bindPose&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3oUDOlMWyrOS4hREc9AcQgAvkVFcgyvKQZt05CxwmYGd3PT2QDEUGiLQT8J349NxBya6RjKfVc0nGxeWwcjiMd3QwjUabrQbxhJAkzqY-btc4LsT2LZWs5IM238Rv9YC-WcF5pgpI9FvQ/s1600-h/Capture01.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3oUDOlMWyrOS4hREc9AcQgAvkVFcgyvKQZt05CxwmYGd3PT2QDEUGiLQT8J349NxBya6RjKfVc0nGxeWwcjiMd3QwjUabrQbxhJAkzqY-btc4LsT2LZWs5IM238Rv9YC-WcF5pgpI9FvQ/s320/Capture01.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;
The Visor&lt;/b&gt; &lt;br /&gt;
To see what just happened, open up the Visor by navigating to &lt;b&gt;Window:General Editors:Visor&lt;/b&gt; and finding the &lt;b&gt;Character Poses &lt;/b&gt;tab. From now on, when when pose your character, your poses will be stored here. If you would like to apply a pose or go back to the default pose you just created, &lt;b&gt;RMB &lt;/b&gt;the pose in the &lt;b&gt;Visor &lt;/b&gt;and select &lt;b&gt;Apply Pose&lt;/b&gt;. Try posing your toon and storing a few of more poses to play with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwdGGls_uyD9bej0K7cluNTmFcQL2jaksJHe6C3wVeSvR7neg5PPjT6cgYE5dIKX874iLk7bDMDxlWLRo8ebyZUHr68WCAXA-4gQjjxAtSrmXrttpOb5X7dLQaMbr72foOdG5Xz-uGexo0/s1600-h/Capture02.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwdGGls_uyD9bej0K7cluNTmFcQL2jaksJHe6C3wVeSvR7neg5PPjT6cgYE5dIKX874iLk7bDMDxlWLRo8ebyZUHr68WCAXA-4gQjjxAtSrmXrttpOb5X7dLQaMbr72foOdG5Xz-uGexo0/s400/Capture02.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;
The Trax Editor&lt;/b&gt;&lt;br /&gt;
As you lay out all your key poses, it would be helpful to see them played in time. They are the building blocks of your animations after all. This is where non-linear animation tools comes to the rescue. Allow me to introduce the &lt;b&gt;Trax Editor.&lt;/b&gt; This editor alone can fill several chapters in a book so I am only going to to skim the surface of what it can do. Basically, the &lt;b&gt;Trax Editor&lt;/b&gt; can play your poses in time, blend them together, which is synonymous with tweening, group blended pieces into &lt;b&gt;Animation Clips&lt;/b&gt;, allow you to layer, replace, cycle, mute, stretch, and time warp animations. That being said, let&#39;s jump right in.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha0wvKz8JGXr74cnMHHk-iYSAlyfTbH39i9xcIOJq9k3XajicqmxyQ7Ie0niP5Fp-L3GT7Cy-waLdDgl9VVhhZ7eOPFRc3K8PPaDbHiLDgL6ylwuCEh3nZ0btPBWRnfq5LnV87xBzxjRpx/s1600-h/Capture03.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha0wvKz8JGXr74cnMHHk-iYSAlyfTbH39i9xcIOJq9k3XajicqmxyQ7Ie0niP5Fp-L3GT7Cy-waLdDgl9VVhhZ7eOPFRc3K8PPaDbHiLDgL6ylwuCEh3nZ0btPBWRnfq5LnV87xBzxjRpx/s400/Capture03.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Open the &lt;b&gt;Trax Editor&lt;/b&gt; by navigating to &lt;b&gt;Window:Animation Editors:Trax Editor&lt;/b&gt;. Since your current &lt;b&gt;Character Set&lt;/b&gt; is selected, you will see a blue strip with the name of your set on it. Drag a pose from the &lt;b&gt;Visor&lt;/b&gt; onto here. If you zoom into the block that you just created, you will notice that it will have the name of the pose, and a few numbers. We can overlook the numbers for now--they simply tell you how many cycles of this animation will be played, what percentage it is scaled in time, and how long it is being held for. Basically, if you pull the top right corner using the &lt;b&gt;Shift&lt;/b&gt; key, you can extend your holds and if you pull the bottom right corner, you can cycle your animation. If you pull the bottom right corner without using the &lt;b&gt;Shift &lt;/b&gt;key, you will scale the animation in time.You can check the &lt;b&gt;Maya&lt;/b&gt; help files for more information.&lt;br /&gt;
&lt;br /&gt;
If you were to drag another pose from your &lt;b&gt;Visor &lt;/b&gt;onto the &lt;b&gt;Trax &lt;/b&gt;timeline, you&#39;ll be able to play your blocked animation. Adjusted the timing and holds for each pose is as easy as dragging them around. To blend the poses, &lt;b&gt;Shift+Select&lt;/b&gt; two of them on the track and click on the &lt;b&gt;Create Blend &lt;/b&gt;button. This will have &lt;b&gt;Maya &lt;/b&gt;tween the two poses for you. If you would like to adjust the anim curve in the &lt;b&gt;Graph Editor&lt;/b&gt;, select the Blend arrow and navigate to &lt;b&gt;View:Graph Anim Curves... &lt;/b&gt;and your &lt;b&gt;animBlendInOut &lt;/b&gt;node will appear in the &lt;b&gt;GE&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGUoA6owWgZmRDIy7P2tk-wXWJh63aREdHnkGYWa_bgSIKbjHEQpY_8N1jT2KMzupb_A5cie0GQXq4_1ed_igwCzSg9Ywc2jXrJDHdk-Vm6d9nfjDRrpYt5UsIzwOSDoqlNvPojvojkCY/s1600-h/Capture04.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGUoA6owWgZmRDIy7P2tk-wXWJh63aREdHnkGYWa_bgSIKbjHEQpY_8N1jT2KMzupb_A5cie0GQXq4_1ed_igwCzSg9Ywc2jXrJDHdk-Vm6d9nfjDRrpYt5UsIzwOSDoqlNvPojvojkCY/s400/Capture04.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
If you were to look at what is happening here behind the scenes in your &lt;b&gt;Hypergraph&lt;/b&gt;, you would see a neatly integrated network of useful nodes making your life easier. Thank you &lt;b&gt;Maya&lt;/b&gt;! If you marquee select all your poses and blended objects in the &lt;b&gt;Trax Editor&lt;/b&gt;, you will noticed that each pose is indeed recorded with keys--you just didn&#39;t set them directly, but you set them nonetheless. This is why the title to this article is a white lie.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgYq2YJGHgTi733z6mSo92Wa3HUvzHwo2mwi31uPmP27zbFlhVIqrIY0Umzpv3eWmARA2Ha5CsroKYv2-Gw3MngEGYrwb3neIq5wpGzZoBA-semOmAdxI9EJaLojBdUt57mSA8eQjlxcsV/s1600-h/Capture05.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgYq2YJGHgTi733z6mSo92Wa3HUvzHwo2mwi31uPmP27zbFlhVIqrIY0Umzpv3eWmARA2Ha5CsroKYv2-Gw3MngEGYrwb3neIq5wpGzZoBA-semOmAdxI9EJaLojBdUt57mSA8eQjlxcsV/s400/Capture05.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In order to be able to edit your animation directly in the &lt;b&gt;Graph Editor&lt;/b&gt;, grab all the current poses in &lt;b&gt;Trax &lt;/b&gt;and navigate to &lt;b&gt;Edit:Merge:Options&lt;/b&gt; and name your animation. You are now left with a bunch of curves that need some cleaning up. You may now use the standard &lt;b&gt;GE &lt;/b&gt;utilities to do this.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_qK4YnDSg_5xv2erIA4DUh0hc7mVMBtZvTB5ik9sx3rkuLoLJF6T3DV3vfmn_IaVdn9xqS4aJNjjyxW5wtg8AnX4lSvMl5sHvcRkbhRpuehK4N_lSeMBQtPbpXjq9qbF9ozgjnqdYrgB/s1600-h/Capture06.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;322&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_qK4YnDSg_5xv2erIA4DUh0hc7mVMBtZvTB5ik9sx3rkuLoLJF6T3DV3vfmn_IaVdn9xqS4aJNjjyxW5wtg8AnX4lSvMl5sHvcRkbhRpuehK4N_lSeMBQtPbpXjq9qbF9ozgjnqdYrgB/s400/Capture06.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Best of all, you can treat this animation as a whole. If you would like to change the timing of it, try scaling the clip or applying a time warp node to it. You can also chop up this clip into little pieces and eat it for breakfast. After you do that, you can even merge it with new clips you create. If this is not enough, you can still set keys on the timeline during the refining stage of your animation to give it that extra polish.&lt;br /&gt;
&lt;br /&gt;
Oh, one more thing, you can always go back to your controls and bake the channels if you do not want to work in the &lt;b&gt;Trax Editor&lt;/b&gt; at some point. It is easy to go back and forth between these workflows.&lt;br /&gt;
&lt;br /&gt;
I hope have you enjoyed this article as much as I had writing it. Comments?</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/264899544478589628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/03/blocking-keys-without-setting-keys.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/264899544478589628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/264899544478589628'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/03/blocking-keys-without-setting-keys.html' title='Blocking Keys Without Setting Keys!'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBEbyp5gZPV95crNeJhDm62ahgFlslkKLr961uoqqsdsCQ1Pkz_Iae6SMPsvjt32JAIUMKBbMB6WmP_ogeddNHYfbEa_D6j3plJKtBqx85ybl7Sv_3KB9cBqM5RpPImsQSDN3a0ZJMBcOw/s72-c/Capture00.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-4472906002119441085</id><published>2010-03-25T21:20:00.000-04:00</published><updated>2010-03-25T21:20:19.404-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="digital painting"/><title type='text'>Digital Painting: A Cute Monster</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5J9nDPgXlny87VgF0V6h2uD9GuwNpqqz9PojQ3U0QEKXQfMui7oYIn8RoA5uiEMpOIROLmiapmi42tN2H4OX8jJWMxw3MZ2GexakHYhhWKy48-oXHR9raGRGkDHBEZZJUc_Ta2AJC0mk/s1600/sketch00.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5J9nDPgXlny87VgF0V6h2uD9GuwNpqqz9PojQ3U0QEKXQfMui7oYIn8RoA5uiEMpOIROLmiapmi42tN2H4OX8jJWMxw3MZ2GexakHYhhWKy48-oXHR9raGRGkDHBEZZJUc_Ta2AJC0mk/s400/sketch00.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/4472906002119441085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/03/digital-painting-cute-monster.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4472906002119441085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4472906002119441085'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/03/digital-painting-cute-monster.html' title='Digital Painting: A Cute Monster'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN5J9nDPgXlny87VgF0V6h2uD9GuwNpqqz9PojQ3U0QEKXQfMui7oYIn8RoA5uiEMpOIROLmiapmi42tN2H4OX8jJWMxw3MZ2GexakHYhhWKy48-oXHR9raGRGkDHBEZZJUc_Ta2AJC0mk/s72-c/sketch00.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-4010669699833921446</id><published>2010-03-07T17:09:00.004-05:00</published><updated>2010-03-07T23:41:10.800-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>Creating and Baking Expressions</title><content type='html'>In this week&#39;s Maya Tip, we&#39;ll work through creating expressions and using the motion data to create anim curves that we can edit in the &lt;b&gt;Graph Edito&lt;/b&gt;r. Expressions are custom algorithms that you can write in a modified version of &lt;b&gt;MEL script&lt;/b&gt; that can be linked to almost any node in Maya. This might sound complicated but in reality it can be as simple as connecting one value to another by writing a simple expression like &lt;b&gt;ty = frame;&lt;/b&gt; On the left of this expression, you see the attribute that is being modified and on the right you see the value that is being assigned to the attribute on the left. Maya uses a reserved variable called &lt;b&gt;frame &lt;/b&gt;to store the current frame number.&lt;br /&gt;
&lt;br /&gt;
Start a new Maya scene and throw a &lt;b&gt;NURBS &lt;/b&gt;sphere on the stage. Select its &lt;b&gt;Translate Y&lt;/b&gt; attribute in the &lt;b&gt;channelBox&lt;/b&gt;.&amp;nbsp; Navigate to the Edit menu in the &lt;b&gt;channelBox &lt;/b&gt;and select the &lt;b&gt;Expressions...&lt;/b&gt; item.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQuAhSYb8CqLz_sU4T7l7Zzp6xB5TNzVzuDp5UzmwmIs_pvSP4AvyS5i_zZ3KEMiuHONKANk2FWAtjrqc5ps6T07YVxENYdPToYftE715ipC5iuVnEQbEhEBQMnbwRuKswnOQlB8JfsJxQ/s1600-h/exp00.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQuAhSYb8CqLz_sU4T7l7Zzp6xB5TNzVzuDp5UzmwmIs_pvSP4AvyS5i_zZ3KEMiuHONKANk2FWAtjrqc5ps6T07YVxENYdPToYftE715ipC5iuVnEQbEhEBQMnbwRuKswnOQlB8JfsJxQ/s200/exp00.JPG&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This opens up the &lt;b&gt;Expression Editor&lt;/b&gt;. You should now have &lt;b&gt;nurbsSphere1.translateY&lt;/b&gt; as your &lt;b&gt;Selected Object and Attribute&lt;/b&gt;. In the big text box below (labeled &lt;b&gt;Expression) &lt;/b&gt;is where we can type in the following: &lt;b&gt;ty = sin(frame);&lt;/b&gt; Press the create button. You have now attached an expression node to your &lt;b&gt;ty &lt;/b&gt;of your sphere. The connection is indicated by the purple tint in the &lt;b&gt;channelBox&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilYn7eqzIsIm2s1tl1tl78Aouu-SZWel96o211JuGl_UR-gYOyLtlJQbDrW2pttajelw3J2q_Gh5Tt3_5SaJLMu28ik1WyYu1-Mugw4-HhHVo0rDPzFnKZNz3uzo-m5qx2uToJ6Sijmkuo/s1600-h/exp01.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilYn7eqzIsIm2s1tl1tl78Aouu-SZWel96o211JuGl_UR-gYOyLtlJQbDrW2pttajelw3J2q_Gh5Tt3_5SaJLMu28ik1WyYu1-Mugw4-HhHVo0rDPzFnKZNz3uzo-m5qx2uToJ6Sijmkuo/s400/exp01.JPG&quot; width=&quot;322&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Go ahead and play your animation and you will see your sphere bobbing up and down. It is a bit fast, so let&#39;s slow it down by decreasing the frequency of our sine wave. If you closed the Expression Editor, open it back up by going to &lt;b&gt;Window:Animation Editors:Expression Editor&lt;/b&gt;. Make sure the sphere is selected then &lt;b&gt;Select By Expression Name&lt;/b&gt; from the &lt;b&gt;Select Filter &lt;/b&gt;menu. This will allow you to retrieve any expressions you created on your sphere (or any other object.)&lt;br /&gt;
&lt;br /&gt;
Our current expression should be named &lt;b&gt;expression1&lt;/b&gt;. Click it and you should see that Maya expanded our code to read: &lt;b&gt;nurbsSphere1.translateY = sin(frame);&lt;/b&gt; Enjoy the fact that Maya allows you to write shorthand in the &lt;b&gt;Expression Editor&lt;/b&gt;! Divide the frame number by some number to reduce the &lt;b&gt;frequency&lt;/b&gt;. I divided it by 6: &lt;b&gt;nurbsSphere1.translateY = sin(frame/6);&lt;/b&gt; Click Edit to commit the changes and then play the animation.&lt;br /&gt;
&lt;br /&gt;
Just for fun, link another attribute in the same script window by writing this code on the next line: &lt;b&gt;nurbsSphere1.rotateZ = cos(frame/6);&lt;/b&gt; Click on Edit again to commit the changes.&lt;br /&gt;
&lt;br /&gt;
Play the animation again. Notice that the sphere barely moves in &lt;b&gt;rz&lt;/b&gt;. This is because &lt;b&gt;Cosine &lt;/b&gt;returns a value from &lt;b&gt;-1 &lt;/b&gt;to &lt;b&gt;1&lt;/b&gt; and these angle values are very tough to detect when the &lt;b&gt;ty &lt;/b&gt;motion is in effect. This means we need to increase the &lt;b&gt;amplitude &lt;/b&gt;a bit. Do this by multiplying the trig function by the angle range you would like to see in motion. I multiplied mine by 10: &lt;b&gt;nurbsSphere1.rotateZ = cos(frame/6)*10;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you know some &lt;b&gt;MEL&lt;/b&gt;, you can really go crazy in the &lt;b&gt;Expression Editor&lt;/b&gt;. But for now, let&#39;s bake this simulation so we can edit the curves in the &lt;b&gt;GE&lt;/b&gt;. Select the sphere and visit &lt;b&gt;Edit:Keys:Bake Simulation&lt;/b&gt;. Open your &lt;b&gt;GE&lt;/b&gt; because it is time for some cleanup. Luckily, the &lt;b&gt;GE &lt;/b&gt;has a function that can do most of it for you. If you select the &lt;b&gt;ty &lt;/b&gt;anim curve, you&#39;ll notice there&#39;s a key on every frame. There are ways to have the animation bake with less keys but let us continue with this example so we can use another useful tool.&lt;br /&gt;
&lt;br /&gt;
Select the entire &lt;b&gt;ty &lt;/b&gt;anim curve in the &lt;b&gt;GE &lt;/b&gt;and navigate to &lt;b&gt;Curves:Simplify Curve&lt;/b&gt;. You will find that the function approximated your baked data using less keys. Now you are at complete freedom to edit this curve any way you please.&lt;br /&gt;
&lt;br /&gt;
I hope you found this tutorial useful.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/4010669699833921446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/03/creating-and-baking-expressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4010669699833921446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4010669699833921446'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/03/creating-and-baking-expressions.html' title='Creating and Baking Expressions'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQuAhSYb8CqLz_sU4T7l7Zzp6xB5TNzVzuDp5UzmwmIs_pvSP4AvyS5i_zZ3KEMiuHONKANk2FWAtjrqc5ps6T07YVxENYdPToYftE715ipC5iuVnEQbEhEBQMnbwRuKswnOQlB8JfsJxQ/s72-c/exp00.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-7017918950289244003</id><published>2010-02-27T21:00:00.000-05:00</published><updated>2010-02-27T21:00:20.611-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="color pencil"/><category scheme="http://www.blogger.com/atom/ns#" term="drawing"/><category scheme="http://www.blogger.com/atom/ns#" term="sketch"/><title type='text'>A Sketch of a Swimsuit Model</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4tA61jrd_Za8tLL5PQKPsxLXJ0c4G4bs2C82uSxrzH768gS-uGZxKgS4k3MFYIl9QGB8b0s2hhXt1w-0DEX9YG3Lg0QqA3jlmuOrEZVxUgjuU35LeFHz2B-Jc2yxBFZC3Cpf96uyMCkor/s1600-h/swimSuitModelsmall.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4tA61jrd_Za8tLL5PQKPsxLXJ0c4G4bs2C82uSxrzH768gS-uGZxKgS4k3MFYIl9QGB8b0s2hhXt1w-0DEX9YG3Lg0QqA3jlmuOrEZVxUgjuU35LeFHz2B-Jc2yxBFZC3Cpf96uyMCkor/s400/swimSuitModelsmall.jpg&quot; width=&quot;270&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/7017918950289244003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/02/sketch-of-swimsuit-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7017918950289244003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/7017918950289244003'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/02/sketch-of-swimsuit-model.html' title='A Sketch of a Swimsuit Model'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4tA61jrd_Za8tLL5PQKPsxLXJ0c4G4bs2C82uSxrzH768gS-uGZxKgS4k3MFYIl9QGB8b0s2hhXt1w-0DEX9YG3Lg0QqA3jlmuOrEZVxUgjuU35LeFHz2B-Jc2yxBFZC3Cpf96uyMCkor/s72-c/swimSuitModelsmall.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-4740539739435712617</id><published>2010-02-20T12:08:00.002-05:00</published><updated>2010-02-20T12:17:24.628-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>Animating Hidden Keyable Attributes</title><content type='html'>When taught to animate in Maya, we tend to become very comfortable with the &lt;b&gt;channelBox&lt;/b&gt;, but the &lt;b&gt;channelBox &lt;/b&gt;only offers a small portion of all the attributes we are able to animate. The keyable attributes you see in the &lt;b&gt;channelBox &lt;/b&gt;are usually only the most common ones available to you. In this tutorial, I will describe how to locate, setup, and animate the color attribute on an object that has a &lt;b&gt;Phong &lt;/b&gt;shader connected to it. After acquiring this knowledge, I encourage you to experiment with other keyable attributes. In a later edition, I will show you how to animate non-keyable attributes.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s start out by creating a simple &lt;b&gt;NURBS &lt;/b&gt;sphere on the stage and by pressing &lt;b&gt;5 &lt;/b&gt;on your keyboard so you can see the sphere shaded gray. What you see is a default Lambert material that is assigned to NURBS objects at creation. Let&#39;s right click the sphere and assign a new Phong material to it. Open your &lt;b&gt;Attribute Editor&lt;/b&gt; by pressing &lt;b&gt;Ctrl+a&lt;/b&gt; and find the &lt;b&gt;phong1&lt;/b&gt; tab. Make sure your playhead is on frame 1 because we&#39;re about to key a color. Locate your color attribute in the&lt;b&gt; Attribute Editor&lt;/b&gt; under the &lt;b&gt;phong1 &lt;/b&gt;tab. Right click it, then click on &lt;b&gt;Set Key&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
At this point, it appears nothing has happened. There is no red tick on the timeline and Maya did not alert you of a change. If you look to the right of the color slider, the checkered box turned into the input symbol. If you click it, you&#39;ll see that the color attribute is now an input to an animation curve!&lt;br /&gt;
&lt;br /&gt;
After clicking the input symbol, you should be on the&lt;b&gt; phong1_colorR&lt;/b&gt; tab of the &lt;b&gt;phong1 &lt;/b&gt;Attribute. Under the Keys section is a charted version of the keys you set on this curve. This isn&#39;t too user friendly so let&#39;s bring this up in our &lt;b&gt;Graph Editor&lt;/b&gt;. Wait a second? We need to be able to select this object before the &lt;b&gt;Graph Editor&lt;/b&gt; can load it... that means we&#39;ll need to open up our &lt;b&gt;Hypergraph &lt;/b&gt;so we can find and select the object.&lt;br /&gt;
&lt;br /&gt;
Select the sphere you created and go to&lt;b&gt; Window:Hypergraph:Connections&lt;/b&gt;. Find and select the &lt;b&gt;phong1SG&lt;/b&gt; (read: phong shader group.) Let&#39;s graph the input connections by navigating to &lt;b&gt;Graph:Input Connections&lt;/b&gt;. Viola! You are now looking at &lt;b&gt;phong1_colorR&lt;/b&gt;, &lt;b&gt;phong1_colorG&lt;/b&gt;, and &lt;b&gt;phong1_colorB&lt;/b&gt;. You can select them and they will appear in your &lt;b&gt;Graph Editor&lt;/b&gt;. You are now able to modify the curve as you see fit and best of all, since it&#39;s a color that you&#39;re animating, you get an instant preview in your viewport.&lt;br /&gt;
&lt;br /&gt;
To finish the exercise, hold&lt;b&gt; k+LMB&lt;/b&gt; and click on frame 24 inside the &lt;b&gt;GE&lt;/b&gt;. Hold&lt;b&gt; i+MMB&lt;/b&gt; to insert a key. Now press &lt;b&gt;w&lt;/b&gt;, select the key you just created and move it up to give it a value of 10. You have just created a glowing light. Select &lt;b&gt;Curves:Post Infinity:Cycle &lt;/b&gt;to give it a pulsating effect.&lt;br /&gt;
&lt;br /&gt;
I hope you have found this tutorial useful. Please experiment with this technique and share your experiences.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/4740539739435712617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/02/animating-hidden-keyable-attributes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4740539739435712617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/4740539739435712617'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/02/animating-hidden-keyable-attributes.html' title='Animating Hidden Keyable Attributes'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-8121580760088530165</id><published>2010-02-20T00:19:00.001-05:00</published><updated>2010-02-20T16:03:58.484-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="digital painting"/><title type='text'>Speed Painting: Screaming Crazy Man</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX9xgS6FT8kUO7mDj6FbpN7EkdsEX53cKIRrGfnf7GMtTQ5Gj0ZxLBNY21jSjQxq4rke8GRWeaaVNwT4L7vepK5xcmz9CO4F1L0CNOYiEneEYBuJLTM_lCDUbvO4uDdslxEf8OPf17kmut/s1600-h/screamingMan.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;391&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX9xgS6FT8kUO7mDj6FbpN7EkdsEX53cKIRrGfnf7GMtTQ5Gj0ZxLBNY21jSjQxq4rke8GRWeaaVNwT4L7vepK5xcmz9CO4F1L0CNOYiEneEYBuJLTM_lCDUbvO4uDdslxEf8OPf17kmut/s400/screamingMan.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/8121580760088530165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/02/speed-painting-screaming-crazy-man.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8121580760088530165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/8121580760088530165'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/02/speed-painting-screaming-crazy-man.html' title='Speed Painting: Screaming Crazy Man'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX9xgS6FT8kUO7mDj6FbpN7EkdsEX53cKIRrGfnf7GMtTQ5Gj0ZxLBNY21jSjQxq4rke8GRWeaaVNwT4L7vepK5xcmz9CO4F1L0CNOYiEneEYBuJLTM_lCDUbvO4uDdslxEf8OPf17kmut/s72-c/screamingMan.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-3570977955737335482</id><published>2010-02-18T20:06:00.001-05:00</published><updated>2010-02-18T20:08:09.091-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="animation"/><category scheme="http://www.blogger.com/atom/ns#" term="message"/><category scheme="http://www.blogger.com/atom/ns#" term="movies"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Vimeo Switch</title><content type='html'>Blogger has been experiencing some drama with their video servers. It has been over a month since the problems started so I decided to switch over to Vimeo for their video services since they seem more realiable. Stay tuned for more animated videos!&lt;br /&gt;
&lt;br /&gt;
You can visit my page on Vimeo by visiting&amp;nbsp;&lt;a href=&quot;http://www.vimeo.com/animatedlew&quot;&gt;www.vimeo.com/animatedlew&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/3570977955737335482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/02/vimeo-switch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3570977955737335482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/3570977955737335482'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/02/vimeo-switch.html' title='Vimeo Switch'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4026718897670748265.post-369064602564157774</id><published>2010-02-12T15:17:00.006-05:00</published><updated>2010-02-13T04:43:56.707-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="maya"/><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks"/><title type='text'>More On The Graph Editor</title><content type='html'>Being able to buffer curves and having the ability to mute/unmute tangents are useful tools when refining an animation. Using these tools along with ghosted frames and motion trails (to check spacing and arcs) will give you the tools you need to create high quality shots.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s say you had an animation of a bouncing ball (and who doesn&#39;t?) In this animation, you probably are using more than one animation curve so it should suffice for this example. You are able to temporarily silence curves that are interfering with your motion by selecting the channel(s) in the graph editor and muting them. This will cause the curve(s) to flatten out and behave as though there were no keys set on them.&lt;br /&gt;
&lt;br /&gt;
You can find the mute item under your Curves menu of your graph editor.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3YuJbabJRejPdKLQc2S75JiJbFBvZ-2cKbmZjcXLAOBdyzZwLZGDbU52ECfszJVctdU_EDbkmbbe2WNG5OtfkdcMThZybqEJOefJfy-EaMZgg9zJS8B9uvR_BZXbQJ2KE4wz6h861rnTh/s1600-h/curveMuteMenuItem.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3YuJbabJRejPdKLQc2S75JiJbFBvZ-2cKbmZjcXLAOBdyzZwLZGDbU52ECfszJVctdU_EDbkmbbe2WNG5OtfkdcMThZybqEJOefJfy-EaMZgg9zJS8B9uvR_BZXbQJ2KE4wz6h861rnTh/s400/curveMuteMenuItem.jpg&quot; width=&quot;311&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Using our simple bouncing ball example, you can try muting your horizontal anim curve so you can focus on the vertical motion of the ball. Conversely, if you wanted to focus on the rolling and settling of the ball, you could then mute the vertical motion. If you were swinging a pendulum in a figure 8 motion, the same rules still apply.&lt;br /&gt;
&lt;br /&gt;
When muting a curve in the graph editor, there will be a little symbol next to the channel indicating that it has been muted. The original keyed anim curve will become a dotted curve and the temporary replacement will become a flat solid line. You can unmute the curve(s) from the Curve menu in your graph editor.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWuNSEW5su-eYmP445w_OE31iMmrVJ_ipviH-JKoaUh-UqL6ezbztE2Sd7bENORWrRFDo97nQ2SEROkzT9sQbyEqt5Yi9KBuU0apK02LJ49Gl_BYkIxLfyeYKGZMgRIhfGJUXlsSokRG-8/s1600-h/aMutedCurve.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWuNSEW5su-eYmP445w_OE31iMmrVJ_ipviH-JKoaUh-UqL6ezbztE2Sd7bENORWrRFDo97nQ2SEROkzT9sQbyEqt5Yi9KBuU0apK02LJ49Gl_BYkIxLfyeYKGZMgRIhfGJUXlsSokRG-8/s400/aMutedCurve.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Handling one dimension at a time by muting channels you temporarily don&#39;t need is useful but sometimes this isn&#39;t enough to help you tweak efficiently. At times, you need to edit two or more channels at once and when this happens, your arcs and spacing become priority.&lt;br /&gt;
&lt;br /&gt;
To check out your spacing, go under your Animation menu set and under the Animate menu, you&#39;ll find the Ghost Selected item. Go ahead and reset the settings one by one based on your situation. I usually like having 2 keys ghosted after and 1 key ghosted before. Or having two steps ghost after and 2 steps ghosted before.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhum40OqNe6CqpKIdHo6cbauqaJ48PCvme_Csek3Ja2rJ52TEDa46M8cXKHo-uWI4hXp6WgThgdT-jQ33Oc_VrZU4wvXWoMIKizH1Nvk5ol5Dk0mqauub-zPltrTNaB4CnsGButqSy0sn6_/s1600-h/ghostOptions.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhum40OqNe6CqpKIdHo6cbauqaJ48PCvme_Csek3Ja2rJ52TEDa46M8cXKHo-uWI4hXp6WgThgdT-jQ33Oc_VrZU4wvXWoMIKizH1Nvk5ol5Dk0mqauub-zPltrTNaB4CnsGButqSy0sn6_/s400/ghostOptions.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
Once your spacing is neatly arranged, you will want to double check the arcs that your objects are moving in. Do this by switching on Motion Trails. You can also find this one under the Animation, Animate menu. You can have it update when you change a key--you can also have different display styles for the tool. My favorite display style is the line type because it visually plays &quot;connect-the-dots&quot; with all my keys.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGjuTibXMS1tJDNS2b6y2b1Cp2AGnMW4gbANKh92_L18aMfqmkeTsDtxxctpK_K2hVTA6T4bwSBHBQ1iKMFqMQ1cZ8J2v-N6Oy5P3M0kPplZCt-O0BFB9xYLuWeupClxbViks8yyz1gzkr/s1600-h/motionTrailOptions.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGjuTibXMS1tJDNS2b6y2b1Cp2AGnMW4gbANKh92_L18aMfqmkeTsDtxxctpK_K2hVTA6T4bwSBHBQ1iKMFqMQ1cZ8J2v-N6Oy5P3M0kPplZCt-O0BFB9xYLuWeupClxbViks8yyz1gzkr/s400/motionTrailOptions.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
As far as I know, there is no magic &quot;remove motion trail&quot; button. However, you can delete the trail by selecting it and pressing delete.&lt;br /&gt;
&lt;br /&gt;
Using Buffer curves can be a life saver. As animators, we&#39;re used to having multiple files for the same scene and sometimes this is true even if there is a minor tweak on a curve. Buffer curves can make your work more efficient by allowing you to test out different key configurations without throwing away all the hard work you put in.&lt;br /&gt;
&lt;br /&gt;
Before you use Buffer curves, you need to switch them on in the graph editor view menu.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMgqp_TqEoQD2jGlUhy4JzWuj_k0dk8iUvpnIkXamy4vfvoubGpQSRYeKL4BbTpQyHgjSfDsUV7BuDp4V3IjI-hqvnGeYywB2xAASGT4wAdOoXHfJTn9TbtaK-5ms97hfGkmerlhproySz/s1600-h/showBufferCurves.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;286&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMgqp_TqEoQD2jGlUhy4JzWuj_k0dk8iUvpnIkXamy4vfvoubGpQSRYeKL4BbTpQyHgjSfDsUV7BuDp4V3IjI-hqvnGeYywB2xAASGT4wAdOoXHfJTn9TbtaK-5ms97hfGkmerlhproySz/s400/showBufferCurves.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Once you are ready to tweak an anim curve and turned on Buffer curves from the view menu (in the graph editor), you can select the curve and go to Curves-&amp;gt;Buffer Curve Snapshot. This &quot;saves&quot; your current configuration for your current maya session. You can now start tweaking until you can&#39;t tweak anymore. You&#39;ll be able to see the original curve ghosted in the back but if you don&#39;t like what your new curve is doing, you can always go to Curves-&amp;gt;Swap Buffer Curve.&lt;br /&gt;
&lt;br /&gt;
A small note on weighted vs. non-weighted tangents: I disagree that it should always be one or the other. I think it&#39;s fair to say that it&#39;s best to use the right one for the job. I generally start out with non-weighted tangents but if I find my particular situation better fitted for weighted, then I will switch to weighted tangents.&lt;br /&gt;
&lt;br /&gt;
A pro of weighted tangents is that they require less keys since they use different math to interpolate the curves. A pro with non-weighted tangents is that they can scale uniformly without a fuss.&lt;br /&gt;
&lt;br /&gt;
A con of weighted tangents is that they do not always behave when you scale them. Sometimes the tangents reset and act funny especially if you have stretched too much. There is plenty round off error to pull this off successfully. A con of non-weighted tangents is that they require more keys to do the same thing a weighted tangent can do.&lt;br /&gt;
&lt;br /&gt;
I hope this follw-up tutorial has been helpful.</content><link rel='replies' type='application/atom+xml' href='http://www.animatedlew.com/feeds/369064602564157774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.animatedlew.com/2010/02/more-on-graph-editor.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/369064602564157774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4026718897670748265/posts/default/369064602564157774'/><link rel='alternate' type='text/html' href='http://www.animatedlew.com/2010/02/more-on-graph-editor.html' title='More On The Graph Editor'/><author><name>Lewis Moronta</name><uri>http://www.blogger.com/profile/12208286945685730927</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXQMFl1e8Ri2UzJTwjS9PM8doQIYCVJ1843Jg50vI-fNuj2Wn_iMPkiyLTMtrSTe1-7nLcANrd3TITV2TKBgtRWVkufefY8zmf8q5iQqgUhzcY_NDv93IBxbpIw8CFw/s113/avatar.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3YuJbabJRejPdKLQc2S75JiJbFBvZ-2cKbmZjcXLAOBdyzZwLZGDbU52ECfszJVctdU_EDbkmbbe2WNG5OtfkdcMThZybqEJOefJfy-EaMZgg9zJS8B9uvR_BZXbQJ2KE4wz6h861rnTh/s72-c/curveMuteMenuItem.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>