{"id":212,"date":"2013-04-17T14:44:10","date_gmt":"2013-04-17T18:44:10","guid":{"rendered":"http:\/\/www.tks-designs.com\/blog\/?p=212"},"modified":"2013-04-17T14:50:08","modified_gmt":"2013-04-17T18:50:08","slug":"houdini-animation-curves-otl","status":"publish","type":"post","link":"https:\/\/www.tks-designs.com\/blog\/?p=212","title":{"rendered":"Houdini Animation Curves otl"},"content":{"rendered":"<p><a href=\"http:\/\/www.tks-designs.com\/blog\/wp-content\/uploads\/2013\/04\/curves1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.tks-designs.com\/blog\/wp-content\/uploads\/2013\/04\/curves1-1024x733.gif\" alt=\"curves\" width=\"620\" height=\"443\" class=\"alignnone size-large wp-image-213\" srcset=\"https:\/\/www.tks-designs.com\/blog\/wp-content\/uploads\/2013\/04\/curves1-1024x733.gif 1024w, https:\/\/www.tks-designs.com\/blog\/wp-content\/uploads\/2013\/04\/curves1-300x214.gif 300w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>I&#8217;ve recently been working on an idea that requires me to do separate luminance values in an image into <em>x<\/em> discreet &#8220;steps&#8221;, such as 0-12. However I don&#8217;t want to do the distribution linearly (read: equally distributed), I need to account for the fact that <a href=\"http:\/\/www.tks-designs.com\/blog\/?p=26\" target=\"_blank\">luminance is non-linear<\/a>.<\/p>\n<p><!--more--><\/p>\n<p>So I created this SOP otl for houdini that does exactly that &#8211; interpolates one range of values to another using chosen curves (listed above). It can read discreet values, or values from point attributes, and is rockin&#8217; fast (houdini&#8217;s vex operators are pretty amazing). It was created in 12.5&#8217;s new &#8220;point wrangler&#8221;<sup><a href=\"#footnote_0_212\" id=\"identifier_0_212\" class=\"footnote-link footnote-identifier-link\" title=\"If you&rsquo;ve ever tried to write an if statement using VOP SOP, you know how maddeningly confusing it can be. In vex it&rsquo;s just as simple as it is in any other language, though it may be harder for less savvy users to understand. I&rsquo;d definitely recommend diving into some straight VEX operators if you&rsquo;re interested in getting at the heart of houdini\">1<\/a><\/sup>, so it&#8217;s most likely incompatible with any previous version.<\/p>\n<h2><a href=\"..\/otls\/mathCurves.otl\">mathCurves.otl<\/a><\/h2>\n<p>Check out the documentation <a href=\"http:\/\/www.tks-designs.com\/otls\/mathCurves.html\" target=\"_blank\">here<\/a>.<\/p>\n<ol class=\"footnotes\"><li id=\"footnote_0_212\" class=\"footnote\">If you&#8217;ve ever tried to write an <em>if<\/em> statement using VOP SOP, you know how maddeningly confusing it can be. In vex it&#8217;s just as simple as it is in any other language, though it may be harder for less savvy users to understand. I&#8217;d definitely recommend diving into some straight VEX operators if you&#8217;re interested in getting at the heart of houdini [<a href=\"#identifier_0_212\" class=\"footnote-link footnote-back-link\">&#8617;<\/a>]<\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve recently been working on an idea that requires me to do separate luminance values in an image into x discreet &#8220;steps&#8221;, such as 0-12. However I don&#8217;t want to do the distribution linearly (read: equally distributed), I need to account for the fact that luminance is non-linear.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"kia_subtitle":"being an operator that can extrapolate one set of values to another using curves","footnotes":""},"categories":[2,9,14,12],"tags":[],"class_list":["post-212","post","type-post","status-publish","format-standard","hentry","category-houdini","category-math","category-otls","category-technical-direction"],"_links":{"self":[{"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=212"}],"version-history":[{"count":7,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/212\/revisions"}],"predecessor-version":[{"id":222,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/212\/revisions\/222"}],"wp:attachment":[{"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tks-designs.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}