{"id":33,"date":"2007-08-08T23:21:42","date_gmt":"2007-08-09T06:21:42","guid":{"rendered":"http:\/\/renderwonk.com\/blog\/index.php\/archive\/curl-noise\/"},"modified":"2015-08-22T14:05:08","modified_gmt":"2015-08-22T21:05:08","slug":"curl-noise","status":"publish","type":"post","link":"https:\/\/renderwonk.com\/blog\/index.php\/archive\/curl-noise\/","title":{"rendered":"Curl Noise"},"content":{"rendered":"<p>I saw the presentation of the paper &#8220;Curl Noise for Procedural Fluid Flow&#8221;  on Tuesday. I&#8217;ve wanted to use velocity fields to advect particles in  games for quite a while now, including procedural noise fields. Naively I  thought I would want to use Perlin noise, however, it turns out that  Perlin noise velocity fields aren&#8217;t the best choice since they have  &#8216;sinks&#8217; where all of the particles will eventually languish. The &#8216;Curl  Noise&#8217; paper cleverly presents a noise which is divergence-free by  construction (since it is defined as the curl of a potential field). More  importantly, it looks very fluid-like and convincing; either laminar or  turbulent flow are possible with a fine degree of control. The authors  also present methods to have the flow go around objects (even moving  objects). This looks very relevant for games &#8211; I will read the paper more  carefully when I get home for the implementation details (the paper,  animations and example code are available <a href=\"http:\/\/www.cs.ubc.ca\/~rbridson\/\">here<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I saw the presentation of the paper &#8220;Curl Noise for Procedural Fluid Flow&#8221; on Tuesday. I&#8217;ve wanted to use velocity fields to advect particles in games for quite a while now, including procedural noise fields. Naively I thought I would want to use Perlin noise, however, it turns out that Perlin noise velocity fields aren&#8217;t [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[],"class_list":["post-33","post","type-post","status-publish","format-standard","hentry","category-rendering","category-siggraph2007"],"_links":{"self":[{"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=33"}],"version-history":[{"count":1,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions\/58"}],"wp:attachment":[{"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/renderwonk.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}