<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tyler Good</title>
	<atom:link href="http://www.tylergood.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tylergood.net</link>
	<description>Website and blog of Tyler Good, Technical Artist</description>
	<lastBuildDate>Fri, 06 Apr 2012 23:40:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>The future is coming!</title>
		<link>http://www.tylergood.net/the-future-is-coming/</link>
		<comments>http://www.tylergood.net/the-future-is-coming/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 02:04:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=78</guid>
		<description><![CDATA[Changes?  what&#8217;s this madness, you ask?  Well I&#8217;ve updated the wordpress theme to support some changes that I&#8217;d like to make to my online presence, in that I&#8217;ll probably be blogging sometime in the near future.  I&#8217;ll be recapping the days at GDC this next week, and probably following that with a stab at why [...]]]></description>
				<content:encoded><![CDATA[<p>Changes?  what&#8217;s this madness, you ask?  Well I&#8217;ve updated the wordpress theme to support some changes that I&#8217;d like to make to my online presence, in that I&#8217;ll probably be blogging sometime in the near future.  I&#8217;ll be recapping the days at GDC this next week, and probably following that with a stab at why making decisions is important.</p>
<p>In the meantime I&#8217;ll be cleaning up the commenting CSS (cause it&#8217;s ugly, &#8220;Bob&#8221; damn it) and figuring out how to make the wordpress machine phone friendly, cause who uses desktops anymore?</p>
<p>Be excited.  Someone should do it, and I&#8217;m going to be really busy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/the-future-is-coming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collision show/hide script</title>
		<link>http://www.tylergood.net/collision-showhide-script/</link>
		<comments>http://www.tylergood.net/collision-showhide-script/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 04:07:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=66</guid>
		<description><![CDATA[Yesterday a friend asked me if I could make a quick tool that would show or hide objects with the prefix &#8216;COL_&#8217; in Max. Being that I had never worked in MaxScript beyond a simple &#8216;hello world&#8217; level, I told him sure, give me half an hour. This script was the result. Download Script here. [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday a friend asked me if I could make a quick tool that would show or hide objects with the prefix &#8216;COL_&#8217; in Max. Being that I had never worked in MaxScript beyond a simple &#8216;hello world&#8217; level, I told him sure, give me half an hour. This script was the result.</p>
<p><a href="http://www.tylergood.net/wp-content/uploads/2011/09/hide_collision.zip">Download Script here.<br />
</a></p>
<p>Directions for use:</p>
<ul>
<li> Copy this script to your &lt;Max Directory&gt;\stdplugs\stdscripts folder</li>
<li>Restart Max</li>
<li>Open up the &#8216;Customize User Interface&#8217; Dialog ( Customize &gt; Customize User Interface )</li>
<li>Select &#8216;GoodUtils&#8217; from the &#8216;Category&#8217; drop down</li>
<li>Select &#8216;Show or hide collision&#8217; from the actions</li>
<li>Assign a hotkey using the assign hotkey area to the right</li>
<li>&#8216;Save&#8217; your UI settings</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/collision-showhide-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bake Layer Tool</title>
		<link>http://www.tylergood.net/bake-layer-tool/</link>
		<comments>http://www.tylergood.net/bake-layer-tool/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 04:40:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=55</guid>
		<description><![CDATA[For my thesis I had to do a lot of normal and AO map baking.  I noticed I lost a lot of time basically just setting up meshes and exporting them, and changing settings in xNormal.  I wanted to create a way to quickly bake a normal/AO map with xNormal without ever leaving Maya.  The [...]]]></description>
				<content:encoded><![CDATA[<p>For my thesis I had to do a lot of normal and AO map baking.  I noticed I lost a lot of time basically just setting up meshes and exporting them, and changing settings in xNormal.  I wanted to create a way to quickly bake a normal/AO map with xNormal without ever leaving Maya.  The workflow for the by-hand version of this process looks something like this:</p>

<a href="http://www.tylergood.net/wp-content/gallery/bake_layer_tool/old_process_xn.png" title="" class="thickbox" rel="bake_layer_tool" >
	<img class="ngg-singlepic" src="http://www.tylergood.net/wp-content/gallery/cache/49__320x240_old_process_xn.png" alt="old_process_xn" title="old_process_xn" />
</a>

<p>with the area in brown having to be repeated for every mesh, and the entire process needing to be repeated for every bake.  My solution involves a new node in Maya along with a UI and set of tools for interacting with it (collectively referred to as Bake Layer Tool).  You can see it in action below:</p>
<iframe src="http://www.youtube.com/embed/SL-taXA4qJE?version=3&amp;wmode=transparent" width="560" height="340" title="YouTube video player" style="background-color:#000;display:block;margin-bottom:0;max-width:100%;" frameborder="0" allowfullscreen></iframe><p style="font-size:11px;margin-top:0;"><a href="http://www.youtube.com/watch?v=SL-taXA4qJE" target="_blank" title="Watch on YouTube">Watch this video on YouTube</a>.</p>
<p>As can been seen, the process is very quick and easy.  The revised workflow looks something more like this:</p>

<a href="http://www.tylergood.net/wp-content/gallery/bake_layer_tool/new_process_xn.png" title="" class="thickbox" rel="bake_layer_tool" >
	<img class="ngg-singlepic" src="http://www.tylergood.net/wp-content/gallery/cache/47__320x240_new_process_xn.png" alt="new_process_xn" title="new_process_xn" />
</a>

<p>with some steps only having to be taken once for a given mesh, even for multiple imports.</p>
<p>Current Version: 0.2.1<br />
feel free to download the tool <a href="http://www.tylergood.net/tool_dl/bake_layer_tool.zip">here</a>.</p>
<ul>
<li>Please be aware that future versions of the plug-in may cause problems when updating, due to Maya plugin node IDs, so please do not use this plugin for critical work until I have it at version 1.0.</li>
<li>Also be aware that I developed this tool on Maya 2012 with a fully updated install of PyMel.  This will not currently run on a vanilla install of Maya 2011, although I am currently considering working on making it backwards-compatible to 2011.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/bake-layer-tool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sim Bake Helper</title>
		<link>http://www.tylergood.net/sim-bake-helper/</link>
		<comments>http://www.tylergood.net/sim-bake-helper/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 14:18:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=60</guid>
		<description><![CDATA[While I was working on my thesis, I had to do a lot of simulations in Maya that I baked out to skeletal meshes and animation for import to UDK.  Along the way I started piecing together some tools and improvements to this process, and afterwards I assembled them into a more cohesive tool.  Most [...]]]></description>
				<content:encoded><![CDATA[<p>While I was working on my thesis, I had to do a lot of simulations in Maya that I baked out to skeletal meshes and animation for import to UDK.  Along the way I started piecing together some tools and improvements to this process, and afterwards I assembled them into a more cohesive tool.  Most of the tool involves automating sections of the process, although some of it (especially editing the skin weights) is significantly easier with the tool, as well as being faster.</p>
<p>Below is a video demo/tutorial.  Download the tool <a href="http://www.tylergood.net/tool_dl/sim_bake_helper.zip">here</a>.</p>
<p><iframe width="570" height="321" src="http://www.youtube.com/embed/IsZDqJonoyM?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/sim-bake-helper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Notes IV</title>
		<link>http://www.tylergood.net/gdc-notes-iv/</link>
		<comments>http://www.tylergood.net/gdc-notes-iv/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 19:06:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=53</guid>
		<description><![CDATA[A short final entry.  I was bad about taking notes on the roundtables (although I&#8217;ll link them here when I get them), and I didn&#8217;t make it to many other talks (I was very preoccupied with reviews and hitting the career pavilion, as I have no desire to become a starving technical artist after college).  [...]]]></description>
				<content:encoded><![CDATA[<p>A short final entry.  I was bad about taking notes on the roundtables (although I&#8217;ll link them here when I get them), and I didn&#8217;t make it to many other talks (I was very preoccupied with reviews and hitting the career pavilion, as I have no desire to become a starving technical artist after college).  A final note, though, for people who have never attended, go to parties/meetups after the conference, don&#8217;t just head back to your hotel.  Some of the best learning opportunities I had were sitting down over a beer and food with the best people in my field, and being able to learn person to person.<span id="more-53"></span></p>
<h3>Jason Parks &#8211; Sony Interactive &#8211; Power Python for Maya &#8211; slides <a title="Power Python slides" href="http://www.jason-parks.com/PowerPython/Jason_Parks_VisualArts_PowerPythonDevelopment.pdf">here</a></h3>
<ul>
<li>Eclipse
<ul>
<li>Superb python development environment</li>
</ul>
</li>
<li>Pymel
<ul>
<li>Eclipse as a primary IDE</li>
<li>Wing (or eclipse) for debugging</li>
</ul>
</li>
<li>Why pymel?
<ul>
<li>not compiled</li>
<li>Autodesk blesses it</li>
<li>open source</li>
<li>free</li>
<li>a <span style="text-decoration: underline;">Pythonic</span> maya language
<ul>
<li>actually OOP</li>
<li>the most important difference between pymel and maya.cmds</li>
</ul>
</li>
</ul>
</li>
<li>Pythonic language in Maya
<ul>
<li>creation of a joint
<ul>
<li>myJoint = joint( )</li>
</ul>
</li>
<li>list relatives
<ul>
<li>myJoint.listRelatives( )</li>
</ul>
</li>
<li>All pertinent commands/functions are attached to the object</li>
<li>auto completion in an IDE will get you all methods of the object</li>
<li>dir( ) on an object will get you the same</li>
<li><span style="text-decoration: underline;">Convenience Functions</span>
<ul>
<li>myJoint.getParent( ) instead of myJoint.getRelatives( parent = True )<span style="text-decoration: underline;"> </span></li>
</ul>
</li>
<li>Readability is KEY</li>
<li>getting access to attributes is super quick and easy</li>
<li>Objects are known by their API DAG path, not the node name
<ul>
<li>solves a lot of problems by itself</li>
</ul>
</li>
<li>Improved logging</li>
</ul>
</li>
<li>Eclipse
<ul>
<li>Open source</li>
<li>popular</li>
<li>tons of add-ons</li>
<li><span style="text-decoration: underline;">Mark Occurrences</span>
<ul>
<li>Super useful</li>
</ul>
</li>
<li>Pydev Outliner</li>
<li>Pydev + Eclipse maya editor, tutorial on creativecrash</li>
<li>Eclipse is aware of the code base (autocompletion)</li>
</ul>
</li>
<li>Wing
<ul>
<li>Real-time Debugging
<ul>
<li>Break from Maya to debug</li>
<li>breakpoints, stack tracing, injection</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>As a bit of follow up to this talk, I just started using eclipse + pymel, and I&#8217;ve been converted, it&#8217;s definitely worth taking the jump, it makes writing the code much less tedious, and lets me focus on the actual problems at hand.</p>
<p>thanks for reading, hopefully you&#8217;ve found something useful.  If you feel like anything could be clarified or anything of that nature, feel free to leave a comment.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/gdc-notes-iv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Notes, part III</title>
		<link>http://www.tylergood.net/gdc-notes-part-iii/</link>
		<comments>http://www.tylergood.net/gdc-notes-part-iii/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 08:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=51</guid>
		<description><![CDATA[&#160; I&#8217;m going to actually sit down and finish typing out the rest of my notes from Tuesday. The rest of the days are much lighter on the notes. Anyway, on with the show! Tuesday (Tech Artist Bootcamp) (continued): Seth Gibson &#8211; 343 Studios (Microsoft) &#8211; How to Train your Technical Animator &#8211; leveraging personality [...]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I&#8217;m going to actually sit down and finish typing out the rest of my notes from Tuesday. The rest of the days are much lighter on the notes.</p>
<p>Anyway, on with the show!</p>
<p><span id="more-51"></span></p>
<h2>Tuesday (Tech Artist Bootcamp) (continued):</h2>
<h3>Seth Gibson &#8211; 343 Studios (Microsoft) &#8211; How to Train your Technical Animator &#8211; leveraging personality types &#8211; slides <a title="Seth Gibson slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_SethGibson_TAPersonalityAssessment.pptx">here</a></h3>
<ul>
<li>Team Fit
<ul>
<li>the myth &#8211; it&#8217;s about who you&#8217;d want to have a beer with</li>
<li>It&#8217;s not about generic &#8216;strengths&#8217; and &#8216;weaknesses&#8217;</li>
<li>it <span style="text-decoration: underline;">is</span> about leveraging personality</li>
</ul>
</li>
<li>Personality assessment overview<em> (I&#8217;m an Integrator, with a strong hint of Focuser)</em>
<ul>
<li><strong>The Focuser</strong>
<ul>
<li>&#8220;Management Material&#8221;</li>
<li>Question they ask: What?
<ul>
<li>&#8220;what is the job right now?&#8221; &#8212; not big picture</li>
</ul>
</li>
<li>Generally self-reliant</li>
<li>Authoritative</li>
<li>Practical</li>
<li>Clear</li>
<li>Predictable outcomes</li>
<li><strong>Areas to improve:</strong>
<ul>
<li>People skills</li>
<li>Breadth of knowledge</li>
<li>Time management skills</li>
</ul>
</li>
</ul>
</li>
<li><strong>The Relater</strong>
<ul>
<li>&#8220;Who?&#8221;
<ul>
<li>&#8220;Who is involved?&#8221;; &#8220;Who is affected?&#8221;</li>
</ul>
</li>
<li>People person</li>
<li>enthusiast</li>
<li>Better at scheduling than the focuser</li>
<li>Big picture/teamwork focused</li>
<li>Interpersonal</li>
<li>Effective communicator/presenter</li>
<li><em>Also a great tools/tech/etc. evangelist</em></li>
<li><strong>Areas to improve:</strong>
<ul>
<li>Focus</li>
<li>Breadth of Knowledge</li>
<li>Depth of Knowledge</li>
<li>Time management skills</li>
</ul>
</li>
</ul>
</li>
<li><strong>The Integrator</strong>
<ul>
<li>&#8220;Why?&#8221;
<ul>
<li>or, &#8220;What is the significance?&#8221;</li>
</ul>
</li>
<li>Self directed, self-reliant</li>
<li>Finisher</li>
<li>strong team member, considers all the input</li>
<li>Asks (and often answers) the hard questions
<ul>
<li>Is there a better way to do this?</li>
<li>Is this the most productive use of time?</li>
<li>etc.</li>
</ul>
</li>
<li><strong>Areas to improve:</strong>
<ul>
<li>Leadership skills</li>
<li>People skills</li>
<li>Depth of Knowledge</li>
</ul>
</li>
</ul>
</li>
<li><strong>The Operator</strong>
<ul>
<li>&#8220;How?&#8221;</li>
<li>Detailer, systemic</li>
<li>No stone unturned</li>
<li>Attentive to &#8220;little things&#8221;</li>
<li>Iterates and improves</li>
<li>Analyzes, monitors, documents</li>
<li>Knows systems, procedures, boundaries</li>
<li><strong>Areas to improve:</strong>
<ul>
<li>Leadership skills</li>
<li>people skills</li>
<li>Breadth of knowledge</li>
<li>Time management</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Personality training now means personal success later
<ul>
<li>Assess early, leverage often</li>
</ul>
</li>
<li>Redefine &#8220;team fit&#8221;</li>
<li>Re-think development paradigms</li>
</ul>
<h3>Steve Theodore &#8211; Undead Labs, <em>Epic Fail &#8211; </em>slides <a title="Epic Fail Slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_SteveTheodore_EpicFail.pdf">here</a></h3>
<ul>
<li>Dealing with problems is a huge part of the job</li>
<li><strong>Defensive Design </strong>- take inspiration from real defense
<ul>
<li>Compartmentalize
<ul>
<li>like battleships!</li>
<li><strong>Encapsulation</strong>
<ul>
<li>Small functions with clear jobs</li>
<li>well defined inputs and outputs</li>
<li>each piece is a black box</li>
<li>bigger jobs = a collection of small jobs</li>
<li>&#8220;Single responsibility pattern&#8221;
<ul>
<li>Each small chunk of code has a single responsibility</li>
</ul>
</li>
<li>Why encapsulate?
<ul>
<li>localize problems</li>
<li>Simpler maintenance</li>
<li>Easier debugging</li>
</ul>
</li>
<li>Extra benefits:
<ul>
<li>Reusability
<ul>
<li>Bug fixes happen in one place</li>
</ul>
</li>
<li>Teamwork
<ul>
<li>It&#8217;s easier to divide tasks when you have a bunch  of small pieces with clearly-defined functions</li>
</ul>
</li>
<li>Testability
<ul>
<li>It&#8217;s easier to figure out whats wrong when the function that is throwing the error has limited length</li>
<li>testing for individual black boxes is relatively easy</li>
</ul>
</li>
</ul>
</li>
<li>Different flavors of black boxes
<ul>
<li>Library code
<ul>
<li>intended to be used anywhere</li>
<li>should be the bulk of the code  we write</li>
</ul>
</li>
<li>Tool code
<ul>
<li>complex jobs</li>
<li>very specific</li>
<li>should make use of library code</li>
</ul>
</li>
<li>UI code
<ul>
<li>buttons, menus, etc.</li>
</ul>
</li>
<li><a title="Wikipedia - Model View Controller" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller">Model View Controller</a></li>
<li>Black Box Code
<ul>
<li>What is inside a black box can change</li>
<li>inputs and outputs can not</li>
<li>wrap existing functions to add data or functionality</li>
</ul>
</li>
</ul>
</li>
<li>Document!
<ul>
<li>Memory is fallable</li>
<li>teammates need help</li>
<li>write your code for strangers to read</li>
<li>automatic documentation generation software:
<ul>
<li>Doxygen (many languages)</li>
<li>Epydoc (Python)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Debugging
<ul>
<li>Code stacks up
<ul>
<li>returns go down</li>
<li>debugging = inspecting the stack, and backtracking to the bug</li>
<li>90% of the time, errors are from carelessness in how code talks to code</li>
</ul>
</li>
<li>Debugging is the art of finding responsibility</li>
<li><strong>Print Debugging</strong>
<ul>
<li>simple</li>
<li>cheap</li>
<li>limited</li>
<li>messy</li>
<li>fundamentally the wrong tool for the problem
<ul>
<li>you must know where the problem is to find the error</li>
</ul>
</li>
</ul>
</li>
<li><strong>Logging</strong>
<ul>
<li>Print debugging plus
<ul>
<li>global on/off</li>
<li>write to text file</li>
<li>email</li>
</ul>
</li>
<li>Python
<ul>
<li>use the standard logging module</li>
</ul>
</li>
</ul>
</li>
<li><strong>PDB (Debugger)</strong>
<ul>
<li>step through code</li>
<li>inpsect variables</li>
<li>execute statements</li>
<li>move up/down the stack</li>
</ul>
</li>
<li><strong>IDE</strong>
<ul>
<li>Eclipse + pydev</li>
<li>wing</li>
</ul>
</li>
</ul>
</li>
<li><strong>Exception Handling</strong>
<ul>
<li>Exceptions retrace the stack</li>
<li>catch only expected errors</li>
<li>Catch Fails
<ul>
<li>blatant catches
<ul>
<li>Hiding errors you should be fixing</li>
</ul>
</li>
<li>Empty catches
<ul>
<li>(don&#8217;t lie to yourself, the error is still there)</li>
</ul>
</li>
<li>Catching too high
<ul>
<li>your catch needs the right context</li>
</ul>
</li>
</ul>
</li>
<li>Catch Win:
<ul>
<li>tight scopes
<ul>
<li>expected errors
<ul>
<li>empty returns, etc.</li>
</ul>
</li>
<li>External Errors, etc.
<ul>
<li>network, disk issues</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Exceptions are friends
<ul>
<li>Valuable for debugging</li>
<li>flexible, because you can write your own</li>
<li>save all exceptions
<ul>
<li>text file</li>
<li>email</li>
<li>database</li>
</ul>
</li>
</ul>
</li>
<li>Good error reports
<ul>
<li>save whole stack</li>
<li>file, location, local vars</li>
<li>Python Stack Capture
<ul>
<li><a title="sys.exc_info" href="http://docs.python.org/library/sys.html#sys.exc_info">sys.exc_info()<br />
</a></li>
</ul>
</li>
<li>throw exceptions high on the stack to be handled lower</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Adam Pletcher &#8211; Volition, <em>Databases and Technical Art </em>- slides <a title="Databases and Tech Art slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_AdamPletcher_Databases.pdf">here</a></h3>
<ul>
<li>Embrace the database</li>
<li>Relational Databases
<ul>
<li>Strengths:
<ul>
<li>Speed</li>
<li>Volume</li>
<li>Multi-user</li>
<li>data relationships</li>
</ul>
</li>
<li>Hurdles
<ul>
<li>SQL query complexity</li>
<li>centralized service</li>
</ul>
</li>
<li>How they work
<ul>
<li>Server -&gt; databases -&gt; tables -&gt; Columns and Rows
<ul>
<li>Each Column has a type</li>
</ul>
</li>
</ul>
</li>
<li>Visualization
<ul>
<li>Allows you to quickly and easily show data in a visual format
<ul>
<li>Heatmaps, graphs/charts</li>
</ul>
</li>
<li>Tools:
<ul>
<li><a href="http://matplotlib.sourceforge.net/">Pylab</a></li>
<li><a href="http://www.tableausoftware.com/">Tableau</a></li>
<li>Excel</li>
<li>Custom views, reports</li>
</ul>
</li>
<li>When graphing, show the trend line
<ul>
<li>Useful for proving viability to management/producers</li>
</ul>
</li>
<li>Heatmap for tool usage/errors</li>
</ul>
</li>
<li>Databases and Python
<ul>
<li>SQLite</li>
<li><a title="pymssql" href="http://pymssql.sourceforge.net/">pymssql</a></li>
<li><a href="http://www.postgresql.org/">postgres</a></li>
<li>**<a href="http://www.sqlalchemy.org/">SQL Alchemy</a>
<ul>
<li>Pythonic</li>
<li>Independent of DB flavor</li>
<li>Abstraction layer between the python and the SQL/DB</li>
<li>Object relational mapping
<ul>
<li>direct relationship between code object and database data
<ul>
<li>add, update, delete</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Start small and simple
<ul>
<li>install a server on your workstation to begin</li>
<li>start with a dumb datastore
<ul>
<li>good place to learn</li>
</ul>
</li>
<li>Set goals for data capture</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Bryan Moss &#8211; THQ Digital Studios Phoenix -Using Simulation data in real time &#8211; slides <a title="Using simulation data in real time slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_BryanMoss_VideoCloth.pdf">here</a></h3>
<ul>
<li>Graphics talk, not so much tools</li>
<li>Video simulation textures</li>
<li>Pipeline
<ul>
<li>Sim cloth with DCC</li>
<li>Video node used in shader to add video to the shader
<ul>
<li>Render to texture</li>
<li>don&#8217;t be subtle</li>
<li>Can use compositing on videos
<ul>
<li>&#8220;fix in post&#8221; mentality</li>
<li>allows for a lot of flexibility</li>
</ul>
</li>
</ul>
</li>
<li>Bink for video compression</li>
<li>Cloth shader
<ul>
<li>Tech artists are invaluable here</li>
<li>art knowledge plus technical know how</li>
<li>Running the numbers is a must( PIX, Gpad, etc)
<ul>
<li>Tech artists should know exactly how much something costs</li>
</ul>
</li>
<li>Downsides:
<ul>
<li>Art setup is cumbersome</li>
<li>Artists need to know multiple packages</li>
<li>can be tech heavy when designing, coding, maintaining shaders</li>
</ul>
</li>
<li>Features
<ul>
<li>Extremely dynamic shader
<ul>
<li>5 dynamic systems including cloth</li>
<li>multiple specular types</li>
<li>two sets of UVs</li>
<li>5 textures plus one video texture</li>
</ul>
</li>
<li>Bulk of cloth is in normal and parallax
<ul>
<li>swizzle out blue for using on the parallax</li>
</ul>
</li>
<li>process helped by efficient, established shader pipeline tools</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Bronwen Grimes, Valve <em>Making and using nonstandard textures &#8211; </em>slides <a title="Portal 2 textures slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_BronwenGrimes_NonstandardTextures.pdf">here</a></h3>
<p>I didn&#8217;t take many notes for this one, I was mostly trying to digest the material.  Definitely take a look at the slides for this one</p>
<ul>
<li>Standard textures
<ul>
<li>Diffuse, specular, normal, etc.</li>
<li>useful, but by no means the limit to what can be done with a 2-dimensional array of data (map)</li>
</ul>
</li>
<li>Non-standard textures
<ul>
<li>Manipulate the UVs through color data</li>
<li><strong>Flow Map</strong> &#8211; representation of a 2-d vector field, plotting the flow of pixels on the surface
<ul>
<li>Water needed to follow the complex contours of the levels in a believable way
<ul>
<li>Flow around things</li>
</ul>
</li>
<li>Flow map generated by Houdini &amp; scripts (definitely reference the slides for this one)
<ul>
<li>artists were given a mock-up of the level, with the plane of the water.</li>
<li>They could then paint the flow on the surface, which was basically painting the surface normals</li>
<li>this information was then baked out to a two channel map
<ul>
<li>This data was not normalized, to allow for different magnitudes of flow</li>
</ul>
</li>
</ul>
</li>
<li>Use a noise texture (cloud) as a time input in order to offset the motion in timing
<ul>
<li>cycle the values so that this can also be used to mask off movement</li>
</ul>
</li>
<li>Flow maps done by 2 artists, for 30 levels, in 1.5 days</li>
</ul>
</li>
<li>Material Emancipation grid
<ul>
<li>had to be non-threatening, convey that it was non-blocking, and also communicate state (show player that it would &#8220;emancipate&#8221; level meshes</li>
</ul>
</li>
<li>Surface-facing normals
<ul>
<li>The &#8220;science-y&#8221; gels for portal 2</li>
<li>Wanted texture to look like it had embedded sprites</li>
<li>ended up using a uv texture that reacts to the camera&#8217;s angle to the texture.</li>
<li>along with a bump offset, made a texture that made the bubbles always look round</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/gdc-notes-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Notes, Part II</title>
		<link>http://www.tylergood.net/gdc-notes-part-ii/</link>
		<comments>http://www.tylergood.net/gdc-notes-part-ii/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 06:43:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gdc]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=47</guid>
		<description><![CDATA[Here&#8217;s the second round of GDC Notes, typed up as my computer chugs through physics sims.  I&#8217;ll probably only be getting to Rob&#8217;s talk tonight, as I&#8217;m bouncing between tasks.  I also want to mull over the talk a bit, because it was one of the most important and thoughtful talks I saw the whole [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s the second round of GDC Notes, typed up as my computer chugs through physics sims.  I&#8217;ll probably only be getting to Rob&#8217;s talk tonight, as I&#8217;m bouncing between tasks.  I also want to mull over the talk a bit, because it was one of the most important and thoughtful talks I saw the whole week.  Not as flashy or exciting as the visuals talks, and not as cut and dried as the debugging or database talks, but very well thought out and important.  I realize, after looking over my notes, that he&#8217;s describing a system and a culture very much like the one in which I did my internship, an experience for which I am very grateful.</p>
<p><span id="more-47"></span></p>
<p>My thoughts, where I decide to include them, will be in italics.</p>
<p>The slides and Rob&#8217;s (very dense) notes are available <a title="Ending the culture war - Rob Galanakis" href="http://tech-artists.org/downloads/GDC2011/GDC2011_RobGalanakis_EndingCultureWar.pdf">here.</a></p>
<h2>Tuesday (Tech Artist Bootcamp) (continued):</h2>
<h3>Rob Galanakis &#8211; Bioware Austin, <em>Ending the Culture War</em></h3>
<ul>
<li>&#8220;You have crappy tools because you have a crappy tools culture&#8221;</li>
</ul>
<blockquote>
<ul>
<li><em>I had never thought of &#8220;tools culture&#8221; before, but that&#8217;s definitely what we had at Volition, what made it so possible for me to be effective even as a beginning intern.</em></li>
<li>Can you share resources and tools between teams?</li>
</ul>
</blockquote>
<ul>
<li>You cannot have good tools and bad culture</li>
<li>Changing culture is hard</li>
<li>The Defining feature of a great TA is their impact on studio culture.
<ul>
<li>Streamlined workflow</li>
<li>strong communication</li>
<li>good code</li>
<li><em>This is one of the areas where I see the biggest need for/advantage of having a forked tech art discipline built in to a strong art program.</em></li>
</ul>
</li>
<li>Good pipelines take a decade to build</li>
<li>Three Strategies
<ul>
<li>Figure out what Tech Artists and Engineering teams are good at
<ul>
<li>play to the strengths of engineering and technical art teams
<ul>
<li>Engineering teams are set up to build and maintain large systems
<ul>
<li>Engineering teams have more build, testing, and deployment infrastructure</li>
<li>More management means deliberate and manageable rate of change</li>
</ul>
</li>
<li>TAs are good at working directly with content developers
<ul>
<li>TAs often start as content developers</li>
</ul>
</li>
<li>TA teams are smaller and less managed than engineers</li>
<li>TA reports to, is taksed by, and is paid by content
<ul>
<li><strong>Not engineering</strong></li>
</ul>
</li>
<li><span style="text-decoration: underline;">Boyd&#8217;s Law</span> &#8211; Speed of iteration beats quality of iteration</li>
</ul>
</li>
<li>Engineers provide a solid foundation
<ul>
<li>TAs can/will not create a solid large system</li>
<li>TAs should iterate using the large systems as a base</li>
</ul>
</li>
</ul>
</li>
<li>2. Replace adversarial relationships with positive structures</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li>Programming, art, and design hate each other because they compete for the same resources (programming time)
<ul>
<li>Create mechanisms to share resources and share people</li>
</ul>
</li>
<li>If you can&#8217;t trust the people who wrote the tech, you can&#8217;t trust the tech</li>
<li>content creation&#8217;s tools budget is self-sufficient and sacrosanct.  Don&#8217;t steal resources from other areas</li>
<li>Often, the poorest schedules are rewarded with the most resources,<em> resources and people are shifted from functioning areas to the most mismanaged areas</em></li>
<li>Don&#8217;t use tools budget to patch holes in bad scheduling
<ul>
<li><em>Probably painful at first, if the studio is used to depending on this, but seems like it would lead to great advances</em></li>
</ul>
</li>
<li>Content should control content&#8217;s budget.
<ul>
<li>they choose whether to spend budget on content or tools</li>
</ul>
</li>
<li>Let Engineering control the tech</li>
<li>TAs can keep content developers away from bugs and issues in teh code</li>
<li><strong>Tools Vision is powered by TA</strong></li>
</ul>
</blockquote>
<blockquote><p>That&#8217;s it for the evening.  I may at a later date go through and write more of my personal thoughts, but for now, labs are closing soon, and I have other work to do.  Hope  you took something away from this.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/gdc-notes-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Notes, part I</title>
		<link>http://www.tylergood.net/gdc-notes-part-i/</link>
		<comments>http://www.tylergood.net/gdc-notes-part-i/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 16:26:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=44</guid>
		<description><![CDATA[I&#8217;m posting my notes here in hopes that something that grabbed me will be useful to someone else.  feel free to ask questions, make corrections, etc. This isn&#8217;t everything I saw, but rather the things that caught me as being the most interesting/exciting/poignant.  These won&#8217;t be nearly as condensed and edited as Ben Cloward&#8217;s observations, [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m posting my notes here in hopes that something that grabbed me will be useful to someone else.  feel free to ask questions, make corrections, etc. This isn&#8217;t everything I saw, but rather the things that caught me as being the most interesting/exciting/poignant.  These won&#8217;t be nearly as condensed and edited as Ben Cloward&#8217;s observations, which are an easier read by all accounts.  I&#8217;m throwing more of the raw notes up here (in a semi-edited form), in hopes that there are things that didn&#8217;t grab me immediately that will later, or that someone else will find instructive.</p>
<p>As I&#8217;m currently working on thesis work, I&#8217;ll be typing these up during breaks from content creation and rolling them out as I finish typing each section.  I hope they&#8217;re instructive in some way, shape, or form.</p>
<p><span id="more-44"></span></p>
<h2>Monday:</h2>
<h3>Riot Games/League of Legends Postmortem</h3>
<ul>
<li>Difficulties:
<ul>
<li>Always in development, always adding new fundamental features</li>
<li>emergent work &#8212; game is live, users are finding bugs</li>
</ul>
</li>
<li>Solutions:
<ul>
<li>Triage daily (daily mandatory playtests)</li>
<li>Separate teams for live issues and feature additions
<ul>
<li>This allows for devs focused on immediate problems to focus there, and those focused on adding content to be focused where they need to be</li>
<li>Focus on the teams&#8217; different cultures and levels risk aversion.  Put people where their personalities fit best ( this seems to tie in with Seth&#8217;s talk on Tuesday)</li>
</ul>
</li>
<li> Scale testing</li>
</ul>
</li>
<li> Other Observations
<ul>
<li>Don&#8217;t change UI for small changes
<ul>
<li>UI changes have a high cost;</li>
<li>Even if the change is going to have a positive impact across the board, you&#8217;ll have people who are used to looking/clicking in one place and will have trouble shifting to the new location</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>Tuesday (Tech Artist Bootcamp):</h2>
<h3>Keith Self-Ballard &#8211; Volition, <em>In Advocacy of Tech Art &#8211; </em>slides <a title="In advocacy of tech art slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_KeithSelf-Ballard_Advocacy.pdf">here</a><em><br />
</em></h3>
<p><em>My note:</em> This was a fantastic talk, and, in my opinion, one of the most important talks of the bootcamp.  The notes are a little sparse, partially because I was just warming up my note taking for the morning<em>, </em>but largely because the talk was very to-the-point.  Once the slides are released, I&#8217;ll be sure to post a link.<em><br />
</em></p>
<ul>
<li>What Makes  a Tech Artist?
<ul>
<li>Flexibility and Adaptability
<ul>
<li>Bronwen Grimes later said the #1 quality she looks for in a Tech Artist is the ability to learn</li>
</ul>
</li>
<li>Smart, Gets things done [and not a Jackass]</li>
</ul>
</li>
<li>Why do we need tech artists?
<ul>
<li>Communication between artists &amp; programmers</li>
<li>Good tools give an employer the chance to address problems with low performing employees
<ul>
<li>Low performing content creators can hide behind the fact that the tools are bad [ when they are].</li>
</ul>
</li>
<li>Focus
<ul>
<li>Content creators can focus on content creation, worry less about the tools themselves</li>
<li>Engineers can focus on engineering</li>
</ul>
</li>
</ul>
</li>
<li>Challenges
<ul>
<li>Artists may grow overdependent on TAs
<ul>
<li>Arists need to be mandated to learn how to solve certain problems and remember when the same error shows up 2, 5, 15 times</li>
<li>Artists may stop looking for creative solutions</li>
<li>This was discussed at the Tech Art Roundtable on Thursday</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Scott Kauffman, <em>Making Tools your team will actually use &#8211; </em>slides <a title="Making Tools your team will actually use - slides" href="http://tech-artists.org/downloads/GDC2011/GDC2011_ScottGoffman_MakingGoodTools.pdf">here</a><em> </em></h3>
<ul>
<li>1- Know your clients
<ul>
<li>Artists can&#8217;t often describe what they want or need</li>
<li>Be a Generalist:  Know what every department does, and how they do it
<ul>
<li>Be able to understand the workflow that the artist is trying to improve without them having to explain it or show it to you</li>
<li>&#8220;Know just enough to be dangerous&#8221;</li>
</ul>
</li>
<li>Find beta testers:
<ul>
<li>Attributes of a beta tester:
<ul>
<li>Technical &#8211; able to understand in some way what is happening with the tool and what went wrong when it breaks</li>
<li>Patient &#8211; willing and able to deal with a tool that is still in beta, and has some bugs</li>
<li>Eager &#8211; Active, not reactive, in seeking help when it is needed, and solving problems when it is not</li>
<li>Pathfinder &#8211; Willing to accept the challenges of being the first one working with a tool, and also willing and able to evangelize the tool to the rest of the team</li>
<li>In short, people with a little bit of TA in them</li>
</ul>
</li>
<li>Meet with them regularly to collect feedback
<ul>
<li>Be proactive</li>
</ul>
</li>
</ul>
</li>
<li>Keep tack of who is using what
<ul>
<li>Make a database of telemetry on tools usage (who, how often, how long, how many clicks, etc.)
<ul>
<li>Find out who uses new tools the most
<ul>
<li>These will be good candidates for beta testers</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>2- Define the goal
<ul>
<li>Three questions
<ul>
<li>What problem is this tool supposed to solve?
<ul>
<li>This should go in the source code  at the top</li>
<li>Any time the tool does not meet this definition, it is broken</li>
</ul>
</li>
<li>Who will be using it?
<ul>
<li>Design UI/feature set for target audience</li>
</ul>
</li>
<li>Can this solution be added to an existing tool?
<ul>
<li>Helps prevent tool clutter</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>3- Deploy in stages
<ul>
<li>Version 1.0 should be as barebones as possible
<ul>
<li>get this to your beta testers as soon as possible</li>
</ul>
</li>
<li>Once basic functionality is there, polish UI, add additional functionality</li>
</ul>
</li>
<li>4- Simplify the UI
<ul>
<li>Intentionally or not, we design tools for ourselves</li>
<li>Example (bad): Zbrush</li>
<li>Integrate into the target environment (Max, Maya, Houdini, World Editor, etc.)
<ul>
<li>Artist should not be able to distinguish custom tools from built-in tools</li>
<li>Put new tools in logical integrated location <strong>and</strong> in custom tools menu</li>
</ul>
</li>
<li>Avoid tool clutter
<ul>
<li>Occasionally do a tool list review</li>
<li>Too many tools = confusing</li>
</ul>
</li>
<li>Make the UI expandable
<ul>
<li>Only show the currently required UI, expand the rest</li>
<li>A user will not use a tool that scares them</li>
<li>Hide complex UI until user needs/requests it</li>
<li>Start tools in a read only mode if applicable</li>
</ul>
</li>
<li>Avoid customizable UIs and Hotkeys
<ul>
<li>Figuring out the beset layout and hotkey is <span style="text-decoration: underline;">your</span> job</li>
<li>Any two users doing the same thing with the same tool should have the same UI</li>
</ul>
</li>
</ul>
<ul>
<li>Button clutter is worse than menu clutter
<ul>
<li>Try to reduce button count.  If it doesn&#8217;t meet one of these criteria, move it to a menu:
<ul>
<li>Does it need to be clicked frequently or repeatedly?
<ul>
<li>Frequently: move, rotate, etc.</li>
</ul>
</li>
<li>Repeatedly: Grow selection</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>Re-use your UI elements
<ul>
<li>Programming and Use efficiency</li>
</ul>
</li>
</ul>
</li>
<li>5- Provide Help
<ul>
<li>Don&#8217;t roll out a tool until it&#8217;s documented</li>
<li>Every tool should have a help button</li>
<li>All help docs should be in the same format
<ul>
<li>Use a standard template</li>
<li>Provide specific usage examples</li>
</ul>
</li>
</ul>
</li>
<li>6- Advertise
<ul>
<li>New tools</li>
<li>New Features</li>
<li>Breaking changes</li>
<li>Functionality changes</li>
<li>Pop up release notes on new changes</li>
<li>Create a one-sheet for new hires
<ul>
<li>Name of tool, one sentence description of what it does</li>
<li>If you can&#8217;t fit all of your tools on one sheet, maybe you have tool clutter?</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>Well that&#8217;s it for my current posting.  Hope that something here is helpful.  I&#8217;ll try to continue posting sometime today or tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/gdc-notes-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Developer&#8217;s Conference</title>
		<link>http://www.tylergood.net/game-developers-conference/</link>
		<comments>http://www.tylergood.net/game-developers-conference/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 00:18:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gdc]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=41</guid>
		<description><![CDATA[This year&#8217;s Game Developer&#8217;s conference is wrapping up, and it was another great year. Thanks to all of the people who put things together, gave talks, or shared information, I learned a lot and I&#8217;m looking forward to keeping in contact with all of the people I met. Ben Cloward wrote a great summary of [...]]]></description>
				<content:encoded><![CDATA[<p>This year&#8217;s Game Developer&#8217;s conference is wrapping up, and it was another great year.</p>
<p>Thanks to all of the people who put things together, gave talks, or shared information, I learned a lot and I&#8217;m looking forward to keeping in contact with all of the people I met.</p>
<p>Ben Cloward wrote a great summary of the Tech Art Bootcamp, which you can find <a href="http://bcloward.blogspot.com/2011/03/gdc-2011-tuesday.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/game-developers-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maya Python snippet: Constrain skeletons</title>
		<link>http://www.tylergood.net/maya-python-snippet-constrain-skeletons/</link>
		<comments>http://www.tylergood.net/maya-python-snippet-constrain-skeletons/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 11:38:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.tylergood.net/?p=35</guid>
		<description><![CDATA[Python for Maya script that constrains a bind skeleton to the selected control skeleton heirarchy]]></description>
				<content:encoded><![CDATA[<h3>Python for Maya script that constrains a bind skeleton to the selected control skeleton heirarchy<a href="http://www.tylergood.net/wp-content/uploads/2011/02/constrain_joints_ctl_to_bind.zip"></a></h3>
<p>While I was working on my first somewhat involved rigging project (for my Thesis), I realized I would need to constrain a large number of joints to a large number of other joints that could be very nearly identically named, save for a prefix.  I decided to spend a few minutes writing a little Python script to automate this constraining process in order to save myself time (and so that the time that I did spend would be more enjoyable).  The result was this little 75 line script that has worked quite well.  If I get into more rigging, I&#8217;ll obviously script more portions of it, but for now this was quite helpful.</p>
<h3>Use:</h3>
<ul>
<li>Must have a Control skeleton, joints prefixed with &#8220;ctl_&#8221;</li>
<li>Must have a Bind skeleton, joints prefixed with &#8220;bind_&#8221;</li>
</ul>
<ol>
<li>Download the script <a title="download script" href="http://www.tylergood.net/wp-content/uploads/2011/02/constrain_joints_ctl_to_bind2.zip">here</a>, and unzip it to your scripts directory</li>
<li>Import &#8220;constrain_joints_ctl_to_bind&#8221;</li>
<li>Select a node at or above the highest joint in the control skeleton hierarchy</li>
<li>run constrain_joints_ctl_to_bind.constrain_joints( ) at the Python command line in Maya</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.tylergood.net/maya-python-snippet-constrain-skeletons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.tylergood.net/feed/ ) in 3.33467 seconds, on May 22nd, 2013 at 10:06 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 22nd, 2013 at 10:36 pm UTC -->