<?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>MathiesonFacer.com &#187; R&amp;D</title>
	<atom:link href="http://www.mathiesonfacer.com/category/portfolio/rnd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mathiesonfacer.com</link>
	<description>Mathieson Facer - Rigging Technical Director</description>
	<lastBuildDate>Sat, 29 Oct 2011 21:54:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Sticky Lips: How To &amp; Sample File</title>
		<link>http://www.mathiesonfacer.com/featured/sticky-lips-how-to-sample-file/</link>
		<comments>http://www.mathiesonfacer.com/featured/sticky-lips-how-to-sample-file/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 00:53:11 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[R&D]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.mathiesonfacer.com/?p=1076</guid>
		<description><![CDATA[It was requested that I release my sticky lips setup so people could try to take the solution further. I haven&#8217;t spent much time on it since posting about it way back, so I figured I might as well. Only thing I ask of anybody that does further develop this is please provide a link [...]]]></description>
			<content:encoded><![CDATA[<p>It was requested that I release my sticky lips setup so people could try to take the solution further. I haven&#8217;t spent much time on it since posting about it way back, so I figured I might as well. Only thing I ask of anybody that does further develop this is please provide a link back to my website and keep me up to date on any improvements you have made :)</p>
<p><a href="http://www.mathiesonfacer.com/wp-content/sampleFiles/stickyLips.zip">Click here to download the sample file</a> (Made in 3ds Max 2010, and is of a Sackboy-looking teapot since I do not want to be distributing the model seen below, which is not mine, around the internets)</p>
<p>A video of the effect in action. Special thanks to Craig Hobbs for use of the model:</p>
<p><object width="546" height="410" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=25393000&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="546" height="410" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=25393000&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p>For now I am just going to do a general write-up of some things I am doing in the file and why I am doing them. It might sound like a tutorial at parts, but I&#8217;m more just explaining the general process and thoughts behind the setup. This is not intended to actually be a tutorial, and you may still have to figure some things out on your own.<span id="more-1076"></span></p>
<p><span style="text-decoration: underline;"><strong>PLEASE NOTE</strong></span>: This has not yet been tested in a production scenario; it is just some RnD work I have been doing. The solution does work and is simple to set up, but it does get slow with heavier meshes. This should only be used in the final render rig, as being in the animation rig will make the animator&#8217;s life miserable.</p>
<p><span style="text-decoration: underline;"><strong>UPDATE 1:</strong></span> I may already have an improved method, thanks to <a href="http://www.penproductions.ca/" target="_blank">Paul Neale</a>, for doing this that is much better when it comes to speed and also solves the issue of hands and other extremities passing through the volume selected falloff area. I still have to test it.</p>
<p><span style="text-decoration: underline;"><strong>UPDATE 2:</strong></span> The new method is quite improved, nearly doubling the FPS of the previous method. I am not going to share the new method here, as it basically uses the same ideas listed below. There is only a slight difference, but I will leave that up to you to figure out. I don&#8217;t want to give everything away :)</p>
<hr />
<p>There are a few tricks to this set up. The keys are to have a volume select modifier, a spline with a sweep modifier, a duplicated mesh of your character&#8217;s head, and a morpher modifier above your skin modifier. Its thinking outside the box a little bit, and may seem kind of confusing at first, but after doing it once or twice it really is quite simple.</p>
<p>You&#8217;ll want to start setting this up after you have the jaw skinned for your character. Once you have the jaw all skinned and looking pretty, you need to duplicate the skinned mesh. The only alterations you need to make on this duplicated mesh is with the skinning around the mouth. Change the skinning of the lips so that they remain sealed when the jaw opens. This is how your lips will look when they stick. If you want to improve performance, you can remove all bones from the skin modifier except for the head and jaw bone (or whatever bones are actually influencing the lip area on your mesh). Un-hide the node &#8220;hlp_lips_geo&#8221; in the sample scene to see how mine were set up.</p>
<p>On the original mesh, you will notice there is a morpher modifier above the skin modifier. The reason for it being above the skin modifier is that we want the mesh to assume the absolute pose of our sticky lips mesh, so we want it to morph <em>after</em> the skinning has affected it. Having it below the skin modifier just doesn&#8217;t produce the same result. So, add the morpher modifier above the skin modifier, and then pick the duplicate &#8220;sticky lips&#8221; mesh as the target and turn it up to 100.</p>
<p>If you test it out at this point, you&#8217;ll notice the mesh just morphs back to whatever pose the duplicate mesh was in at the time it was picked. This isn&#8217;t what we want. There is a checkbox in the morpher modifier called &#8220;Automatically reload targets&#8221;. This needs to be enabled. This checkbox does exactly what it says and automatically reloads our target mesh. What this means is, since our target mesh is skinned, it will always morph to the current skinned state of the mesh. Once this is enabled, things should look a little better.</p>
<p>Now our lips are sticking, but they&#8217;re never un-sticking. This is where the volume select and a spline with a sweep come into play. Select the edges of the lower or upper lip, where they would be sticking, from one corner of the mouth to the other, and extract the edges as a shape. You can just go and make your own spline shape if you want, I just find this to be easiest and the most accurate method of getting the shape. Once the spline is created, it needs a sweep modifier so it had some thickness to it. This spline is what will be driving our volume select modifier, which is controlling our morpher modifier.</p>
<p>Up next, we need to add the volume select to the main head mesh, under the morpher modifier. Change the settings to what I have set up in the sample file. The main things to change are selection level to vertex, and select by mesh object, picking your spline. Enabling soft selection here is quite important, and you will have to play with the settings further down the road when you are fine tuning the stickiness.</p>
<p>We need the spline to follow the mouth&#8217;s skinning now. We want it to sit in the middle of the lips when opening, so the easiest way to achieve this is to skin wrap it to the duplicate mesh and then convert to skin. I had some errors with Max when leaving the skin wrap on the spline after converting it to skin; I consistently experienced issues with the viewport no longer redrawing, and the odd time Max would crash. The great thing about this method, and using a skin wrap here, is that if you have morph targets set up for your head you can easily extract matching shapes for your spline. You can even write a script to just go and automatically extract all shapes and set up a new morpher on the spline, making all the same connections as on the head&#8217;s morpher.</p>
<p>I have given the animator some manual controls for the stickiness. You can find these controls on the attribute holder on the jaw control object. I rigged the spline using a simple affect region modifier, connecting the side to side motion up to the slider labelled &#8220;Unstick Point&#8221; and then connecting the depth of the affect region (the y-axis of the end point) to the &#8220;Unstick&#8221; spinner. I also connected up the falloff from the affect region to the &#8220;Sticky Range&#8221; slider, pinch from the affect region to the &#8220;Sticky Pinch&#8221; spinner, and the morph target on the main head to the &#8220;Sticky Enabled&#8221; spinner. There may be other settings that would be useful for the animator to have control of, but this is all I&#8217;ve chosen to do in this example. Play around with each to see how it affects the end result. You may also want to play with the soft selection settings on the volume select, or the radius on the sweep modifier.</p>
<p>The reason this solution has speed issues is mostly because of the volume select modifier. It will work best with lower density meshes. Also, since it is generating a selection based on vertices being within a certain range of the spline object, if the character&#8217;s hand belongs to the same mesh and goes within this range, it may cause some issues. Just some things to consider. I am already thinking up ways to get around these issues, but I haven&#8217;t tested any of them yet.</p>
<p>That&#8217;s all for now. I just wanted to get this posted. Hope you&#8217;ve found it helpful! If you do not fully understand something I am explaining above, try examining the Max file to figure out what I did. If it still doesn&#8217;t make sense, feel free to leave your question in the comments below. Positive feedback is always welcome too :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mathiesonfacer.com/featured/sticky-lips-how-to-sample-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mirror Rig Script Demo</title>
		<link>http://www.mathiesonfacer.com/featured/mirror-rig-script/</link>
		<comments>http://www.mathiesonfacer.com/featured/mirror-rig-script/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 01:37:34 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[R&D]]></category>

		<guid isPermaLink="false">http://www.mathiesonfacer.com/?p=863</guid>
		<description><![CDATA[This script is still a WIP, and I&#8217;m not sure that it will ever officially be considered complete because there seems to be a new problem waiting around every corner. You can see, after the mirroring is done, that on the mirrored leg there is still a few twist helpers not properly aligned and one [...]]]></description>
			<content:encoded><![CDATA[<p>This script is still a WIP, and I&#8217;m not sure that it will ever officially be considered complete because there seems to be a new problem waiting around every corner. You can see, after the mirroring is done, that on the mirrored leg there is still a few twist helpers not properly aligned and one of the bone chains for the foot are orientated backwards. Solve one and run into another! But, its still fun trying, and it is working half-decently right now, so I thought it would be cool to put together a video of it in action.<br style="padding: 0px; margin: 0px;" /><br style="padding: 0px; margin: 0px;" />The video shows the script processing with a &#8220;sleep&#8221; command embedded in the for-loop that is mirroring the rig. I put the sleep command in so that you can tell there are no camera tricks with clever cuts being made, as well as to actually have something to look at. Without the sleep it would literally just be me pressing a button, waiting 20 seconds or so, then the other half of the rig appearing magically. Not quite as interesting to watch :)</p>
<p><object width="546" height="410" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10706782&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="546" height="410" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=10706782&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mathiesonfacer.com/featured/mirror-rig-script/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Sticky Lips</title>
		<link>http://www.mathiesonfacer.com/featured/sticky-lips/</link>
		<comments>http://www.mathiesonfacer.com/featured/sticky-lips/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:07:32 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[R&D]]></category>

		<guid isPermaLink="false">http://www.mathiesonfacer.com/?p=726</guid>
		<description><![CDATA[A few weeks ago I decided I wanted to take a stab at creating the &#8220;Sticky Lips&#8221; effect.  I saw a few tutorials out there, but they were only for Maya and didn&#8217;t translate too well to 3DS Max.  I decided to play around a bit and try to come up with a method for [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I decided I wanted to take a stab at creating the &#8220;Sticky Lips&#8221; effect.  I saw a few tutorials out there, but they were only for Maya and didn&#8217;t translate too well to 3DS Max.  I decided to play around a bit and try to come up with a method for Max on my own.</p>
<p>After a bit of RnD time I came up with a method for getting the sticky effect.  I think the solution is a pretty good one, but I am still working on getting the sticky effect to only be active when the lips are opening.  I got something working for the example below, but its not as good as it could be.  I plan to continue developing that aspect to try to get something nice and solid.</p>
<p><span id="more-726"></span></p>
<p>I found an old thread on CGTalk a few weeks after I did this that sounded somewhat similar to the method I came up with.  I am not sure how similar our approaches are though, as the links in the thread are now dead.</p>
<p>I am thinking of possibly sharing this technique in the future, but it won&#8217;t be the near future.  I want to finish developing the open/close detection first, and then use it in production a few times.  Trust me though, the setup so far is very quick and easy :).</p>
<p><object width="546" height="410" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8958176&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="546" height="410" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=8958176&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mathiesonfacer.com/featured/sticky-lips/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Trarch Muscle Testing</title>
		<link>http://www.mathiesonfacer.com/featured/trarch-muscle-testing/</link>
		<comments>http://www.mathiesonfacer.com/featured/trarch-muscle-testing/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 03:17:02 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[R&D]]></category>

		<guid isPermaLink="false">http://www.mathiesonfacer.com/wordpress/?p=221</guid>
		<description><![CDATA[This weekend was the first real opportunity I have had to start working on a rig I am planning to make for a character modeled by Nicolas Collings. The character&#8217;s name is Trarch and is an awesome piece of work, I can&#8217;t wait to start making some progress on this project. Anyways, if you&#8217;ve checked out [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">This weekend was the first real opportunity I have had to start working on a rig I am planning to make for a character modeled by <a href="http://www.nicolascollings.com/" target="_blank">Nicolas Collings</a>. The character&#8217;s name is Trarch and is an awesome piece of work, I can&#8217;t wait to start making some progress on this project.</p>
<p style="text-align: left;">Anyways, if you&#8217;ve checked out Nicolas&#8217;s website you will have seen Trarch in his side banners, 3d works section, and making of section and noticed that he is a very muscular character. Being the quick one that I am, I realized this would be a good chance to play around with some muscles.</p>
<p><span id="more-221"></span></p>
<p style="text-align: left;">I found a technique outlined on <a href="http://chrisevans3d.com/" target="_blank">Chris Evan</a>&#8216;s website for creating muscle systems in Maya and thought it would be cool to try in Max.</p>
<p style="text-align: left;">The basic idea is to go ahead and create the rig for your character and skin it as you normally would. After you have finished you can begin modeling some muscles that will go behind your character&#8217;s geometry mesh. You need to add a morpher modifier and create morph targets for the other poses of the muscle and then determine what should drive the value of the morph target (I used an expose transform helper monitoring how much the elbow joint has bent) and wire the parameters.</p>
<p style="text-align: left;">Then we need to add several modifiers to our main geometry mesh to get the final effect. A volume select modifier is added to create a selection of vertices based off how close the mesh we created for our muscle is to the main mesh. Then we pass this selection up the stack to a push modifier and flex modifier. The push modifier is there to simulate the bulging of the muscle, and flex is to create some minor skin jiggle.</p>
<p style="text-align: left;">To the right you can see an animated gif of what the arm looks like in the viewport <img class="alignright" title="trarchyMuscleTest" src="http://www.mathiesonfacer.com/wp-content/images/trarchMuscleTest/trarchMuscleTest.gif" alt="" width="300" height="267" />with the volume select changing the colour of the vertices.  A rendered version of this same animation can be found at the bottom of the page.</p>
<p style="text-align: left;">There are a few drawbacks I can see coming up down the road with this method, however. First and foremost is that it took a total of 4 modifiers being added to the stack to achieve the result. That is only for one muscle and a volume select modifier can only detect one mesh at a time. That means that for every muscle I want to add I am going to have to add another volume select modifier and my stack is going to get quite congested.</p>
<p style="text-align: left;">Secondly, there is not a great deal of control over what muscles affect what areas of the character&#8217;s mesh. You can create the muscles at the perfect size, shape, and position and it appears to be working great, but then you can easily get the muscle too close to another part of the body and it will volume select that area and apply the bulge and jiggle there as well. I already started to notice this slightly putting this arm together with the size of the character&#8217;s forearm and it intersecting with the bicep. This can probably be minimized a lot and brought under control quite a bit by spending more time fine tuning the settings on the modifiers.</p>
<p style="text-align: left;">This was put together rather quickly since it was just a test for when I get to building the actual rig so the skinning is by no means final and the settings on the modifiers are just good enough to get it working at this point, but overall I think the technique works quite well! I am planning to take a bit of time looking into what it might take to create a scripted plugin to replace volume select that will allow multiple meshes to be selected.</p>
<p><object width="546" height="546" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8449167&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="546" height="546" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=8449167&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mathiesonfacer.com/featured/trarch-muscle-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

