<?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>Holyfingers &#187; Tutorials</title>
	<atom:link href="http://www.holyfingers.co.uk/main/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.holyfingers.co.uk/main</link>
	<description></description>
	<lastBuildDate>Tue, 10 Jan 2012 18:37:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Simple page-turn setup in Softimage…</title>
		<link>http://www.holyfingers.co.uk/main/2010/06/simple-page-turn-setup/</link>
		<comments>http://www.holyfingers.co.uk/main/2010/06/simple-page-turn-setup/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 12:01:58 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Softimage]]></category>

		<guid isPermaLink="false">http://www.holyfingers.co.uk/main/?p=423</guid>
		<description><![CDATA[<p>I recently had to come up with a basic system for animating the pages of a book for a commercial, it didn&#8217;t need to do anything especially fancy, just something that wouldn&#8217;t explode if I needed to scale the whole model. In the end I went with a CrvDeform with some straightforward controls, pretty basic [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to come up with a basic system for animating the pages of a book for a commercial, it didn&#8217;t need to do anything especially fancy, just something that wouldn&#8217;t explode if I needed to scale the whole model. In the end I went with a <em>CrvDeform </em>with some straightforward controls, pretty basic to be sure, but this method has since come in handy for a number of other things so I thought I&#8217;d share&#8230;<span id="more-423"></span></p>
<p>Open up a new scene, make sure you have the <em>Model</em> menu open (press <strong>1</strong>) and start yourself off with a grid, this will be our page.</p>
<ul>
<li> <em>Primitive</em> &gt; <em>Polygon Mesh</em> &gt;<em> Grid</em></li>
<li><em>Length</em> <em>U</em> = 9, <em>Length V </em>= 10</li>
<li> <em>Subdivisions</em> <em>U </em>= 25, <em>Subdivisions</em> <em>V </em>= 2.</li>
</ul>
<p>To ensure everything matches up nicely we&#8217;re extracting our deformer curve from the mesh itself</p>
<ul>
<li>select the central edges running in<em> X </em></li>
</ul>
<p><em><img class="ngg-singlepic ngg-none" src="http://www.holyfingers.co.uk/main/wp-content/gallery/tutorials/page_turn_1.jpg" alt="page_turn_1" /></em></p>
<p><em> </em></p>
<p>From the <em>Create</em> menu</p>
<ul>
<li><em>Curve</em> &gt;<em> Extract From Edges</em></li>
<li><em>Subdivision</em> = 0</li>
</ul>
<p><em> </em>With this new curve still selected, again from the <em>Create</em> menu</p>
<ul>
<li><em>Curve</em> &gt;<em> Fit On Curve</em></li>
<li><em>Subdivision</em> = 1</li>
<li><em>Inputs</em> &gt; <em>Delete</em></li>
</ul>
<p>So what we&#8217;ve just done here is made a curve that matches up with our geometry, then, based on that one, a more simplified, second curve to use as our deformer. Give your curve and mesh some new names, I&#8217;m going with  <strong><em>DeformerCrv</em></strong> and <strong><em>Page</em></strong> respectively. Now to setup the deformation,</p>
<ul>
<li>Select <strong><em>Page</em></strong> <em> </em></li>
</ul>
<p>In the <em>Modify</em> menu</p>
<ul>
<li><em>Deform</em> &gt; <em>by Curve</em></li>
<li>Select<em> <strong>DeformerCrv</strong></em></li>
</ul>
<p>In the <em>Curve Deform</em> menu that opens</p>
<ul>
<li><em>Axis = X</em></li>
<li><em>Translation Along Curve = 4.5 </em><em> </em></li>
<li><em>Constraint &gt; Constrain To Deformer &gt; On</em></li>
</ul>
<p>If you now move any of the points on <strong><em>DeformerCrv</em></strong> you should see the <strong><em>Page</em></strong> mesh deforming to match</p>
<p><img class="ngg-singlepic ngg-none" src="http://www.holyfingers.co.uk/main/wp-content/gallery/tutorials/page_turn_2.jpg" alt="page_turn_2" /></p>
<p>This is all well and good, but we can&#8217;t keyframe these points, instead we have to setup up some clusters. Undo any translations you may have just made to the points on <strong><em>DeformerCrv</em></strong> so our page is nice and flat again.</p>
<ul>
<li> Select <strong><em>DeformerCrv</em></strong></li>
<li>Press <strong>T</strong> to see its points</li>
<li>Select <em><strong>DeformerCrv</strong>.<strong>Point 1</strong></em> (it should be second from the left)</li>
<li><em>Edit</em> &gt; <em>Create Cluster with Center</em></li>
<li>Repeat for points<em> <strong>2</strong> </em>and<em> <strong>LAST</strong></em></li>
</ul>
<p>You should now have a curve with three nulls along its length, each of these acts as a kind of intermediary allowing us to keyframe the translation of individual points on our curve.</p>
<p><img class="ngg-singlepic ngg-none" src="http://www.holyfingers.co.uk/main/wp-content/gallery/tutorials/page_turn_4.jpg" alt="page_turn_4" /></p>
<p>We&#8217;ll now use circular curves to limit the page&#8217;s  motion and to use as simple controls.</p>
<ul>
<li>Primitive &gt; Curve &gt; Circle</li>
<li>Repeat 4 times</li>
<li>Give the circles <em>Radii</em> of 9, 6, 3 and 1 respectively</li>
<li>Snap each to <em><strong>DeformerCrv</strong>.Point 0</em></li>
<li>From smallest to largest name the circles: <strong><em>Turn</em></strong>, <strong><em>Inner</em></strong>, <strong><em>Mid</em></strong> and <strong><em>Outer</em></strong></li>
</ul>
<p>You will notice that three of the circles intersect our cluster nulls</p>
<ul>
<li><em>Constrain</em> &gt; <em>Parent</em> each circle over its corresponding null</li>
<li><em>Constrain</em> &gt; <em>Parent <strong>Turn</strong> </em>over <strong><em>Inner</em></strong>, <strong><em>Mid</em></strong> and <em><strong>Outer</strong> </em></li>
<li>Select<em> <strong>Turn</strong>, <strong>DeformerCrv</strong> </em>and<em> <strong>Page</strong></em></li>
<li><em>Edit </em>&gt;<em> Model &gt; New Model</em></li>
</ul>
<p>Name the new model <strong><em>Page_1</em></strong>, your hierarchy should look like this:</p>
<p><img class="ngg-singlepic ngg-none" src="http://www.holyfingers.co.uk/main/wp-content/gallery/tutorials/page_turn_3.jpg" alt="page_turn_3" /></p>
<p>For ease of use later on we&#8217;ll adjust this model&#8217;s centre point</p>
<ul>
<li>Select <em><strong>Page_1</strong></em></li>
<li><em>Constrain </em>&gt; <em>ChldComp</em> = On</li>
<li><em>Center </em>(from the <em>Select</em> menu)<em><br />
</em></li>
<li>Snap the centre point to<em> </em><em><strong>DeformerCrv</strong>.Point 0</em></li>
</ul>
<p>At this stage it&#8217;s also  a good idea to zero out any transforms so select everything (easiest way is to make sure you&#8217;re in Wireframe mode  in your viewport and drag select)</p>
<ul>
<li><em>Transform</em> &gt; <em>Set Neutral Pose</em></li>
</ul>
<p>That&#8217;s us done, rotate the circles to control the page turn, <strong><em>Turn</em> </strong>adjusts the overall page rotation while the others define the shape.</p>
<p><img class="ngg-singlepic ngg-none" src="http://www.holyfingers.co.uk/main/wp-content/gallery/tutorials/page_turn_5.jpg" alt="page_turn_5" /></p>
<p>Here&#8217;s a little test animation I did using this setup, I just duplicated and offset the <em><strong>Page_1</strong></em> model to make a very simple book.</p>
<ul><em> </em></ul>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="281" 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=12556505&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="500" height="281" src="http://vimeo.com/moogaloop.swf?clip_id=12556505&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Again, nothing overly advanced here but I&#8217;ve found this method useful in all sorts of situations where I&#8217;ve needed to control the shape of a curve and haven&#8217;t wanted to use shape animation or a bone setup. Hope someone finds it helpful. Crits and comments welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holyfingers.co.uk/main/2010/06/simple-page-turn-setup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Softimage ICE Basics: A simple emitter from scratch.</title>
		<link>http://www.holyfingers.co.uk/main/2009/07/softimage-ice-basics-a-simple-emitter-from-scratch/</link>
		<comments>http://www.holyfingers.co.uk/main/2009/07/softimage-ice-basics-a-simple-emitter-from-scratch/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 10:51:30 +0000</pubDate>
		<dc:creator>Nick</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Softimage]]></category>

		<guid isPermaLink="false">http://www.holyfingers.co.uk/main/?p=230</guid>
		<description><![CDATA[<p>I&#8217;ve recently started using ICE pretty regularly at work, nothing too complicated so far, mostly for controlling groups of instanced geometry like soap bubbles floating through the air and lines of marching ants. With the ants especially It became apparent that the default emitters had a couple of interesting &#8220;features&#8221; that would cause problems, getting [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started using ICE pretty regularly at work, nothing too complicated so far, mostly for controlling groups of instanced geometry like soap bubbles floating through the air and lines of marching ants. With the ants especially It became apparent that the default emitters had a couple of interesting &#8220;features&#8221; that would cause problems, getting a predictable, steady, stream of particles to come out at say, 1 per second, for example, was much more difficult than anticipated. So with some digging around and a point in the right direction from one of the many nice folk at <a href="http://www.xsibase.com/forum/index.php?board=34;action=display;threadid=39550" target="_blank">XSI Base</a>, I set about making my own emitter from scratch. Since at the time I couldn&#8217;t find any tutorials that explained the process from start to finish (although <a href="http://withanar.blogspot.com/2009/03/introductionthe-supplied-factory.html" target="_blank">this</a> was very helpful) I thought I&#8217;d write up my own. The following tutorial assumes you know Softimage and that you&#8217;ve perhaps had a poke around in ICE without delving in too far, it sets out to take you from an empty pointcloud to a simple particle emitter compound you can export and use again.<span id="more-230"></span></p>
<p>First things first, open yourself up a nice new scene and create an empty Point Cloud.</p>
<ul>
<li><em>Get &gt; Primitive &gt; Point Cloud &gt; Empty</em></li>
</ul>
<p>With this still selected, pressing <em>Alt-9</em> will bring up the ICE Tree, very empty looking at the moment, our pointcloud needs a few basic things before we get started.</p>
<ul>
<li><em>Create  &gt; Simulated Ice Tree</em></li>
</ul>
<p>If you&#8217;re not familiar at all with ICE, the little green square that has just appeared is an <strong>ICETree</strong> node and all attributes and systems that you set up will be made from similar nodes and compounds thereof and they all have to come through this little chap. Next, as we are going to want our particles to move around, we need a simulation node. ICE has a few hundred different nodes to pick from, all arranged in sections on the left of the ICE Tree window, you can click through the different menus to find the particular node your after but a much quicker way is to use the search bar at the top which will update and narrow down all the nodes you can select from as you type.</p>
<ul>
<li>The node we&#8217;re looking for is called <strong>Simulate Particles</strong>. Once you&#8217;ve found it drag it into the ICETree.</li>
<li>Drag connect from <strong>Simulate Particles</strong><em>.Simulate</em> -to-<strong><em> </em>ICETree<em>.</em></strong><em>New (Port1)</em></li>
</ul>
<p>The <strong>ICETree</strong> node will expand to accommodate as many Ports as you need, either like you&#8217;ve just done by plugging a node into a <em>New (port#)</em> or by right clicking an existing one and selecting <em>Insert Port Before</em> or <em>Insert Port After</em>, although not always strictly necessary it&#8217;s good practice to keep your <strong>Simulate</strong> node to the bottom. Now we have the basics in place we need a few more nodes to create the particles themselves.</p>
<ul>
<li>Drag a <strong>3d Vector</strong>, an<strong> Add Point</strong>, an<strong> Every Nth Frame</strong>,<strong> </strong>a<strong> Set Data</strong>,<strong> </strong>and an<strong> If </strong>node into the ICETree.</li>
</ul>
<p>Your tree should look something like this:</p>
<p style="text-align: justify;"><img src="http://www.holyfingers.co.uk/main/wp-content/media/ICETree1.jpg" alt="" width="500" height="338" /></p>
<p>Some of these nodes have self explanatory names, others not so much, the first important one is the <strong>Add Point</strong>, which adds points in a continuous stream (in this case points are just another name for particles). It also provides ports for control over where they appear <em>(Positions#)</em> and what happens every time one is created <em>(On Creation#). </em>For starters we can use the <strong>3D Vector</strong> node to dictate where our particles are going to emit from.</p>
<ul>
<li>Drag connect from <strong>3D Vector</strong>.<em>Result</em> -to- <strong>Add Point</strong>.<em>Positions1</em></li>
<li>Drag connect from <strong>Add Point</strong><em>.Add</em> -to- <strong>ICETree</strong>.<em>Port1</em></li>
</ul>
<p>At this stage if you play your timeline you&#8217;ll see a little dot. Hooray! It lives! Just like you asked, a stream of points is being added at the 3D vector &lt;0, 0, 0&gt;, the origin of the scene. If you want you can double click the <strong>3D Vector</strong> node and input your own values, playing back the timeline from the start will result in the points being added at the new position instead. Dots are all well and good, but for something a little more interesting we can use the <strong>Set Data</strong> node to change some attributes. By default the Set Data node has one empty <em>Value</em> that it &#8220;sets&#8221; but, just like the <strong>ICETree</strong> node, it expands as per your requirements, and can be used to control hundreds of different attributes (There&#8217;s a list <a href="http://softimage.wiki.softimage.com/index.php/ICE_Attribute_Reference" target="_blank">here</a>). Nearly everything in ICE is done by Getting and Setting Data. For starters we&#8217;ll be wanting to set<em> Self.PointVelocity</em> so our particles will move. ICE uses the same dot syntax as everything else in XSI and in this situation we want our <strong>Set Data</strong> node to act on the pointcloud it lives in so we need to make sure <em>Self.</em> is at the beginning of our attributes.</p>
<ul>
<li>Double click the <strong>Set Data </strong>node</li>
<li>In the empty text box beside <em>Reference</em>, type <em>self</em></li>
<li>Click the <em>Explorer</em> button, expand<em> Point Cloud</em>, select <em>Pointvelocity</em>.</li>
<li>Set the <em>self.PointVelocity</em> <em>Y </em>value to 1</li>
<li>Drag connect <strong>Set Data</strong>.<em>Execute</em> -to- <strong>Add Point</strong>.<em>On Creation1</em></li>
</ul>
<p>If you play the timeline from the start again we can now see a constant stream of dots moving up in Y from our 3D vector. The attributes we are setting with the Set Data node are being set per particle on their creation, hence using the <em>On Creation</em> port on the <strong>Add Point</strong> node. At this stage you can add whatever other attributes you might need for your cloud.</p>
<ul>
<li>Right click on <strong>Set Data</strong>.<em>self.PointVelocity</em>, select <em>Insert Port Before</em> or <em>After </em></li>
<li>Follow the steps as for <em>self.PointVelocity</em> only pick the different attributes you require, common ones include <em>Color</em>, <em>Shape</em>, <em>Size</em> and, if you&#8217;re going to be using forces, <em>Mass</em>.</li>
<li>For each new attribute you&#8217;ll need to insert a new port.</li>
</ul>
<p>You&#8217;ll notice different attributes open up their own respective options within the <strong>Set Data</strong> node, handy. Your ICETree should now resemble this:</p>
<p style="text-align: justify;"><a href="http://www.holyfingers.co.uk/blog/wp-content/gallery/gallery/Sketchbook_1.jpg"><img src="http://www.holyfingers.co.uk/main/wp-content/media/ICETree2.jpg" alt="" width="500" height="750" /></a></p>
<p>Currently all our particles are being added in a continuous stream every frame by the <strong>Add Point</strong> node, we can impose some control on this using our other two remaining nodes, the <strong>Every Nth Frame</strong> and the <strong>If</strong>. The <strong>If </strong>node provides us with the means to define a <em>Condition</em> and two ports to execute in the event this condition is met or not; <em>If True</em> and <em>If False</em> respectively. In this case <strong>Every Nth Frame</strong> will be our condition, essentially every certain number of frames <em>(N)</em> the condition will be true and we can tell the <strong>Add Point</strong> node to do its thing, otherwise to sit still and do nothing.</p>
<ul>
<li>Disconnect <strong>Add Point</strong>.<em>Add</em> -from- <strong>ICETree</strong>.<em>Port1 </em></li>
<li>Drag connect <strong>Add Point</strong>.Add -to- <strong>If</strong>.<em>If True</em></li>
<li>Drag<em> </em>connect <strong>Every Nth Frame</strong>.<em>Result</em> -to- <strong>If</strong>.<em>Condition</em></li>
<li>Drag connect <strong>If</strong>.<em>Result</em> -to- <strong>ICETree</strong>.<em>Port1</em></li>
</ul>
<p style="text-align: justify;"><a href="http://www.holyfingers.co.uk/main/wp-content/media/ICETree3.jpg"><img src="http://www.holyfingers.co.uk/main/wp-content/media/ICETree3.jpg" alt="" /></a></p>
<p>The default value for <em>N</em> is 9 so if you play your timeline from the start you will see that a particle is now emitted once every 9th frame. At this stage our cloud is pretty much finished, we have control over all the attributes of the particles emitted like size and shape and color, where they are emitted from and how often. If you&#8217;re planning on using this emitter again or sharing it with someone else however, it could do with a bit of tidying up. This is where compounds are very useful, they allow us to wrap up multiple nodes within one single node and export them.</p>
<ul>
<li>Select everything except the <strong>ICETree</strong> and the <strong>Simulate Particles</strong> nodes</li>
<li>From the top menu bar select <em>Compounds &gt; Create Compound</em></li>
<li>Right click the new <strong>CompoundNode, </strong>select <em>Compound Properties</em></li>
<li>Give your new compound a name eg. <em>Simple Emitter</em>.</li>
</ul>
<p>At the moment all our settings are hidden away inside our new <strong>SimpleEmitter</strong> node, and this can be exported for use again as is, for even more handiness though, we can choose to expose some settings so attributes can be changed without having to open up the compound every time. To start with we&#8217;ll expose the <em>N Value</em> of the <strong>Every Nth Frame</strong> node and give it a friendlier name.</p>
<ul>
<li>Right click the <strong>Simple Emitter</strong> node, select Edit Compound</li>
<li>Drag connect the <em>Expose Input </em>port -to- <strong>Every Nth Frame</strong>.<em>N Value</em></li>
<li>Right click on the newly created <em>N Value </em>port on the left and select <em>Rename</em></li>
<li>Name your port eg. Emit Every Frame</li>
<li>Close the compound with the X in the top left.</li>
</ul>
<p>Now when you double click the <strong>Simple Emitter</strong> compound you can change the custom attribute <em>Emit Every Frame</em> with its own little slider. You can repeat these steps for the <strong>3D Vector.</strong><em>Value</em> and the attributes on the <strong>Set Data</strong> node, giving each of them names of your choice, you should end up with something like this:</p>
<p style="text-align: justify;"><img src="http://www.holyfingers.co.uk/main/wp-content/media/Compound1.jpg" alt="" width="500" height="424" /></p>
<p>Notice how much easier it is to read the <strong>Simple Emitter</strong> menu with everything in one place and all those exposed references hidden. You might also notice I took the opportunity to spell Colour correctly. <img src='http://www.holyfingers.co.uk/main/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Well that&#8217;s it for now, my first tutorial, I did say it was pretty basic, but I hope someone out there finds it in some way helpful. Crits and comments welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holyfingers.co.uk/main/2009/07/softimage-ice-basics-a-simple-emitter-from-scratch/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

