<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julius Ihle &#187; vfx</title>
	<atom:link href="http://julius-ihle.de/?feed=rss2&#038;tag=vfx" rel="self" type="application/rss+xml" />
	<link>http://julius-ihle.de</link>
	<description>LookDev/Lighting TD &#124; Compositor</description>
	<lastBuildDate>Sun, 18 Jun 2023 07:39:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Guardians of the Galaxy 2 Interview</title>
		<link>http://julius-ihle.de/?p=2423</link>
		<comments>http://julius-ihle.de/?p=2423#comments</comments>
		<pubDate>Sat, 10 Jun 2017 22:39:35 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[berhert forest]]></category>
		<category><![CDATA[breakdown]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[digital doubles]]></category>
		<category><![CDATA[germany]]></category>
		<category><![CDATA[groot]]></category>
		<category><![CDATA[iron lotus]]></category>
		<category><![CDATA[rocket]]></category>
		<category><![CDATA[trixter]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[yondu]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=2423</guid>
		<description><![CDATA[Recently our VFX and Animation Supervisor gave an interview about our work at Trixter on Guardians of the Galaxy 2. It&#8217;s been such an outstanding project&#8230;<p><a href="http://julius-ihle.de/?p=2423" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=2423"><img class="lazyload size-full wp-image-2424 alignleft" data-original="http://julius-ihle.de/wp-content/uploads/2017/06/gotg2breakdown.jpg" alt="gotg2breakdown" width="1280" height="533" /></a>Recently our VFX and Animation Supervisor gave an interview about our work at Trixter on Guardians of the Galaxy 2. It&#8217;s been such an outstanding project for me that I feel the urge to share!<br />
Not only has the work been great, but also the team and the general flow of things! I can&#8217;t express how happy I am to have worked with such a great bunch of people! Special thanks to the management who allowed me to fool around on a larger scale on this project and the extraordinary Lighting &amp; LookDev guys that coped with me when I was drowning in Excel sheets :-)<br />
Have a look at the interview yourself (if you don&#8217;t like reading there are lots of pretty pictures, too!): <a href="http://www.artofvfx.com/guardians-of-the-galaxy-vol-2-simone-kraus-animation-supervisor-alessandro-cioffi-vfx-supervisor-trixter/" target="_blank">INTERVIEW LINK</a></p>
<p>//EDIT: Now there&#8217;s also a really cool VFX and Animation Reel with some fun stuff! <a title="REEL LINK" href="http://www.trixter.de/guardians-of-the-galaxy-vol-2/" target="_blank">REEL LINK</a></p>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=2423</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maintain Constraint Offset in Katana</title>
		<link>http://julius-ihle.de/?p=2409</link>
		<comments>http://julius-ihle.de/?p=2409#comments</comments>
		<pubDate>Tue, 30 May 2017 21:42:02 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[constraining]]></category>
		<category><![CDATA[constraints]]></category>
		<category><![CDATA[foundry]]></category>
		<category><![CDATA[katana]]></category>
		<category><![CDATA[orientconstraint]]></category>
		<category><![CDATA[parentchildconstraint]]></category>
		<category><![CDATA[pointconstraint]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[transformation]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=2409</guid>
		<description><![CDATA[Constraining things in Katana works well, but can seem somewhat limited if you are coming from a full-featured 3D application. One of the things that&#8230;<p><a href="http://julius-ihle.de/?p=2409" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=2409"><img class="lazyload alignleft wp-image-2420 size-full" data-original="http://julius-ihle.de/wp-content/uploads/2017/05/katana_constraint_offset1.jpg" alt="katana_constraint_offset" width="800" height="333" /></a></p>
<p>Constraining things in Katana works well, but can seem somewhat limited if you are coming from a full-featured 3D application. One of the things that can potentially give you headaches is a missing option for &#8220;maintaining offset&#8221; when you are constraining one object or a lightrig to something else. While this is generally not an issue when you are doing LookDev (as your assets most likely have zero&#8217;d out transforms) it can be a bit frustrating to not have that option when you are working on shots, so here&#8217;s my hacky way of maintaining constraint-offsets.<span id="more-2409"></span></p>
<p>Every now and then you have to constraint lights to an object in your scene. Generally the best practice is to create a rig in the <em>Gaffer</em> node and constraint it before adding any lights. That way you don&#8217;t have to worry about fixing anything later. If you are a day-dreamer like me however it may happen that you add a rig and all your lights to your object before you constraint anything:<br />
<a href="http://julius-ihle.de/wp-content/uploads/2017/05/01_KatanaScene.png"><img class="lazyload aligncenter size-full wp-image-2413" data-original="http://julius-ihle.de/wp-content/uploads/2017/05/01_KatanaScene.png" alt="01_KatanaScene" width="1316" height="1016" /></a></p>
<p>&nbsp;</p>
<p>Consequently when you come to the point of constraining your parent rig (which was most likely in the origin) will move to your constraint target and offset all the carefully placed lights you just created:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2017/05/02_PCC.png"><img class="lazyload aligncenter size-full wp-image-2414" data-original="http://julius-ihle.de/wp-content/uploads/2017/05/02_PCC.png" alt="02_PCC" width="1316" height="1016" /></a></p>
<p>&nbsp;</p>
<p>Bummer&#8230; However luckily with a few steps you can re-center your rig to where it was before constraining it.<br />
To do that first of all add a <em>ConstraintResolve</em> Node. This will convert the constraint data into a matrix to give you the actual world-space position. The resulting numbers for the matrix visible in the <em>Attributes-Tab</em> may not really be too much of a help right off the bat. You can add a <em>TransformEdit</em> Node and plug in your constrained rig into the path to to show you the actual transforms:<br />
<a href="http://julius-ihle.de/wp-content/uploads/2017/05/03_CR_xformEdit.png"><img class="lazyload aligncenter size-full wp-image-2415" data-original="http://julius-ihle.de/wp-content/uploads/2017/05/03_CR_xformEdit.png" alt="03_CR_xformEdit" width="1316" height="1016" /></a></p>
<p>&nbsp;</p>
<p>Now that you know where your rig has been moved to you can reverse this transformation. There are a couple of ways to do that but I personally like to do it in a separate rig:<br />
-Add a new child-rig to the rig you have constrained to your object and move all your lights below it<br />
-Copy over the transform values from your <em>TransformEdit</em> Node to your constraintOffset rig and negate them (-22 becomes 22 // 749 becomes -749 // etc.)<br />
-Inverse the <em>transformOrder</em> (<em>Scale Rotate Translate</em> becomes <em>Translate Rotate Scale</em>, etc.) and the <em>rotationOrder</em> (<em>XYZ</em> becomes <em>ZYX</em>, etc.). This is assuming you have used the defaults in your rig &#8211; adjust them if you have used different orders.</p>
<p>This way your constraintOffset rig should be perfectly centered out again and your lights should be where they belong:<br />
<a href="http://julius-ihle.de/wp-content/uploads/2017/05/04_constraintOffset.png"><img class="lazyload aligncenter size-full wp-image-2416" data-original="http://julius-ihle.de/wp-content/uploads/2017/05/04_constraintOffset.png" alt="04_constraintOffset" width="1316" height="1016" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=2409</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDR Prep Tip #1: Painting out Elements near Poles</title>
		<link>http://julius-ihle.de/?p=2283</link>
		<comments>http://julius-ihle.de/?p=2283#comments</comments>
		<pubDate>Sat, 14 Jan 2017 16:17:23 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[hdr]]></category>
		<category><![CDATA[hdri]]></category>
		<category><![CDATA[high dynamic range]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[look development]]></category>
		<category><![CDATA[lookdev]]></category>
		<category><![CDATA[maya]]></category>
		<category><![CDATA[nuke]]></category>
		<category><![CDATA[prep]]></category>
		<category><![CDATA[shading]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=2283</guid>
		<description><![CDATA[I received a question the other day that was asking how I would approach painting out lights from LatLong HDRI&#8217;s that are near the bottom&#8230;<p><a href="http://julius-ihle.de/?p=2283" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=2283"><img class="lazyload  wp-image-2290 alignleft" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/hdrpreptips1.png" alt="hdrpreptips1" width="800" height="333" /></a>I received a question the other day that was asking how I would approach painting out lights from LatLong HDRI&#8217;s that are near the bottom or the top of the image. Anything near those poles will usually be heavily distorted and are a pain to remove if you try to paint on the original map. However there&#8217;s quite an easy way to remove them in Nuke and at the same time get the lights to a nice and rectangular format for using them on area lights.</p>
<p><span id="more-2283"></span></p>
<p>The original question came up under the post of my HDR Prepper Gizmo for Nuke:</p>
<blockquote><p>I have a question, how do you adjust your lights that are skewed and need to be formatted to fit your area lights? Do you adjust your arealights scale to match your bounding boxes? This example is kind of made for this scenario however there are many lights that are distorted and need to be flattened for your arealights. Im curious as to how your workflow solves this.</p></blockquote>
<p>Which is a more than valid question as I have used a very simple-to-work-on example when I was demoing this Gizmo. However more than often in production the HDR&#8217;s you receive will most likely either have lights or other objects you might need to remove at the poles of the LatLong environment map.</p>
<p>A good example for it is this HDR map that I got from <a title="example HDR" href="https://hdrihaven.com/hdri.php?hdri=garage&amp;dl=no" target="_blank">HERE</a>:</p>
<p><img class="lazyload  size-full wp-image-2284 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/00baseHDR.png" alt="00baseHDR" width="1025" height="515" /></p>
<p>&nbsp;<br />
All the lights on the ceiling (especially the one circled in red) would be very hard to paint out like this and you would need to distort it heavily to get it straight and map it on an arealight.</p>
<p>Luckily there&#8217;s a node available in Nuke, that is called SphericalTransform. With this node you can convert between different environment map conventions (Latlong, Mirror ball, etc.). One thing you can do is convert your input Latitude / Longitude map to a cubic map. Visually what you can imagine what it&#8217;s doing is that it seemingly puts you in the middle of the environment map (at the original position of the camera) and allows you to look around from that point of view. The output will be undistorted from the point of view of the camera (provided you set your output format to a square format):</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2017/01/01st_ll_to_cubic.png"><img class="lazyload  size-full wp-image-2285 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/01st_ll_to_cubic.png" alt="01st_ll_to_cubic" width="1277" height="597" /></a></p>
<p>As you can see in this example I rotated my input around so that it looks at the ceiling and directly at the light that I am trying to remove. Now that exact light is nice and square and very easy to paint out:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2017/01/02st_paintout.png"><img class="lazyload  size-full wp-image-2286 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/02st_paintout.png" alt="02st_paintout" width="1282" height="598" /></a></p>
<p>Or you could also use this handy little thingy: <a title="HDR Prepper for Nuke" href="http://julius-ihle.de/?p=156" target="_blank">HDR Prepper Gizmo</a> ;)</p>
<p>Once that is done you can convert it back from <em>Cube</em> to <em>Lat Long map</em> with another Spherical Transform Node. There are 2 things to watch out for to make sure it matches your original HDR orientation:</p>
<ul>
<li>Make sure your <em>Input Rotation Order </em>is the inverse of your first Spherical Transform (e.g. ZXY -&gt; YXZ)</li>
<li>Negate all the numbers from your first Spherical Transform (e.g. 90 becomes -90 and vice-versa)</li>
</ul>
<p>&nbsp;</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2017/01/03st_cubic_to_ll_final_paintover.png"><img class="lazyload aligncenter size-full wp-image-2288" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/03st_cubic_to_ll_final_paintover.png" alt="03st_cubic_to_ll_final_paintover" width="1920" height="875" /></a></p>
<p>&nbsp;</p>
<p>You can then either make sure your alpha is completely opaque before converting it back to LatLong and merge it on top of your original or Keymix it back in in exactly the areas where you need it.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=2283</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Playing with OSL #1: 3D Shading Masks</title>
		<link>http://julius-ihle.de/?p=2266</link>
		<comments>http://julius-ihle.de/?p=2266#comments</comments>
		<pubDate>Tue, 03 Jan 2017 21:35:36 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arnold]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[look development]]></category>
		<category><![CDATA[lookdev]]></category>
		<category><![CDATA[maya]]></category>
		<category><![CDATA[open shading language]]></category>
		<category><![CDATA[shading]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[vray]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=2266</guid>
		<description><![CDATA[I have recently started getting into Shader Writing in OSL (actually rather Pattern Writing just to not get frustrated too quickly :-) ). To start&#8230;<p><a href="http://julius-ihle.de/?p=2266" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=2266"><img class="lazyload alignleft wp-image-2267" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/osl_pmask.jpg" alt="osl_pmask" width="800" height="333" /></a></p>
<p>I have recently started getting into Shader Writing in OSL (actually rather Pattern Writing just to not get frustrated too quickly :-) ). To start things off I wrote a simple Pattern that lets you create a life 3d mask in your shading network that can be used to alter different shading effects in very particular areas of an object without the need to paint texture masks. On top of that being OSL it should work in any renderer that supports it (e.g. PRMan/RIS, Cycles in Blender, VRay, etc).</p>
<p><span id="more-2266"></span></p>
<p>The Pattern itself only has a few simple controls:</p>
<div id="attachment_2268" style="width: 453px" class="wp-caption aligncenter"><a href="http://julius-ihle.de/wp-content/uploads/2017/01/osl_PMask_UI.png"><img class="lazyload wp-image-2268 size-full" data-original="http://julius-ihle.de/wp-content/uploads/2017/01/osl_PMask_UI.png" alt="osl_pmask_ui" width="443" height="570" /></a><p class="wp-caption-text">PMask OSL Pattern inside Maya with RenderMan (PxrOSL Node)</p></div>
<p>&nbsp;</p>
<p>Here&#8217;s a quick explanation:<br />
<span style="text-decoration: underline;">Mapping</span> &#8211; determines whether to use world- or object-space for the 3d mask (choose <em>PWorld</em> or <em>PRef</em>). Unfortunately the PxrOSL node in Maya ignores shader metadata for creating a nice dropdown menu here (Blender users might be luckier :)).<br />
<span style="text-decoration: underline;">Radius</span> &#8211; The X, Y, Z (-&gt; R, G, B) scale of the spherical mask.<br />
<span style="text-decoration: underline;">Whitepoint</span> &#8211; Values below 1 will move the core towards the outside edge<br />
<span style="text-decoration: underline;">Blackpoint</span> &#8211; Values above 0 will move the outside edge towards the core<br />
<span style="text-decoration: underline;">Gamma</span> &#8211; Can be used to increase or decrease the falloff</p>
<p>All of these parameters are mappable, too! In the case of this Tool this has some very nice benefits.</p>
<p>The first one is that you can create a locator for example and map its translation to the Pos input. If you are using <em>PWorld</em> as your Mapping type it will use the world space coordinates so wherever you move the locator the mask will go as well. However assuming you are not animating the locator this will be a static mask in worldspace and any objects which are animated will swim through the mask.<br />
If you want your mask to follow your object you can set the Mapping to <em>PRef</em>. This will use the coordinates of the objects translation and deformation from a reference position (zero&#8217;d out transforms) and will make the mask stick to the object wherever it&#8217;s going. Keep in mind that the Origin for the position (0,0,0) is always wherever the object has zero&#8217;d out transforms. This means that you might need an offset if you have frozen your transforms at one point. Another alternative would be to parent or constraint a locator to a moving object and leave the Mapping set to <em>PWorld</em>.<br />
To double-check the coordinates the OSL node allows you to output <em>PWorld</em> and <em>PRef</em> for debugging purposes (you can take the RGB color values of a point in the render as your Pos value).</p>
<p>Also most of the time a simple sphere is not very desirable, so you can also map the radius with other procedurals or textures to break up its shape.</p>
<p>Because this is based on position data it&#8217;s completely independent of the object&#8217;s UV&#8217;s.</p>
<p>You can download it <a title="download compiled .oso" href="http://53035544.de.strato-hosting.eu/data/PMask.oso">HERE</a>.</p>
<p>Here&#8217;s a quick demo video:<br />
<iframe src="https://player.vimeo.com/video/197934849" width="640" height="338" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p><a href="https://vimeo.com/197934849">3D Position Masks in OSL for Shading Networks</a> from <a href="https://vimeo.com/julsvfx">Julius Ihle</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=2266</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Smoothing dotty Specular Highlights in Motionblur</title>
		<link>http://julius-ihle.de/?p=2228</link>
		<comments>http://julius-ihle.de/?p=2228#comments</comments>
		<pubDate>Tue, 20 Sep 2016 20:06:21 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arnold]]></category>
		<category><![CDATA[fireflies]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[mblur]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[path tracer]]></category>
		<category><![CDATA[raytracing]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[renderman]]></category>
		<category><![CDATA[Sampling]]></category>
		<category><![CDATA[shading]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=2228</guid>
		<description><![CDATA[One of the worst things to sample for any brute-force ray tracer are specular highlights / reflections with a low roughness in motion blur. Even&#8230;<p><a href="http://julius-ihle.de/?p=2228" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=2228"><img class="lazyload alignleft wp-image-2229" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/mblurroughness.png" alt="mblurroughness" width="800" height="333" /></a></p>
<p>One of the worst things to sample for any brute-force ray tracer are specular highlights / reflections with a low roughness in motion blur. Even worse so on fine displacements or bump. And EVEN more worse with lots of small highlights. When all of these things come together sampling these highlights in motionblur is going to become really hard and with conventional methods you will end up having to rely on extemely high AA samples and even then the highlight-streaks will most likely still be dotty&#8230; And you won&#8217;t make any friends if they have to paint these streaks smooth in Comp :) So during the crunch time of a recent project I was brain storming with some of my collegues how this could potentially be fixed without needing too much samples and I&#8217;ve been working on implementing that idea which seems to work quite nicely.</p>
<p><span id="more-2228"></span></p>
<div id="attachment_2233" style="width: 810px" class="wp-caption aligncenter"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/vlcsnap-2016-09-20-22h38m54s198.png" target="_blank"><img class="lazyload wp-image-2233" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/vlcsnap-2016-09-20-22h38m54s198.png" alt="vlcsnap-2016-09-20-22h38m54s198" width="800" height="453" /></a><p class="wp-caption-text">If you try to sample this speedy fella in an environment like that with this look you will inevitably end up with streaky specs.</p></div>
<p style="text-align: left;">So how do you fix it without changing the look? Let&#8217;s say you have a simple scene like the following:</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/01_base_nomblur.png"><img class="lazyload aligncenter size-full wp-image-2234" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/01_base_nomblur.png" alt="01_base_nomblur" width="1679" height="579" /></a></p>
<p style="text-align: left;">In this case I&#8217;m using Arnold, but the base concept is the same with any renderer. Low roughness on the specs + bumpy surface + lots of harsh highlights result in something like this when you turn on motionblur:</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/02_mblur_base.png"><img class="lazyload aligncenter size-full wp-image-2235" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/02_mblur_base.png" alt="02_mblur_base" width="1679" height="580" /></a></p>
<p style="text-align: left;">This one already has 12 AA samples + 2 light samples. It won&#8217;t get much smoother just cranking up the samples, but trust me it will render longer :) One way to smooth the streaks out however would be to<strong> increase the roughness</strong> and <strong>decrease the bump / displacement</strong>.</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/02_mblurrough.png"><img class="lazyload aligncenter size-full wp-image-2236" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/02_mblurrough.png" alt="02_mblurrough" width="1679" height="555" /></a></p>
<p style="text-align: left;">That looks way better. However the problem with this is that these adjustments will affect the look a lot and the asset will look very different in non-motionblurred frames. So let&#8217;s make it work only when the character is in motionblur.<br />
Most renderers offer some sort of a node that allows you to extract the motion vectors from a moving object, which basically define what distance each point on an object travels from one frame to another in XYZ.<br />
<a href="http://julius-ihle.de/wp-content/uploads/2016/09/03_mvector_base_annotated.png"><img class="lazyload aligncenter size-full wp-image-2241" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/03_mvector_base_annotated.png" alt="03_mvector_base_annotated" width="1679" height="578" /></a></p>
<p style="text-align: left;">As you can see we get quite big values for this frame just outputting the raw motion vectors. It&#8217;s very important that they are in a raw format and not normalized, because otherwise you won&#8217;t have the actual movement distance but just something normalized (positive values between 0-1) to make it better visible.<br />
Now these negative values won&#8217;t help us much. Eventually we want to be able to use this infortmation as a mask to switch between rough/blurry (for motion blur areas) and sharp reflections (for non-motionblurred areas).<br />
So let&#8217;s make sure these values are always absolute.</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/04_abs_mvector1.png"><img class="lazyload aligncenter size-full wp-image-2242" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/04_abs_mvector1.png" alt="04_abs_mvector" width="1679" height="576" /></a></p>
<p style="text-align: left;">This way no matter what the motionvector outputs, they will always be positive. Now we need to convert this to a float to make it useable as a mask. In this case a simple RGB to luminance won&#8217;t quite cut it as you will have a weighted average of the movement in X,Y and Z. You can use a max or a sum of all the three channels to always make sure you grab the biggest motion.</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/05_rgbtofloat.png"><img class="lazyload aligncenter size-full wp-image-2239" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/05_rgbtofloat.png" alt="05_rgbtofloat" width="1679" height="578" /></a></p>
<p style="text-align: left;">The only thing left to do is to bring the whole thing into a suitable normalized range to be able to use it as a mask. How you are remapping it, depends on at which point you want to completely switch from one roughness to the other. If you have your usual range/remap node you can specify with the input max at which point the value of the resulting mask should be 1. If I&#8217;d set it to 30 for example, as soon as the motionvector reaches a value of 30 it will result in a white mask and it will smoothly blend to 0 for areas/frames with no motion. We can use this mask then to mix between 2 roughness and bump values or textures. This way we retain the look of the original asset and have nice and smooth motion blur.<br />
Here&#8217;s a before and after frame with this method. Both have the same sampling settings</p>
<p style="text-align: left;"><a href="http://julius-ihle.de/wp-content/uploads/2016/09/06_mix_result.png"><img class="lazyload aligncenter size-full wp-image-2240" data-original="http://julius-ihle.de/wp-content/uploads/2016/09/06_mix_result.png" alt="06_mix_result" width="1679" height="578" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=2228</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Linux on the Desktop for CG &amp; VFX Work</title>
		<link>http://julius-ihle.de/?p=659</link>
		<comments>http://julius-ihle.de/?p=659#comments</comments>
		<pubDate>Sun, 08 May 2016 19:42:18 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[cgi computer graphics]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mate]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>
		<category><![CDATA[Window Manager]]></category>
		<category><![CDATA[workflow]]></category>
		<category><![CDATA[Workstation]]></category>
		<category><![CDATA[xfce]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=659</guid>
		<description><![CDATA[Judging from some messages I received recently there seems to be an ongoing interest on using Linux at home on your Desktop. Some people might&#8230;<p><a href="http://julius-ihle.de/?p=659" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=659"><img class="lazyload alignleft wp-image-660" data-original="http://julius-ihle.de/wp-content/uploads/2016/05/linuxforvfx.jpg" alt="linuxforvfx" width="800" height="333" /></a></p>
<p>Judging from some messages I received recently there seems to be an ongoing interest on using Linux at home on your Desktop. Some people might want to try it out, because they are searching for an alternative to Windows or OS X or just because they want to try out something new and explore the possibilities of Linux. But there are a few things to consider before getting into the world of Linux and most people are a bit overwhelmed at where to start exactly so I will try to give some tips that helped me personally in setting up a working system, alongside some examples why Linux is my personal favorite.<span id="more-659"></span></p>
<p><strong>Is Linux really for me?</strong><br />
Before you get started you should ask yourself one main question: Will I really benefit from using Linux? You might have heard that pretty much all big VFX facilities use Linux as their man operating system, but that doesn&#8217;t necessarily mean it&#8217;s a good choice for your home setup, too. Bigger studios use it as their main platform, because traditionally the VFX industry has always been Unix-based. When the SGI (Irix) train went downhill the most obvious choice to convert to was Linux. It had several advantages: It also was a Unix-based system, so transferring over the pipelines built on Irix was a fairly straight forward process. Also it was cost-efficient, because first of all Linux in itself is free and it wasn&#8217;t bound to proprietary hardware. Linux in general scales very well in a multi-user multi-software environment where access-time to many (large!) files by many different users/computers at the same time is as crucial as it is in VFX. With Linux being open source studios also had the freedom to modify the operating system in whichever way they wanted which allows for huge flexibility because you can tailor every component of the OS to be as efficient as possible on the hardware you put it on and to do whatever you want it to do.<br />
Due to that flexibility the performance of Linux usually is at least up to par with Windows and OS X, often times even out-performing other OS&#8217;s in terms of rendering speed and OpenGL performance.<br />
Now that might all sound well and nice for bigger companies but what about home-use?<br />
First and foremost question: Will my applications run on Linux? Quite a simple answer: Some will, some won&#8217;t. To find out which software has native Linux support is quite easy by checking the system requirements of the software in question. Nowadays most vendors for serious CG &amp; VFX applications do provide native Linux support for most of their software. Pretty much everything from The Foundry (Nuke, Mari, Katana, Modo), Maya, Mudbox, Houdini, Clarisse, Mocha, Silhouette, UVLayout and a lot more. Likewise most plugins and extensions, like 3rd party renderers provide Linux support as well. However if your workflow is centered around ZBrush, 3ds Max and Photoshop Linux will not be for you.<br />
Also it depends a bit on how tech-savy you are and how much you are willing to learn and explore. While nowadays you don&#8217;t have to utilize the command line as much as a few years back you still have to go there ocassionally because it&#8217;s either faster that way or because there&#8217;s no GUI solution (yet). That is not to scare you away from the command line, because while it may seem daunting at first a big part of how you interact with the system is often times faster through  the shell and it&#8217;s not really difficult to get the hang of it either. For starters I&#8217;d recommend <a title="Linux for VFX artists" href="http://www.technolumiere.com/vfx/tutorials/unixShell.html" target="_blank">this article</a>, which gives a much better introduction to the shell than I could ever give :)<br />
But Linux is not only for geeky command-line nerds. Most of the modern Desktop Environments that you can use with Linux offer amazingly intuitive concepts that make working, especially with CG apps, extremely comfortable. I&#8217;ll get into more of that later.</p>
<p><strong>So WHICH flavor&#8230;?</strong><br />
As you may or may not know Linux is just the Kernel &#8211; the core of the operating system that is responsible for allocating the hardware resources to the programs running on your system. For using it in conjuction with things like a graphical user interface and utility applications there are several distributions of Linux available &#8211; Ubuntu, Fedora, Mint, OpenSuse and hundreds more. They all ship with different Desktop Environments and applications. And this is kind of the area where new users have trouble starting. Because of the overwhelming number of choices it&#8217;s hard to know which one to pick.<br />
But fortunately the VFX industry has more more or less standardized on RPM-based systems. Most studios pick CentOS for 3 simple reasons: It has a very long support cycle (7 years), it&#8217;s a free version of Redhat Enterprise Linux which is built with a high focus on stability and scalability and it&#8217;s the primary system that most Software vendors support (Autodesk, The Foundry, SideFX, etc.). That doesn&#8217;t mean that you cannot use debian-based distro like Ubuntu or Linux Mint, but going the CentOS route generally seems to be the more obvious choice.<br />
At the time of writing this article, most studios are on CentOS 6. CentOS 7 has been released a good while back and might be a better choice for home-use, especially if you are on a Laptop, as it features a newer kernel and generally more up-to-date drivers for newer hardware.</p>
<p><strong>&#8230; and Desktop environments?</strong><br />
Just like there are hundreds of distributions, there are also almost as many desktop environments&#8230; sigh.. even more choice. This is a bit of a tougher one, because there are many very good choices. At the time of writing a lot of the bigger studios are either using Gnome 2 or KDE.<br />
On Windows or OS X you basically have the desktop environment that ships with the OS. Both systems have Desktop environments that work really well, but you are slightly limited on customizing them to fit your needs. On Linux you can choose between a multitude of desktop environments, that allow you tailoring your Desktop to do exactly what you want it to do. You Can have multiple panels (windows-style), docks (OS X-style), and lots of stuff inbetween with tons of nice widgets that really can easy your workflow.<br />
Gnome 2 is the standard Desktop environment in CentOS 6, which a lot of the bigger companies are using as their primary system. It is a good mix of being low on resources and still features a good amount of customizability. However CentOS 6 is one of the last major distribution using it as it has been replaced by Gnome 3 now. So what about Gnome 3? While it arguably has a very nice look to it, the problem with Gnome 3 is that it heavily relies on your hardware, especially the graphics card, to render various desktop effects that cannot be turned off. It also stripped down a lot of the customization options that have been present in Gnome 2. There are alternatives however. MATE, which is a fork of Gnome 2 that is aiming to keep the traditional Desktop alive and XFCE, which is a very light Desktop environment that offers similar a similar feel to Gnome 2.<br />
KDE is probably a good choice if you are coming from a traditional Windows Desktop, as it has a similar default layout. The real power of KDE however lies in it&#8217;s customizability. It&#8217;s one of the most flexible Desktop environments and you can set pretty much every option for anything you can imagine. By default KDE can however be quite a memory hog and hungry on computer resources. Luckily due to its flexibility it can be adjusted to use very little resources, while still remaining highly configurable.<br />
If you are working in a studio and you would like to find out which Desktop Environment is currently in use, you can open a terminal and execute echo $XDG_CURRENT_DESKTOP or echo $DESKTOP_SESSION to print out the current DE.</p>
<p>OK, enough of the boring text, let&#8217;s have a look at some of my favorite Linux Desktop usability tricks. I&#8217;ll focus on Gnome 2/MATE and KDE, but most features apply to other Linux Desktop environments, too.</p>
<p>Quickly moving / resizing your windows.<br />
On Windows or OS X when you want to move a window you have to click-drag the title bar. Similarly you can only resize floating by click-dragging the corners of windows.<br />
On Linux you have modifier that allow quickly accessing these functions. For example you can assign the windows-key as a window-modifier key. That way you can hold the windows key down and move a window by just clicking and dragging anywhere on it. And use the windows-key and middle mouse or right-mouse click-drag to resize it depending on what corner you are closest to.</p>
<div style="width: 1000px; " class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<video class="wp-video-shortcode" id="video-659-1" width="1000" height="630" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/moveresize.mp4?_=1" /><a href="http://53035544.de.strato-hosting.eu/data/moveresize.mp4">http://53035544.de.strato-hosting.eu/data/moveresize.mp4</a></video></div>
<p>&nbsp;</p>
<p>Keeping windows always on top.<br />
Let&#8217;s face it: You never have enough space for all of these floating windows, right? Let&#8217;s say you are modeling something and you need to keep a reference image somewhere around. In Linux you can keep windows always on top for quick reference:</p>
<div style="width: 1000px; " class="wp-video"><video class="wp-video-shortcode" id="video-659-2" width="1000" height="630" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/alwaysotop.mp4?_=2" /><a href="http://53035544.de.strato-hosting.eu/data/alwaysotop.mp4">http://53035544.de.strato-hosting.eu/data/alwaysotop.mp4</a></video></div>
<p>&nbsp;</p>
<p>Rolling windows up, instead of minimizing them.<br />
The more windows you have opened simultaniously the more messy your task-bar becomes. This gets especially bad with applications that have lots of floating windows (like Maya). Instead of minimizing them, you can just roll them up to minimize them to their window decoration. They are always on your finger tips but hardly take any space. Most commonly this can be set by double-clicking the title bar for example.</p>
<div style="width: 1000px; " class="wp-video"><video class="wp-video-shortcode" id="video-659-3" width="1000" height="612" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/roll_up.mp4?_=3" /><a href="http://53035544.de.strato-hosting.eu/data/roll_up.mp4">http://53035544.de.strato-hosting.eu/data/roll_up.mp4</a></video></div>
<p>&nbsp;</p>
<p>Multiple Desktops.<br />
Coming from OS X (or by now, even Windows 10), you&#8217;ll be happy to find that Linux also features multiple Desktops. If you haven&#8217;t used them yet, you&#8217;ll love it. Linux also takes this functionality one step further, by making it really easy to move windows around to a different workspace.</p>
<div style="width: 640px; " class="wp-video"><video class="wp-video-shortcode" id="video-659-4" width="640" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/workspaces.mp4?_=4" /><a href="http://53035544.de.strato-hosting.eu/data/workspaces.mp4">http://53035544.de.strato-hosting.eu/data/workspaces.mp4</a></video></div>
<p>&nbsp;</p>
<p>Filebrowser-fun:<br />
Most file-browsers support tabs, just like web-browsers. You can quickly jump to another directory by editing the location-bar (usually Ctrl+L in most file browsers).<br />
Also Nautilus (File-browser on Gnome) has this really awesome to select files or folders by pattern via Edit &#8211; Select Items Matching&#8230; (Ctrl+S)</p>
<div style="width: 828px; " class="wp-video"><video class="wp-video-shortcode" id="video-659-5" width="828" height="618" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/gnome2filebrowser.mp4?_=5" /><a href="http://53035544.de.strato-hosting.eu/data/gnome2filebrowser.mp4">http://53035544.de.strato-hosting.eu/data/gnome2filebrowser.mp4</a></video></div>
<p>&nbsp;</p>
<p>Similarly Dolphin (File-browser on KDE) has a Filter bar under Tools &#8211; Show Filter Bar (Ctrl+I). Additionally it allows you to split your view in the file browser for working quickly in 2 directories. If you want to get familiar with the command line you can also enable a Terminal display that live-updates your file browser with the commands you enter</p>
<div style="width: 1000px; " class="wp-video"><video class="wp-video-shortcode" id="video-659-6" width="1000" height="667" preload="metadata" controls="controls"><source type="video/mp4" src="http://53035544.de.strato-hosting.eu/data/kdefilebrowser.mp4?_=6" /><a href="http://53035544.de.strato-hosting.eu/data/kdefilebrowser.mp4">http://53035544.de.strato-hosting.eu/data/kdefilebrowser.mp4</a></video></div>
<p>&nbsp;</p>
<p>Panel Addons<br />
Most Desktop Environments work with panels. Those panels have widgets that you can put on them. You can constantly monitor your system activity, switch your workspaces, place shortcuts for files and folders, and so on and so forth.</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2016/05/panels_crop.png" target="_blank"><img class="lazyload alignleft wp-image-665 size-large" data-original="http://julius-ihle.de/wp-content/uploads/2016/05/panels_crop-1024x30.png" alt="panels_crop" width="1024" height="30" /></a><br />
<a href="http://julius-ihle.de/wp-content/uploads/2016/05/panels_crop.png" target="_blank"><img class="lazyload alignleft wp-image-665 size-large" data-original="http://53035544.de.strato-hosting.eu/data/kdepanel_crop.png" alt="kdepanel" width="1024" height="30" /></a></p>
<p>&nbsp;</p>
<p>Those are my personal favorites. Along with some other things this makes working in Linux a real bless in my opinion.</p>
<p>And while Linux has its benefits, there are also downsides. Due to its customizability in pretty much every aspect it also has somewhat of a learning curve, so if your goal is to simply install the OS and get going like you would if you were new to OS X or Windows, you&#8217;ll have a bad time. There are times when you have to use the command line and while it is an extremely powerful tool, most people tend to not really like it that much. On the bright side, Linux supports pretty much any hardware without the need to install additional drivers &#8211; mice, keyboards, external sound cards, wifi-sticks, you name it. However if you are one of the unlucky guys that has that one piece of proprietary hardware for which there is no Linux support you&#8217;ll be left in the dark. Likewise with software. Most free apps are available on Linux through repositories just like they are on Windows or Mac OS &#8211; VLC, OpenOffice, Firefox, Chrome, Skype, etc. However if you have to compile stuff for your system, because it is not available for your distribution it will end up in frustration.</p>
<p>That being said, if you are working in a studio environment that uses Linux as their main OS and it&#8217;s set up properly you will be able to enjoy its benefits without needing to worry about the technical nitty-gritties, because this is what IT will take care of :)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=659</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://53035544.de.strato-hosting.eu/data/moveresize.mp4" length="2587928" type="video/mp4" />
<enclosure url="http://53035544.de.strato-hosting.eu/data/alwaysotop.mp4" length="2366152" type="video/mp4" />
<enclosure url="http://53035544.de.strato-hosting.eu/data/roll_up.mp4" length="3552488" type="video/mp4" />
<enclosure url="http://53035544.de.strato-hosting.eu/data/workspaces.mp4" length="3528722" type="video/mp4" />
<enclosure url="http://53035544.de.strato-hosting.eu/data/gnome2filebrowser.mp4" length="891441" type="video/mp4" />
<enclosure url="http://53035544.de.strato-hosting.eu/data/kdefilebrowser.mp4" length="2124240" type="video/mp4" />
		</item>
		<item>
		<title>Digital Tutors/Pluralsight Training Release</title>
		<link>http://julius-ihle.de/?p=641</link>
		<comments>http://julius-ihle.de/?p=641#comments</comments>
		<pubDate>Sat, 20 Feb 2016 14:20:23 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aov]]></category>
		<category><![CDATA[aovs]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[compositing]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[diffuse]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[lookdev]]></category>
		<category><![CDATA[multipass]]></category>
		<category><![CDATA[refraction]]></category>
		<category><![CDATA[shading]]></category>
		<category><![CDATA[specular]]></category>
		<category><![CDATA[texturing]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=641</guid>
		<description><![CDATA[A few months back Digital Tutors/Pluralsight have picked me up to release a training series with them. It&#8217;s entitled Intermediate to Advanced AOV Manipulation Techniques&#8230;<p><a href="http://julius-ihle.de/?p=641" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=641"><img class="lazyload alignleft wp-image-642" data-original="http://julius-ihle.de/wp-content/uploads/2016/02/dt.png" alt="dt" width="800" height="333" /></a></p>
<p>A few months back Digital Tutors/Pluralsight have picked me up to release a training series with them. It&#8217;s entitled <strong><span style="text-decoration: underline;"><a title="Intermediate-to-Advanced-AOV-Manipulation-Techniques-in-NUKE" href="https://www.pluralsight.com/courses/intermediate-advanced-aov-manipulation-techniques-nuke-2397" target="_blank">Intermediate to Advanced AOV Manipulation Techniques in NUKE</a></span></strong>. In it I will be showing some tips/tricks to work as efficiently as possible with multipass renders. It starts by giving a brief introduction to AOV&#8217;s for newcomers, just so that everyone is on the same page but will quickly ramp up into more advanced topics.<br />
After the introductions I prepared a small project to integrate a CG car into a live action environment. Tweaking it to make it look good in the shot and an indepth rundown on why I do what are just a few of the things I will be discussing.</p>
<p>Also check out some before/after screenshots of the CG slapcomp vs the final composite to get a rough idea:<span id="more-641"></span></p>
<p style="text-align: left;">  <a href="http://julius-ihle.de/wp-content/uploads/2016/02/dt_training_slap.png" target="_blank"><img class="lazyload alignleft wp-image-644" data-original="http://julius-ihle.de/wp-content/uploads/2016/02/dt_training_slap.png" alt="dt_training_slap" width="600" height="338" /></a> <a href="http://julius-ihle.de/wp-content/uploads/2016/02/dt_training_final.png"><img class="lazyload alignleft wp-image-643" data-original="http://julius-ihle.de/wp-content/uploads/2016/02/dt_training_final.png" alt="dt_training_final" width="600" height="338" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=641</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sampling in RenderMan/RIS</title>
		<link>http://julius-ihle.de/?p=547</link>
		<comments>http://julius-ihle.de/?p=547#comments</comments>
		<pubDate>Sun, 05 Jul 2015 17:26:52 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[optimizing]]></category>
		<category><![CDATA[path tracer]]></category>
		<category><![CDATA[prman]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[renderman]]></category>
		<category><![CDATA[sampler]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[visual effects]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=547</guid>
		<description><![CDATA[The new RIS mode introduced in RenderMan 19 is a completely new render-engine that is very different from REYES. Being a brute force path tracer&#8230;<p><a href="http://julius-ihle.de/?p=547" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://julius-ihle.de/?p=547"><img class="lazyload alignleft wp-image-575" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/ris_sampling.jpg" alt="ris_sampling" width="800" height="333" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">The new RIS mode introduced in RenderMan 19 is a completely new render-engine that is very different from REYES. Being a brute force path tracer (uni- and bidirectional modes) it works much more like other renderers that follow a similar approach (e.g. Arnold). That approach aims to make the render process more simple and interactive. And while I personally don&#8217;t like it completely yet it seems to get widely adopted in the film industry and we all have to adjust to it sooner or later :)<span id="more-547"></span><br />
The good thing about RIS is that it offers a much more interactive way of working. The interface and controls are much simpler now and offer easier controls to tweak your renders. However this comes at the price that compared to Reyes I have seen final rendering times increase by 3-6 times, because all the hacks are removed for a &#8220;physically plausible&#8221; workflow.<br />
Now because there is not a lot of stuff you can tweak to squeeze rendering times it is important to understand how sampling in RIS works. RIS uses importance sampling, which in layman terms means instead of uniformly sampling an area above the hemisphere it concentrates samples around the areas that are more important (e.g. brighter, higher solid angle, etc.). Here&#8217;s a good example comparison with 2 objects &#8211; just 1 high contrast environment light importance sampled vs uniformly sampled (same number of samples):</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/importance_sampling.jpg"><img class="lazyload  size-medium wp-image-548 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/importance_sampling-300x150.jpg" alt="importance_sampling" width="300" height="150" /></a><br />
Importance sampling is the standard sampling method in PRMan (both REYES and RIS) due to its obvious benefits.<br />
The main settings in the render globals that control the quality of the final image are the following:<br />
Min Samples<br />
Max Samples<br />
Pixel Variance<br />
Light Samples<br />
Bxdf Samples<br />
Indirect Samples</p>
<p style="text-align: justify;">The way it works is fairly straight forward: Min- and MaxSamples are a global setting for every kind of sampling in your scene (AA, Light, Shader, GI Sampling). The amount of Samples for each of those will never be higher than MaxSamples and never lower than Min Samples.<br />
The parameter to control whether the Sampling biases towards Min or Max Samples is the Pixel Variance. Starting with Min Samples RIS will check the contrast (=noise) between the current sampling-point and those around it. If that contrast is higher than the value specified for Pixel Variance it will adaptively continue to shoot more Samples for that point until the contrast is equal or lower to the Pixel Variance (with Max Samples as a maximum). Therefore a lower Pixel Variance will increase the likelyhood of more rays being fired and therefore a better quality image (and also longer rendering time).<br />
As noted before the problem with just using Min/MaxSamples/Pixel Variance as your global is that it affects all the Sampling in your scene. So if your shadows are grainy for example, but speculars, GI, motion blur, etc look clean, increasing the MaxSamples or reducing the Pixel Variance might give you clean shadows but also waste samples for all other sampling methods in your scene.<br />
Therefore you also have Sampling controls for Lights, Bxdf&#8217;s and Indirect rays. Which one of them to use in a particular scenario depends on a couple of factors.<br />
Indirect is the most obvious knob. Increasing it will spawn more indirect rays after the first bounce (=rays that cannot be directly connected back to a light source). This inhabits indirect diffuse, indirect specular (reflection/refraction) and subsurface. You can gain finer control over the sampling counts on each of these by changing the SampleMode from &#8220;bxdf&#8221; to &#8220;manual&#8221;. That way you can specify exact values for a given indirect ray type.<br />
When to use LightSamples vs BxdfSamples isn&#8217;t quite as obvious at first. It depends on what kind of surface you are shading. The main indicator here is the lobe of the BXDF. Let&#8217;s say you have a plain diffuse material. Increasing the Bxdf samples in that case won&#8217;t benefit you much, because a diffuse surface naturally has a very wide lobe. That way increasing the sampling on the Shader will result in a lot of wasted samples:<br />
<a href="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_bxdfs_diffSurf.jpg"><img class="lazyload  size-medium wp-image-551 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_bxdfs_diffSurf-300x169.jpg" alt="dgrm_bxdfs_diffSurf" width="300" height="169" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/diff_base.jpg"><img class="lazyload  size-medium wp-image-549 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/diff_base-300x238.jpg" alt="diff_base" width="300" height="238" /> </a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/diff_bxdfs.jpg"><img class="lazyload  size-medium wp-image-550 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/diff_bxdfs-300x238.jpg" alt="diff_bxdfs" width="300" height="238" /></a></p>
<p style="text-align: justify;">Note that all the renders are scaled up crops to better show the sampling problems.<br />
However if you are using Light-Sampling things get a lot more efficient as you are now shifting the importance towards the lights:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_ls_diffSurf.jpg"><img class="lazyload aligncenter size-medium wp-image-559" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_ls_diffSurf-300x169.jpg" alt="dgrm_ls_diffSurf" width="300" height="169" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/diff_ls.jpg"><img class="lazyload aligncenter size-medium wp-image-560" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/diff_ls-300x238.jpg" alt="diff_ls" width="300" height="238" /></a></p>
<p style="text-align: justify;">In comparison to get a similarly clean image by solely adjusting the Min/MaxSamples and PixelVariance and leaving LightSamples at its default of 1 you will waste a lot of rendertime to get the same result:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/diff_maxs.jpg"><img class="lazyload aligncenter size-medium wp-image-561" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/diff_maxs-300x238.jpg" alt="diff_maxs" width="300" height="238" /></a></p>
<p style="text-align: justify;">As you might have guessed for direct specular shading that has a very tight lobe (=more mirror-like) it works the exact opposite. Because the lobe is so narrow adjusting light Samples globally will most likely not reduce noise as it&#8217;s very unlikely for all the lights to have an effect on the given point of shading:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_ls_specSurf.jpg"><img class="lazyload aligncenter size-medium wp-image-562" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_ls_specSurf-300x169.jpg" alt="dgrm_ls_specSurf" width="300" height="169" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/spec_base.jpg"><img class="lazyload aligncenter size-medium wp-image-563" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/spec_base-300x238.jpg" alt="spec_base" width="300" height="238" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/spec_ls.jpg"><img class="lazyload aligncenter size-medium wp-image-564" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/spec_ls-300x238.jpg" alt="spec_ls" width="300" height="238" /></a></p>
<p style="text-align: justify;">&#8230;increasing the Bxdf Samples however is way more efficient:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_bxdfs_specSurf.jpg"><img class="lazyload aligncenter size-medium wp-image-565" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/dgrm_bxdfs_specSurf-300x169.jpg" alt="dgrm_bxdfs_specSurf" width="300" height="169" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/spec_bxdf.jpg"><img class="lazyload aligncenter size-medium wp-image-566" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/spec_bxdf-300x238.jpg" alt="spec_bxdf" width="300" height="238" /></a></p>
<p style="text-align: justify;">And once again, just using Min/MaxSamples and PixelVariance to adjust the quality wastes more time than needed:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/spec_maxs.jpg"><img class="lazyload aligncenter size-medium wp-image-567" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/spec_maxs-300x238.jpg" alt="spec_maxs" width="300" height="238" /></a></p>
<p style="text-align: justify;">Now, what about rough speculars? Often times reflections are having a broader lobe which sits somewhere inbetween that of a rather mirror-like specular and a diffuse lobe. In that case you have to mix between Light- and Bxdf Samples. Due to RIS taking advantage of multiple importance sampling it tries to automatically allocate samples that make the most sense for the current shadingpoint. But as a general rule of thumb I personally found that for a roughness of ~30% using the same value for Light- and Bxdf Samples gives a good starting point. If the spec gets more shiny you bias towards Bxdf Sampling and if it gets rougher you bias towards Light Sampling.</p>
<p style="text-align: justify;">Once the direct light components are noise-free, indirect noise tends to be a bit harder to tackle as this will be the main source of noise most of the time. Often times unfortunately adjusting Indirect Samples will only get you so far until render times start to explode:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/specind_base.jpg"><img class="lazyload aligncenter size-medium wp-image-570" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/specind_base-300x238.jpg" alt="specind_base" width="300" height="238" /></a></p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/specind_samples.jpg"><img class="lazyload aligncenter size-medium wp-image-569" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/specind_samples-300x238.jpg" alt="specind_samples" width="300" height="238" /></a></p>
<p style="text-align: justify;">The MaxSpecularDepth in this scene and on the objects is 4. As you can see even with 10 indirect samples the render isn&#8217;t really as smooth as it should be. Luckily you have 2 more options that can help eliminate noise. Clamp Depth and Clamp Luminance. Sampling Fireflies usually happen when there is a big contrast between higher and lower luminance sampling points. The clamp controls try to get rid of those brighter samples to reduce the noise. If you for example set the clamp depth to 2 and the clamp luminance to 1 it means that starting from the 2nd bounce of the light path (be it diffuse, specular or subsurface) the sample intensity will be clamped to 1, meaning no samples at this depth have a higher value than the one specified in the clamp luminance:</p>
<p style="text-align: justify;"><a href="http://julius-ihle.de/wp-content/uploads/2015/07/specind_clamp.jpg"><img class="lazyload aligncenter size-medium wp-image-571" data-original="http://julius-ihle.de/wp-content/uploads/2015/07/specind_clamp-300x238.jpg" alt="specind_clamp" width="300" height="238" /></a></p>
<p style="text-align: justify;">As you can see the resulting image is much cleaner. I was even able to reduce the indirect samples and still get a cleaner result and lower rendering time. However you also have to be careful to not set your clamp luminance too low as this might produce too washed-out-looking bounces.<br />
You can also control indirect sampling through the Roulette Depth/Threshold Control. This will randomly terminate a percentage of samples (threshold) at a given depth. The default values of 4 for roulette depth and 0.2 for roulette threshold means that starting at the 4th bounce of light 20% of the samples will randomly be terminated. This control is useful if you have a lot of light bounces and want to get rid of unneccesserely low-importance samples at larger depths. And while it reduces render times nicely it also reduces quality at the same time, so those controls should be used with caution.</p>
<p style="text-align: justify;">As a general workflow what personally worked best for me is to usually<br />
1) Adjust Min-/MaxSamples and PixelVariance until I get clean Anti-Aliasing and motion blur (..and DOF).<br />
2) Check the diffuse_direct AOV for noise and increase Light Samples if needed<br />
3) Check the specular_direct AOV for noise and balance between increasing Bxdf/Light samples Samples if needed (depending on spec roughness)<br />
4) Check diffuse_indirect, specular_indirect and subsurface and increase indirect Samples as needed<br />
5) Try to play with Roulette Depth/Threshold &amp; Clamp Depth/Luminance to eliminate fireflies</p>
<p style="text-align: justify;">I always try to not go higher than needed with Min-/MaxSamples and PixelVariance. They tend to be the most sensitive control and increase render times the most.<br />
Also often times globally adjusting a sampling type may be excessive when only one light/surface produces noise. For lights you can adjust samples individually, which is quite cool if you have a scene with lots of lights but only the shadows from your keylight are noisy for example. Unfortunately individual sampling controls for controlling the sampling on shaders are not exposed in the out-of-the-box pixar shaders, so unless you create your own you have to adjust Bxdf samples globally.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=547</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More Katana Macros/Tools</title>
		<link>http://julius-ihle.de/?p=492</link>
		<comments>http://julius-ihle.de/?p=492#comments</comments>
		<pubDate>Sat, 28 Feb 2015 10:12:44 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arnold]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[gobo]]></category>
		<category><![CDATA[katana]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[lookdev]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[renderman]]></category>
		<category><![CDATA[slidemap]]></category>
		<category><![CDATA[vfx]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=492</guid>
		<description><![CDATA[During the last year I luckily had some time to spend on digging a bit deeper into Katana. From working on assets and shots I&#8230;<p><a href="http://julius-ihle.de/?p=492" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=492"><img class="lazyload alignleft wp-image-493" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/katana_dev.jpg" alt="katana_dev" width="800" height="333" /></a></p>
<p style="text-align: justify;">During the last year I luckily had some time to spend on digging a bit deeper into Katana. From working on assets and shots I experienced some moments where I thought it&#8217;d be great to have some basic tools to help get the job done just a little bit quicker. So whenever I had a bit of spare time I was developing some Macros/Gizmos/Tools to help artists on some common problems.<span id="more-492"></span></p>
<p><iframe src="//player.vimeo.com/video/120869259" width="500" height="281" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p><a href="https://vimeo.com/120869259">Katana Macro/Tool Dev</a> from <a href="https://vimeo.com/julsvfx">Julius Ihle</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<p>&nbsp;</p>
<p>One of the tools is a macro that helps managing multiple lights. Based on a CEL you can freely modify exposed shading and transform parameters. This especially comes in handy in scenes with bigger environments that have to be lit with multiple light sources. It also features some randomization controls for lightcolor and rotation &amp; scale.</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/lmanager.png"><img class="lazyload aligncenter  wp-image-494" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/lmanager.png" alt="lmanager" width="479" height="580" /></a></p>
<p>&nbsp;</p>
<p>Next up we occasionally had some shots that required very accurate light cookies/gobos based on the plate. On recent shows we for example had some shots of characters walking through the woods with quite direct lighting which caused very complex noticeable shadows from the tree&#8217;s branches and leaves. In some scenes one could get away with putting just some random lightcookies as projectors (slidemaps) on the lights, but others needed a more accurate solution. This is a macro I have been working on which automates the whole process:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/cookiemaker.png"><img class="lazyload aligncenter  wp-image-495" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/cookiemaker.png" alt="cookiemaker" width="480" height="413" /></a>It basically works this way: You project the plate through the render camera onto the set geometry and render that result back through the light source which will should give you a proper light gobo. Now, there are usually a few things to consider, like the camera&#8217;s focal length, pre/post transformations of the plate to match the light&#8217;s scale and so on which all depends on the way the slidemap is implemented into the shader. On this one no one had to worry about it, because it&#8217;s all handled automatically :) The only drawback is that the generation of the resulting cookie involves a 2-step rendering process (projection on geo and post-tweaks) which makes it not as interactive as it could be, but luckily those renders go through really quick at least.</p>
<p>Here&#8217;s a quick run through on a previous set up which is based on the same technique, but a bit more manual and goes through Nuke. This should also work with really any setup that requires building accurate light cookies.<br />
Say this is your light setup (in this case in Katana, but could be Maya, Houdini, or whatever):</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/katana_lightsetup.png"><img class="lazyload aligncenter  wp-image-496" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/katana_lightsetup.png" alt="katana_lightsetup" width="754" height="547" /></a><br />
You replicate the same thing in Nuke importing the same camera and set geometry. You project the plate through the rendercam onto the set geometry and copy over the light transformations from your 3D package into a new camera, which you then render through:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/nuke_lightsetup.png"><img class="lazyload aligncenter  wp-image-497" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/nuke_lightsetup.png" alt="nuke_lightsetup" width="999" height="382" /></a><br />
The tricky part is getting the correct settings for focal length, etc. on your camera that resembles the light, which involves a bit trial and error. You can then just desaturate the map and grade, paint and do all the fancy comp stuff to make it do what you want and then use it on your lights:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/katana_cookie_arealight2.jpg"><img class="lazyload   wp-image-498 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/katana_cookie_arealight2.jpg" alt="katana_cookie_arealight2" width="498" height="280" /></a> <a href="http://julius-ihle.de/wp-content/uploads/2015/02/plate_720.jpg"><img class="lazyload   wp-image-499 aligncenter" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/plate_720.jpg" alt="plate_720" width="500" height="281" /></a></p>
<p>When the guys from FX do their magic and blow things up into thousands of pieces that&#8217;s always awesome. Anyone in comp is usually happy if you provide them ID&#8217;s for just about anything so, provided the FX cache contains separate geometry pieces or face-sets that&#8217;s pretty straight forward with this ID randomizer:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/idassgner.png"><img class="lazyload aligncenter size-full wp-image-500" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/idassgner.png" alt="idassgner" width="508" height="329" /></a><br />
When Lookdev&#8217;ing assets it always helps to ensure some consistency between the renders. While we had templates that managed chrome- and greyballs and rendercameras, we didn&#8217;t have a setup for the turntable itself&#8230; Well, now we have:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2015/02/turntable.png"><img class="lazyload aligncenter size-full wp-image-501" data-original="http://julius-ihle.de/wp-content/uploads/2015/02/turntable.png" alt="turntable" width="723" height="296" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=492</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Texture Conversion in the GUI for Arnold &amp; PRMan</title>
		<link>http://julius-ihle.de/?p=460</link>
		<comments>http://julius-ihle.de/?p=460#comments</comments>
		<pubDate>Sun, 28 Dec 2014 11:24:20 +0000</pubDate>
		<dc:creator><![CDATA[Julius]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arnold]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[maketx]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[renderman]]></category>
		<category><![CDATA[txmake]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[vfx]]></category>

		<guid isPermaLink="false">http://julius-ihle.de/?p=460</guid>
		<description><![CDATA[In the process of trying to streamline things a bit more in my day-to-day workflow I have recently been working on a hand-full of small&#8230;<p><a href="http://julius-ihle.de/?p=460" class="more-link post-excerpt-readmore"><span class="more-link-inner">Read more</span><span class="more-link-brd"></span></a></p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://julius-ihle.de/?p=460"><img class="lazyload alignleft wp-image-461" data-original="http://julius-ihle.de/wp-content/uploads/2014/12/tex_gui.jpg" alt="tex_gui" width="800" height="333" /></a></p>
<p>In the process of trying to streamline things a bit more in my day-to-day workflow I have recently been working on a hand-full of small helper tools. One of them is a small set of scripts that handle the conversion of a selection of files to Arnold &amp; RenderMan&#8217;s native .tx/.tex files from the filebrowser&#8230; because people like the GUI, right? :)<span id="more-460"></span><br />
Unfortunately for anyone out there on Windows or OS X they won&#8217;t be of much use I&#8217;m afraid. If you are on Linux and using Gnome or KDE as your Desktop environment (others may work, too) this might come in handy. The file conversion is being handled on a selection of files through the standard right-click context menu:</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_gnome_contextmenu_crop2.png"><img class="lazyload   wp-image-472  alignleft" data-original="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_gnome_contextmenu_crop2.png" alt="" width="275" height="331" /></a></p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_service_screenshot_crop2.png"><img class="lazyload   aligncenter wp-image-473 " data-original="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_service_screenshot_crop2.png" alt="" width="319" height="330" /></a></p>
<p>&nbsp;</p>
<p>Upon clicking you will be presented with a little pop-up menu that allows you to enter additional options for the conversion if needed. Anything that&#8217;s noted in the -help docs of the respective commands should work in the dialog boxes. Upon specifying your options there&#8217;s time to grab another cup of coffee&#8230; The progress bar will let you know when it&#8217;s done :)</p>
<p><a href="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_gnome_arnoldOptions_crop.png"><img class="lazyload alignleft wp-image-465 size-full" data-original="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_gnome_arnoldOptions_crop-e1419764694894.png" alt="txmake_gnome_arnoldOptions_crop" width="287" height="150" /></a><a href="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_kde_progress.png"><img class="lazyload aligncenter size-full wp-image-466" data-original="http://julius-ihle.de/wp-content/uploads/2014/12/txmake_kde_progress.png" alt="txmake_kde_progress" width="310" height="128" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>By default it is assumed that the bin folders of Arnold and RPS are part of your $PATH environment variable, but if you need to change it the code should be fairly easy to read (although it looks a bit messy because it&#8217;s 1 line :) ) and can be modified to suit your needs. The dialogs are using KDialog and zenity (for KDE and Gnome respectively), but those should come by default depending on what desktop you are using.</p>
<p>To use them on KDE put the attached .desktop files in ~/.kde/share/kde4/services/ or /usr/share/kde4/services/ (for all users).<br />
For Gnome you need to install nautilus-actions and import the attached .schemas files. Once that&#8217;s done just restart nautilus/dolphin or log out and log back in again.</p>
<p>Tested on my laptop with CentOS 7 (KDE 4.10.5) and my trusty old CentOS 5 testbox (Gnome 2.16.0). <del>Unfortunately I don&#8217;t have my main workstation around to test it on CentOS 6, but it should work there as well.</del><br />
//Edit: Now also tested &amp; confirmed working on CentOS 6.</p>
<p><span style="text-decoration: underline;"><a href="http://53035544.de.strato-hosting.eu/data/Arnold_MakeTx.desktop" target="_blank">Arnold .tx Converter for KDE</a></span><br />
<span style="text-decoration: underline;"> <a href="http://53035544.de.strato-hosting.eu/data/Arnold_MakeTx_Gnome.schemas" target="_blank"> Arnold .tx Converter for Gnome</a></span><br />
<span style="text-decoration: underline;"> <a href="http://53035544.de.strato-hosting.eu/data/PRMan_txmake.desktop" target="_blank"> PRMan .tex Converter for KDE</a></span><br />
<span style="text-decoration: underline;"> <a href="http://53035544.de.strato-hosting.eu/data/PRMan_TXMake_Gnome.schemas" target="_blank"> PRMan .tex Converter for Gnome</a></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
<span style="color: #808080;">_________________________________________________</span><br />
<span style="color: #808080;"><span style="font-size: small;"> If this post has helped you in any way you can express your gratefulness by using the <em>Donate </em>Button below to buy me a coffee! :)</span></span><br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VH5RW3YDWDJSQ" target="_blank" rel="nofollow"><img class="lazyload" data-original="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" alt="" /></a></p>
<div class="moz-text-html" lang="x-unicode">
<div><span style="font-size: small;"><span style="color: #808080;">3M5xNSV7g2NzVpHMqzYKhgoKJZ8CWa644m</span></span><br />
<img class="lazyload alignleft size-full wp-image-2576" data-original="http://julius-ihle.de/wp-content/uploads/2018/03/bc_ldgr_qrcode.png" alt="bc_ldgr_qrcode" width="128" height="128" /></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julius-ihle.de/?feed=rss2&#038;p=460</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
