{"id":3857,"date":"2010-05-02T07:00:49","date_gmt":"2010-05-02T05:00:49","guid":{"rendered":"http:\/\/4eyes.code66.se\/?p=3857"},"modified":"2010-04-28T11:06:02","modified_gmt":"2010-04-28T09:06:02","slug":"making-a-stone-bridge-in-filterforge","status":"publish","type":"post","link":"http:\/\/4eyes.code66.se\/?p=3857","title":{"rendered":"Making a stone bridge in FilterForge"},"content":{"rendered":"<p>Today, I realized that my docks needs some bridges, as I will make a canal like tile type also. I though maybe I can make a bridge in <a href=\"P\u00e5 en fr\u00e5ga fr\u00e5n Ekot i morse om de r\u00f6dgr\u00f6na skulle inf\u00f6ra f\u00f6rm\u00f6genhetsskatt sa Maria W. : Vi ska inte inf\u00f6ra f\u00f6rm\u00f6genhetsskatt - vi ska inf\u00f6ra skatt p\u00e5 f\u00f6rm\u00f6gna. \" target=\"_blank\">FilterForge<\/a>, just as a cool test.<\/p>\n<p><!--more-->So, this can be done in both FilterForge 1.0 and the 2.0 beta as I do not use any 2.0 specific components. As you might notice, there are no user inputs in this filter, I will eventually add some if I decide to make the filter public, this is a quick filter.<\/p>\n<p>First, I create a <strong>Stones Noise<\/strong>, and set the two colors to a brownish grey and a darker grey, and the size to rathe small, this will be the surface for the side of the bridge. Then, I created a <strong>Perlin Noise<\/strong>, which mix a brown and a green color, to make a moss filled mortar. now, I hook those up to a <strong>Tiles<\/strong> component, to make stone tiles. I manually set the Repeat X and Y and the Mortar width and Bevel width.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3867\" title=\"ffb01\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb01.jpg\" alt=\"\" width=\"400\" height=\"420\" \/><\/a><\/p>\n<p>Now I do almost the same thing again, but with a different stone texture and a brownish mortar, no moss, and a Tiles component with a different Repeat setting. This will be the actual bridge surface.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3866\" title=\"ffb02\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb02.jpg\" alt=\"\" width=\"400\" height=\"378\" \/><\/a><\/p>\n<p>To give the viewer the illusion of the sides casting shadows on the bridge surface, I use a <strong>Profile Gradient<\/strong>, that goes from black to the bridge surface. To control the <em>profile<\/em> of the <strong>Profile Gradient<\/strong>, I use a <strong>Gaussian<\/strong> wave component. Now, that would render a perfect shadow, but nature isn&#8217;t perfect, so I created a <strong>Perlin Noise<\/strong>, configured with a lot of <em>Roughness<\/em> and the two colors light. I then feed the <em>Width<\/em> input of the <strong>Gaussian<\/strong> wave with the output from the <strong>Perlin Noise<\/strong>, which makes the shadow edge a little random, and more natural.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb03.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3865\" title=\"ffb03\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb03.jpg\" alt=\"\" width=\"400\" height=\"326\" \/><\/a><\/p>\n<p>Now I need something for the height map, and I use the same setup as for making the actual surface map, but use a more clamped <strong>Stones <\/strong><strong>Noise<\/strong> to keep the height within some reasonable \u00a0bounds. I also use a <strong>Linear<\/strong> wave to control the bevel shape. This is for the floor of the bridge.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb04.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3864\" title=\"ffb04\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb04.jpg\" alt=\"\" width=\"410\" height=\"360\" \/><\/a><\/p>\n<p>For the bridge side, I use the same technique, but with a lighter shade.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb05.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3863\" title=\"ffb05\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb05.jpg\" alt=\"\" width=\"400\" height=\"324\" \/><\/a><\/p>\n<p>Now, I assemble the basic bridge image, and height map using <strong>Profile Gradient<\/strong> components. As I&#8217;ve written before, this is one of the most versatile components in FilterForge, it can be used to achieve so many different tasks. As you can see, the shadow we added looks like a shadow, and the two different height maps now makes it clear that the floor is lower (darker) than the sides. I control the <em>Profile<\/em> by using a <strong>Impulse<\/strong> wave that I configure to be very sharply cut.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb06.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3862\" title=\"ffb06\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb06.jpg\" alt=\"\" width=\"400\" height=\"371\" \/><\/a><\/p>\n<p>But \u00a0the bridge walls are way to wide, so I used, guess what, yes, <strong>Profile Gradient<\/strong>. This time I&#8217;ve configured color 1, low, \u00a0to be transparent for the surface one, and black for the height map one. The <strong>Impulse <\/strong>is still sharp, but a little wider. The keep eye might notice that I&#8217;ve added a soft gradient over the height map, using another <strong>Profile Gradient<\/strong>, to make the bridge a little curved. It wont show up unless you render it in FilterForge 2.0 and use the Ambient Occlusion and some reflections, but that is beyond todays tasks.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb07.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3861\" title=\"ffb07\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb07.jpg\" alt=\"\" width=\"473\" height=\"399\" \/><\/a><\/p>\n<p>And this is the bridge, when I&#8217;ve set the image size if FilterForge to be 600&#215;1200. I also added a soft shadow under the bridge, and as FilterForge, specially <strong>Profile Gradients<\/strong>, does not handle non square images perfectly, the shadow is repeated, but that only looked good. I use the same methos to make the outer shadow non linear as I did for the inner shadow.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffn08.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3860\" title=\"ffn08\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffn08.jpg\" alt=\"\" width=\"400\" height=\"800\" \/><\/a><\/p>\n<p>And here is the bridge on one of the tiles for <strong>The Neverending Docks<\/strong>.<\/p>\n<p><a href=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb09.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3859\" title=\"ffb09\" src=\"http:\/\/4eyes.code66.se\/wp-content\/uploads\/2010\/04\/ffb09.jpg\" alt=\"\" width=\"396\" height=\"688\" \/><\/a><\/p>\n<p>I will have to add some more details to this one, but the basic idea worked, make a bridge in FilterForge.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, I realized that my docks needs some bridges, as I will make a canal like tile type also. I though maybe I can make a bridge in FilterForge, just as a cool test.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8],"tags":[13],"class_list":["post-3857","post","type-post","status-publish","format-standard","hentry","category-mapmaking","category-tools-of-the-trade","tag-filterforge"],"_links":{"self":[{"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/posts\/3857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3857"}],"version-history":[{"count":4,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/posts\/3857\/revisions"}],"predecessor-version":[{"id":3870,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=\/wp\/v2\/posts\/3857\/revisions\/3870"}],"wp:attachment":[{"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3857"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4eyes.code66.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}