{"id":7640,"date":"2011-12-25T23:56:43","date_gmt":"2011-12-26T04:56:43","guid":{"rendered":"http:\/\/blog.kenperlin.com\/?p=7640"},"modified":"2011-12-26T00:58:11","modified_gmt":"2011-12-26T05:58:11","slug":"making-things-move-part-4","status":"publish","type":"post","link":"https:\/\/blog.kenperlin.com\/?p=7640","title":{"rendered":"Making things move, part 4"},"content":{"rendered":"<p>In a way, synthesizing procedural animation is a lot like synthesizing music: you create signals, and then you run those signals through filters to give them character.  This is how we will animate our little eyeball friend &#8212; I guess we might as well call him iGor. \ud83d\ude42<\/p>\n<p>To make iGor look around, we need to synthesize a signal that will create a sort of unpredictable yet purposeful movement &#8212; as though he is looking at various things around him.   To do this, we will need two tools: <i>noise<\/i> and <i>gain<\/i>.<\/p>\n<p>The noise signal is the same noise I created to make procedural textures, except that we will vary this signal just over one dimension (time), rather than three dimensions (space).  Noise by itself is rather flavorless &#8212; it just creates a signal that goes up and down over time smoothly but unpredictably:<\/p>\n<p><center><img decoding=\"async\" src=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2011\/12\/noise1.jpg\"><\/center><\/p>\n<p>But you can then shape this flavorless signal in different ways to get what you want.  In our case, we want iGor to appear purposeful, so we will add <i>gain<\/i> to the noise to make it move more decisively:  When the noise signal goes up, it will go up faster, and when it goes down, it will also go down faster.  The more gain we add to a character&#8217;s movement, the more decisive that movement will seem.<\/p>\n<p>You can see how this works by clicking on the image below to run a Java applet:<\/p>\n<p><center><a href=http:\/\/mrl.nyu.edu\/~perlin\/noisecurve1 target=1><img decoding=\"async\" src=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2011\/12\/noise2.jpg\"><\/a><\/center><\/p>\n<p>As you play with the applet, try varying the value of gain.  You will see that after the gain filter is applied, the <i>range<\/i> of values stays the same.  But the high gain noise signal spends more time near its lowest and highest values, and less time near the boring middle values.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a way, synthesizing procedural animation is a lot like synthesizing music: you create signals, and then you run those signals through filters to give them character. This is how we will animate our little eyeball friend &#8212; I guess we might as well call him iGor. \ud83d\ude42 To make iGor look around, we need &hellip; <a href=\"https:\/\/blog.kenperlin.com\/?p=7640\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Making things move, part 4&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/7640"}],"collection":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7640"}],"version-history":[{"count":7,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/7640\/revisions"}],"predecessor-version":[{"id":7649,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/7640\/revisions\/7649"}],"wp:attachment":[{"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}