{"id":81,"date":"2017-02-25T10:15:37","date_gmt":"2017-02-25T10:15:37","guid":{"rendered":"http:\/\/cliffnordman.com\/blog\/?p=81"},"modified":"2019-02-26T11:32:01","modified_gmt":"2019-02-26T11:32:01","slug":"procedurally-generated-bodypaint","status":"publish","type":"post","link":"https:\/\/cliffnordman.com\/blog\/2017\/02\/25\/procedurally-generated-bodypaint\/","title":{"rendered":"Procedurally-generated bodypaint"},"content":{"rendered":"<p>It&#8217;s text, but NSFW text.\u00a0 <a href=\"http:\/\/cliffnordman.com\/paint\/\">Procedural Paint-Job Generator.<\/a><\/p>\n<p>This idea came to me in the wee hours of the morning.\u00a0 I got out of bed, coded all morning, and went back to sleep after publishing it.<\/p>\n<p>I&#8217;ve been creating a vocabulary to describe the body paint at the Fremont Solstice Parade for a while.\u00a0\u00a0 I planned to use that in some sort of database-driven visualization for Solstice Parade photos, somewhat like Atlanta Fashion Police.\u00a0 I still plan to do that, but this project goes the other way.\u00a0 Instead of describing an existing paint-job with the vocabulary, I use the vocabulary to create a description of a hypothetical paint-job.\u00a0 The plausibility of the paint-jobs varies, but that&#8217;s part of the charm.I used Kate Compton&#8217;s Tracery to generate the descriptions.\u00a0 I started by adding all the words I could think of, grouped logically into colors, color modifiers, patterns, animals, vehicles, and so on.\u00a0 Then I built phrases that combined those elements, built the phrases into clauses, and then into sentences.\u00a0 It can suggest individual paint-jobs as well as groups, and pluralizing complex phrases is tricky!\u00a0 The following sentences have identical meanings, but must be modified differently to be pluralized.<\/p>\n<ul>\n<li>green and bright yellow giraffe<\/li>\n<li>green giraffe with bright yellow spots<\/li>\n<\/ul>\n<p>Putting an &#8220;S&#8221; at the end of the phrase doesn&#8217;t always work.\u00a0 There are also things that are always plural, like &#8220;roller skates&#8221;.<\/p>\n<ul>\n<li>You get your roller skates.<\/li>\n<li>You get your bicycle.<\/li>\n<li>You rent roller skates for your team.<\/li>\n<li>You rent bicycles for your team.<\/li>\n<\/ul>\n<p>English is tricky!<\/p>\n<p>Whenever the generator recommends a pattern, it may recommend two patterns instead.\u00a0 Those two could also recommend two more, so there&#8217;s no guarantee the recursion ever ends.\u00a0 Browsers have a lot of memory, text doesn&#8217;t take much memory, and it&#8217;s funny to get a big paragraph recommending 20 different patterns in a single paint-job, so I leave it in.<\/p>\n<p>The paint-jobs produced by this generator are by turns absurd, practical, amusing, and shocking.\u00a0 What more could a procgen system strive for?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s text, but NSFW text.\u00a0 Procedural Paint-Job Generator. This idea came to me in the wee hours of the morning.\u00a0 I got out of bed, coded all morning, and went back to sleep after publishing it. I&#8217;ve been creating a vocabulary to describe the body paint at the Fremont Solstice Parade for a while.\u00a0\u00a0 I &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/cliffnordman.com\/blog\/2017\/02\/25\/procedurally-generated-bodypaint\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Procedurally-generated bodypaint&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/posts\/81"}],"collection":[{"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":3,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":87,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/posts\/81\/revisions\/87"}],"wp:attachment":[{"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cliffnordman.com\/blog\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}