{"id":423,"date":"2010-06-15T13:01:58","date_gmt":"2010-06-15T12:01:58","guid":{"rendered":"http:\/\/www.holyfingers.co.uk\/main\/?p=423"},"modified":"2019-02-02T16:39:17","modified_gmt":"2019-02-02T16:39:17","slug":"simple-page-turn-setup","status":"publish","type":"post","link":"https:\/\/www.holyfingers.co.uk\/main\/blog\/2010\/06\/15\/simple-page-turn-setup\/","title":{"rendered":"Simple page-turn setup in Softimage\u2026"},"content":{"rendered":"<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;<!--more--><\/p>\n<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>\n<ul>\n<li><em>Primitive<\/em> &gt; <em>Polygon Mesh<\/em> &gt;<em> Grid<\/em><\/li>\n<li><em>Length<\/em> <em>U<\/em> = 9, <em>Length V <\/em>= 10<\/li>\n<li><em>Subdivisions<\/em> <em>U <\/em>= 25, <em>Subdivisions<\/em> <em>V <\/em>= 2.<\/li>\n<\/ul>\n<p>To ensure everything matches up nicely we&#8217;re extracting our deformer curve from the mesh itself<\/p>\n<ul>\n<li>select the central edges running in<em> X <\/em><\/li>\n<\/ul>\n<p><em><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/tutorials\/page_turn_1.jpg\" alt=\"page_turn_1\" width=\"648\" \/><\/em><\/p>\n<p>&nbsp;<\/p>\n<p>From the <em>Create<\/em> menu<\/p>\n<ul>\n<li><em>Curve<\/em> &gt;<em> Extract From Edges<\/em><\/li>\n<li><em>Subdivision<\/em> = 0<\/li>\n<\/ul>\n<p>With this new curve still selected, again from the <em>Create<\/em> menu<\/p>\n<ul>\n<li><em>Curve<\/em> &gt;<em> Fit On Curve<\/em><\/li>\n<li><em>Subdivision<\/em> = 1<\/li>\n<li><em>Inputs<\/em> &gt; <em>Delete<\/em><\/li>\n<\/ul>\n<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\u00a0 <strong><em>DeformerCrv<\/em><\/strong> and <strong><em>Page<\/em><\/strong> respectively. Now to setup the deformation,<\/p>\n<ul>\n<li>Select <strong><em>Page<\/em><\/strong><\/li>\n<\/ul>\n<p>In the <em>Modify<\/em> menu<\/p>\n<ul>\n<li><em>Deform<\/em> &gt; <em>by Curve<\/em><\/li>\n<li>Select<em> <strong>DeformerCrv<\/strong><\/em><\/li>\n<\/ul>\n<p>In the <em>Curve Deform<\/em> menu that opens<\/p>\n<ul>\n<li><em>Axis = X<\/em><\/li>\n<li><em>Translation Along Curve = 4.5 <\/em><\/li>\n<li><em>Constraint &gt; Constrain To Deformer &gt; On<\/em><\/li>\n<\/ul>\n<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>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/tutorials\/page_turn_2.jpg\" alt=\"page_turn_2\" width=\"648\" \/><\/p>\n<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>\n<ul>\n<li>Select <strong><em>DeformerCrv<\/em><\/strong><\/li>\n<li>Press <strong>T<\/strong> to see its points<\/li>\n<li>Select <em><strong>DeformerCrv<\/strong>.<strong>Point 1<\/strong><\/em> (it should be second from the left)<\/li>\n<li><em>Edit<\/em> &gt; <em>Create Cluster with Center<\/em><\/li>\n<li>Repeat for points<em> <strong>2<\/strong> <\/em>and<em> <strong>LAST<\/strong><\/em><\/li>\n<\/ul>\n<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>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/tutorials\/page_turn_4.jpg\" alt=\"page_turn_4\" width=\"648\" \/><\/p>\n<p>We&#8217;ll now use circular curves to limit the page&#8217;s\u00a0 motion and to use as simple controls.<\/p>\n<ul>\n<li>Primitive &gt; Curve &gt; Circle<\/li>\n<li>Repeat 4 times<\/li>\n<li>Give the circles <em>Radii<\/em> of 9, 6, 3 and 1 respectively<\/li>\n<li>Snap each to <em><strong>DeformerCrv<\/strong>.Point 0<\/em><\/li>\n<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>\n<\/ul>\n<p>You will notice that three of the circles intersect our cluster nulls<\/p>\n<ul>\n<li><em>Constrain<\/em> &gt; <em>Parent<\/em> each circle over its corresponding null<\/li>\n<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>\n<li>Select<em> <strong>Turn<\/strong>, <strong>DeformerCrv<\/strong> <\/em>and<em> <strong>Page<\/strong><\/em><\/li>\n<li><em>Edit <\/em>&gt;<em> Model &gt; New Model<\/em><\/li>\n<\/ul>\n<p>Name the new model <strong><em>Page_1<\/em><\/strong>, your hierarchy should look like this:<\/p>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/tutorials\/page_turn_3.jpg\" alt=\"page_turn_3\" width=\"648\" \/><\/p>\n<p>For ease of use later on we&#8217;ll adjust this model&#8217;s centre point<\/p>\n<ul>\n<li>Select <em><strong>Page_1<\/strong><\/em><\/li>\n<li><em>Constrain <\/em>&gt; <em>ChldComp<\/em> = On<\/li>\n<li><em>Center <\/em>(from the <em>Select<\/em> menu)<em><br \/>\n<\/em><\/li>\n<li>Snap the centre point to <em><strong>DeformerCrv<\/strong>.Point 0<\/em><\/li>\n<\/ul>\n<p>At this stage it&#8217;s also\u00a0 a good idea to zero out any transforms so select everything (easiest way is to make sure you&#8217;re in Wireframe mode\u00a0 in your viewport and drag select)<\/p>\n<ul>\n<li><em>Transform<\/em> &gt; <em>Set Neutral Pose<\/em><\/li>\n<\/ul>\n<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>\n<p><img decoding=\"async\" class=\"ngg-singlepic ngg-none\" src=\"https:\/\/www.holyfingers.co.uk\/main\/wp-content\/gallery\/tutorials\/page_turn_5.jpg\" alt=\"page_turn_5\" width=\"648\" \/><\/p>\n<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>\n<p><object width=\"500\" height=\"281\" 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=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=\"648\" height=\"365\" 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=\"allowfullscreen\" \/><\/object><\/p>\n<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>\n","protected":false},"excerpt":{"rendered":"<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 &#8230; <a title=\"Simple page-turn setup in Softimage\u2026\" class=\"read-more\" href=\"https:\/\/www.holyfingers.co.uk\/main\/blog\/2010\/06\/15\/simple-page-turn-setup\/\" aria-label=\"Read more about Simple page-turn setup in Softimage\u2026\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":2648,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[12],"tags":[43,18],"class_list":["post-423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-3d","tag-softimage"],"_links":{"self":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/comments?post=423"}],"version-history":[{"count":75,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/423\/revisions"}],"predecessor-version":[{"id":2650,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/posts\/423\/revisions\/2650"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/media\/2648"}],"wp:attachment":[{"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/media?parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/categories?post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.holyfingers.co.uk\/main\/wp-json\/wp\/v2\/tags?post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}