<?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>Anatomical Travelogue Research &#187; Graphics General</title>
	<atom:link href="http://www.anatomicaltravel.com/research/category/graphics-general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anatomicaltravel.com/research</link>
	<description>Bringing you case studies and free tools in 3D animation, video compositing, and image processing.</description>
	<lastBuildDate>Wed, 18 Jan 2012 23:37:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>RGB to LAB</title>
		<link>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/</link>
		<comments>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:40:34 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=2686</guid>
		<description><![CDATA[

Ok, this Fuse started off as a really tiny one.  Fusion already has a CSConvert() that does Lab.  So all I have to do is&#8230;
if mode == 0 then
out:CSConvert("RGB", "LAB")
else
out:CSConvert("LAB", "RGB")
 end
Simple and fast.  But the results were a bit&#8230; unexpected.  So we added a little tweak which has no basis in known color [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/RGBtoLAB_Tilepic.png"><img class="aligncenter size-full wp-image-2689" title="RGBtoLAB_Tilepic" src="http://www.anatomicaltravel.com/research/wp-content/uploads/RGBtoLAB_Tilepic.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><strong><a href="http://www.anatomicaltravel.com/research/downloads/RGBtoLAB.fuse">Download RGBtoLAB 1.03</a><a href="http://www.anatomicaltravel.com/research/downloads/RGBtoLAB.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download RGBtoLAB" alt="Download RGBtoLAB" src="/research/images/download.gif" alt="" width="14" height="16" /></a></strong></p>
<p>Ok, this Fuse started off as a <em>really </em>tiny one.  Fusion already has a CSConvert() that does <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=KhfRynutmQM#!" target="_blank">L</a><a href="http://www.youtube.com/watch?v=jlec3u0ebyM&amp;feature=related" target="_blank">a</a><a href="http://www.youtube.com/watch?v=AG38FuDsT-A&amp;feature=BFa&amp;list=PLEBF94493B6A357F9&amp;lf=results_main" target="_blank">b</a>.  So all I have to do is&#8230;</p>
<blockquote><p><code>if mode == 0 then</code></p>
<p><code>out:CSConvert("RGB", "LAB")</code></p>
<p><code>else</code></p>
<p><code>out:CSConvert("LAB", "RGB")</code></p>
<p><code> </code><code>end</code></p></blockquote>
<p>Simple and fast.  But the results were a bit&#8230; unexpected.  So we added a little tweak which has no basis in known color science, it just makes is so that a linear RGB input returns what I <em>think</em> is a linear <em>L</em> output.</p>
<p>So why doesn&#8217;t <a href="http://vfxpedia.com/index.php?title=Eyeon:Manual/Fusion_6/Color_Space" target="_blank">ColorSpace</a> have an Lab button?  I don&#8217;t know.  You can see LAB color in action in the <a href="http://vfxpedia.com/index.php?title=Eyeon:Manual/Fusion_6/Wand" target="_blank">Wand </a>tool, though.</p>
<p>Other options include output a LUT Image only, as if it were a Source tool.  Same as the new option on <a href="http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/" title="Color Matrix Transform">ColorMatrixTransform</a>.  You can also choose whether to affect the canvas color or not.</p>
<p style="text-align: center;"><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2011/11/rgb-to-lab/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Generic Shader addins: Half Lambert, Parallax, NPR Preprocess</title>
		<link>http://www.anatomicaltravel.com/research/2011/04/generic-shader-addins-2/</link>
		<comments>http://www.anatomicaltravel.com/research/2011/04/generic-shader-addins-2/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 18:17:48 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Cg]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=2048</guid>
		<description><![CDATA[Look!  More shaders for the <a href="http://www.anatomicaltravel.com/research/2010/07/generic-shader-tool-for-quick-cg-prototyping-in-fusion/" title="Generic Shader tool for Cg prototyping in Fusion">Generic  Shader</a>.
New shaders include ColorMatrixTransform, Unit Vector, Dot Product, Half Lambert, Parallax, and NPR Prepass which returns various lighting dot products for use in making NPR effects like the Gooch shader above.

What I&#8217;ve done this time is to repackage the .cg file [...]]]></description>
			<content:encoded><![CDATA[<p>Look!  More shaders for the <a href="http://www.anatomicaltravel.com/research/2010/07/generic-shader-tool-for-quick-cg-prototyping-in-fusion/" title="Generic Shader tool for Cg prototyping in Fusion">Generic  Shader</a>.</p>
<div id="attachment_2051" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/GS3_GoochBall_C_A01.jpg"><img class="size-full wp-image-2051" style="border: 0pt none;" title="Gooch Shading courtesy of the NPR Prepass" src="http://www.anatomicaltravel.com/research/wp-content/uploads/GS3_GoochBall_C_A01.jpg" alt="" width="600" height="600" /></a><p class="wp-caption-text">Gooch Shading courtesy of the NPR Prepass</p></div>
<p>New shaders include ColorMatrixTransform, Unit Vector, Dot Product, Half Lambert, Parallax, and NPR Prepass which returns various lighting dot products for use in making NPR effects like the Gooch shader above.</p>
<p><span id="more-2048"></span></p>
<p style="text-align: left;">What I&#8217;ve done this time is to repackage the .cg file in with the plugin, so you don&#8217;t have to add all the new strings if you&#8217;re downloading the plugin for the first time.  The plugin itself is unchanged, only the .cg shaders changed.  I&#8217;ve also included the <a href="http://www.anatomicaltravel.com/research/2010/07/generic-shader-addin-lit-sphere/" title="Generic Shader addin: Lit Sphere">Lit Sphere</a> shader.</p>
<p style="text-align: left;">NOTE: I&#8217;ve changed the indices of the shaders, so the new .cg will break some comps that used the old one.  If you want to maintain compatibility, you&#8217;ll have to replace the shader number manually.  Only affects Length, which went from 7 to 17, Bump Falloff, which went from 1,000,000 to 14, Jitter, which went from 5 to 7, and Lighting Data Debug which moved from 6 to 11.</p>
<p>The plugin and shaders: <a href="http://www.anatomicaltravel.com/research/downloads/AT_GenericShader3D_1_1.zip">Download GenericShader3D 1.1</a><a href="http://www.anatomicaltravel.com/research/downloads/AT_GenericShader3D_1_1.zip"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download GenericShader3D" alt="Download GenericShader3D" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p>Just the shaders: <a href="http://www.anatomicaltravel.com/research/downloads/ATGenericShader_f.cg">Download ATGenericShader_f.cg 1.1</a><a href="http://www.anatomicaltravel.com/research/downloads/ATGenericShader_f.cg"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download ATGenericShader_f.cg" alt="Download ATGenericShader_f.cg" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p>A sample comp showing some of the new shaders: <a href="http://www.anatomicaltravel.com/research/downloads/GS3_Update_C_C01.comp">Download Generic Shader Sample Comp 3 </a><a href="http://www.anatomicaltravel.com/research/downloads/GS3_Update_C_C01.comp"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Generic Shader Sample Comp 3" alt="Download Generic Shader Sample Comp 3" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/GS3_GoochChameleon_C_A01.jpg"><img class="aligncenter size-full wp-image-2109" title="GS3_Gooch_Chameleon" src="http://www.anatomicaltravel.com/research/wp-content/uploads/GS3_GoochChameleon_C_A01.jpg" alt="" width="600" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2011/04/generic-shader-addins-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bilateral Filter</title>
		<link>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 20:57:45 +0000</pubDate>
		<dc:creator>Sven</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Noise reduction]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1984</guid>
		<description><![CDATA[Smoothing an image without losing all the edges, that&#8217;s what the Bilateral Filter is made for. It basically performs a Gaussian blur not only in the image dimensions, but also on the color intensities. Therefore it will smooth homogeneous areas while at the same time respecting the image&#8217;s edges. The following example shows the effect [...]]]></description>
			<content:encoded><![CDATA[<p>Smoothing an image without losing all the edges, that&#8217;s what the Bilateral Filter is made for. It basically performs a Gaussian blur not only in the image dimensions, but also on the color intensities. Therefore it will smooth homogeneous areas while at the same time respecting the image&#8217;s edges. The following example shows the effect very well.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-2025" title="Bilateral Example" src="http://www.anatomicaltravel.com/research/wp-content/uploads/BilateralChipCropC.png" alt="" width="600" height="230" /></p>
<p>The current version is for Fusion 6.1 in 64 bit <em>only</em>. It provides the standard bilateral filter as well as the cross bilateral filter for grayscale and color images. DoD and RoI can be used to limit processing to a desired section of the image. Since the exact filter is very slow when applying large filter kernels, calculation in OpenCL with an optional approximation method is implemented as well. First tests on supported graphic cards show a speed up by a factor of 3-5 for OpenCL with default parameters. On gray scale images with large filter sizes, the approximation method can be more than a hundred times faster.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1999" style="border: 0pt none;" title="BilaterialTilePic_onblack" src="http://www.anatomicaltravel.com/research/wp-content/uploads/BilaterialTilePic_onblack.png" alt="" width="160" height="120" /></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/BilaterialTilePic_onblack.png"></a><a href="http://www.anatomicaltravel.com/research/downloads/BilateralFilter.zip">Download Bilateral Filter 1.2</a><a href="http://www.anatomicaltravel.com/research/downloads/BilateralFilter.zip"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Bilateral Filter" alt="Download Bilateral Filter" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/12/bilateral-filter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fun with OpenCL: Unit Vector</title>
		<link>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 14:35:46 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1939</guid>
		<description><![CDATA[Finally took the plunge and converted one of our icky Lua Fuses into shiny OpenCL.


It&#8217;s a very simple function, normalizing a vector and returning that in the RGB while putting the original length into the A.  In the case of the 4D normalize, you don&#8217;t get the length.  I have no idea what took me [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Finally took the plunge and converted one of our icky Lua Fuses into shiny <a href="http://www.khronos.org/opencl/">OpenCL</a>.</p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ImagesOpenCLUnitVector_onblack.png"><img class="size-full wp-image-1940  aligncenter" style="border: 0pt none;" title="OpenCLUnitVector" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ImagesOpenCLUnitVector_onblack.png" alt="" width="160" height="120" /></a></p>
<p style="text-align: center;"><a href="http://www.anatomicaltravel.com/research/downloads/OpenCLUnitVector.fuse">Download Unit Vector OpenCL Fuse </a><a href="http://www.anatomicaltravel.com/research/downloads/OpenCLUnitVector.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Unit Vector OpenCL Fuse" alt="Download Unit Vector OpenCL Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: left;">It&#8217;s a very simple function, normalizing a vector and returning that in the RGB while putting the original length into the A.  In the case of the 4D normalize, you don&#8217;t get the length.  I have no idea what took me so long to get around to this, it only took an hour or two to flesh out, but I got hung up by the fact that my video card, a Quadro 5000, does not, at this time, have OpenCL drivers that support float3.  Float4?  Fine.  Float2?  No problem.  Float3?  Fail.  So I went ahead and implemented the 3D normalize manually, and used the fast_normalize OpenCL function to make a 4D normalize.</p>
<p style="text-align: left;"><span id="more-1939"></span></p>
<p style="text-align: left;">If you want to make your own OpenCL Fuse, make sure you turn on &#8220;Verbose console messages&#8221; in the preferences.  Would have saved me a lot of frustration had I done that from the beginning.  If you want to know what your machine&#8217;s OpenCL capabilities are, there is a &#8220;Debug: List OpenCL Device Info&#8221; when you shift-click on the cache meter.</p>
<p style="text-align: left;">I also copy-pasted my old Lua Fuse in there, which is great for testing, but also as a fallback in case OpenCL isn&#8217;t available.  Since even with the OpenCL, you have to do certain tasks no matter what (reading in parameters, outputting an image, etc) the speedup from using OpenCL will increase as the image size increases.  So while a 16&#215;16 image might not see any improvement, a 4096&#215;4096 image will see a huge boost.</p>
<p style="text-align: left;">When I get a valid OpenCL 1.1 driver, I might revisit this to see if I can increase the speed, but we&#8217;ll have to see.  Couple other notes, currently the OpenCL modes are limited by the maximum image size supported by your device.  I didn&#8217;t implement any chunking to get around that, but you can use the Lua mode.  I didn&#8217;t implement ROIDS, but I&#8217;ll get around to that soon.  With the OpenCL, it&#8217;s silly fast, so that&#8217;s not the issue, but it breaks a nice DoD chain if you have one.  For now use SetDomain.  Finally, there is no workgroup size management.  This is a REALLY simple kernel (which is why I chose to do it first) so it&#8217;s unlikely you&#8217;ll hit the 5000ms limit, but I suppose the risk is still there.  In my machine a 2048&#215;1556 image takes about 6.7ms.</p>
<p style="text-align: left;">So what&#8217;s next?  Any tool that we can make with these dead-simple OpenCL functions would be prime candidates, but really, OpenCL opens up the possibility, like we saw with CUDA and <a href="http://www.anatomicaltravel.com/research/2009/07/krazykey-keying-with-cuda/" title="KrazyKey - pixel by pixel keying, with the goodness of CUDA">KrazyKey</a>, to make tools of very high computational complexity if they are still highly parallel.  When the next revision of the SDK comes out, we&#8217;ll try adding OpenCL to some of our C++ plugins, too.  There&#8217;s also the mysterious &#8220;gl&#8221; OpenGL interop which piques my interest.</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/10/opencl-unit-vector/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Metadata cameras and worldspace intersection passes</title>
		<link>http://www.anatomicaltravel.com/research/2010/03/metadata-cameras-and-worldspace-intersection-passes/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/03/metadata-cameras-and-worldspace-intersection-passes/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 15:39:39 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[3D Studio Max]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1584</guid>
		<description><![CDATA[We&#8217;ve been working on a stereoscopic production, and we&#8217;ve been coming up with helpful tricks to make things just a tiny bit easier.  Here&#8217;s an example comp that shows a couple of them.

The first is the embedding and extraction of a camera transform from the metadata of an EXR.   3ds max (and some other packages) [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">We&#8217;ve been working on a stereoscopic production, and we&#8217;ve been coming up with helpful tricks to make things just a tiny bit easier.  Here&#8217;s an example comp that shows a couple of them.</p>
<div id="attachment_1614" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/PositionPass_CameraMetadata_Screengrab.png"><img class="size-medium wp-image-1614 " style="border: 0pt none; margin: 0px;" title="Position Pass and Camera Metadata Screengrab" src="http://www.anatomicaltravel.com/research/wp-content/uploads/PositionPass_CameraMetadata_Screengrab-300x130.png" alt="Position Pass and Camera Metadata Screengrab" width="300" height="130" /></a><p class="wp-caption-text">Position Pass and Camera Metadata Screengrab</p></div>
<p><span id="more-1584"></span></p>
<p>The first is the embedding and extraction of a camera transform from the metadata of an EXR.   3ds max (and some other packages) write out the position, rotation, field of view, etc. to the metadata of EXR outputs.  Since we use this file format a lot, it&#8217;s a pretty easy thing to use in production, as it doesn&#8217;t require a special operation to export the data from the 3D scene.  It&#8217;s not as flexible as outputting an FBX, but it can be done without opening (or even finding) the 3D file.  The transform is stored in the metadata as a 4&#215;4 float matrix, and using SimpleExpressions, you can apply the transform to a Fusion 3D Camera per-frame.  If you&#8217;ve ever used RPF files with Combustion, you&#8217;re probably already familiar with the workflow, we&#8217;re just doing that with EXR&#8217;s and Fusion now.</p>
<p>The second technique is the rendering of a worldspace intersection pass.  By rendering the location of the surface as an RGB vector, you can find the location, per pixel, of each sample in the render.  Combined with even a hardware rendered &#8220;beauty pass&#8221;, you can easily place your render into the &#8220;world&#8221;.  You&#8217;re limited to only seeing the first intersections, and only what the camera sees, but in many cases that&#8217;s all you need to see.  It&#8217;s smaller and faster than an animated FBX sequence, and you can play around with it with image tools.</p>
<p>The fun part is combining these techniques, getting both the shape of your scene and the location of your camera in one quickly rendered EXR sequence.  You can then use this information to try out some various camera separation and convergence setups using the stereoscopic rendering of Fusion, which can range from simple anaglyph to  full quad-buffer shutter setups.  The quality isn&#8217;t great, but it&#8217;s interactive, and until 3ds max gets better rendering of stereoscopy in the viewports, it&#8217;s a fast way to test out camera settings.</p>
<p>The pass and the camera can also be used in the composite as well, for making mattes, placing elements, etc.</p>
<a href="http://www.anatomicaltravel.com/research/downloads/PositionPass_CameraMetadata_G01.rar">Download Position Pass and Camera Metadata example </a><a href="http://www.anatomicaltravel.com/research/downloads/PositionPass_CameraMetadata_G01.rar"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download Position Pass and Camera Metadata example" alt="Download Position Pass and Camera Metadata example" src="/research/images/download.gif" alt="" width="14" height="16" /></a>
<p>(85MB .rar file)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/03/metadata-cameras-and-worldspace-intersection-passes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Color Blindness</title>
		<link>http://www.anatomicaltravel.com/research/2010/02/color-blindness/</link>
		<comments>http://www.anatomicaltravel.com/research/2010/02/color-blindness/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 05:56:55 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1326</guid>
		<description><![CDATA[A sizable segment of the population suffers from color blindness, enough so that it&#8217;s worth considering the implications on color palettes and usability.  This tool allows you to simulate the ways that various color vision deficiencies will affect you imagery.  I&#8217;ve noticed that some of the images we create probably won&#8217;t read very well to [...]]]></description>
			<content:encoded><![CDATA[<p>A sizable segment of the population suffers from color blindness, enough so that it&#8217;s worth considering the implications on color palettes and usability.  This tool allows you to simulate the ways that various color vision deficiencies will affect you imagery.  I&#8217;ve noticed that some of the images we create probably won&#8217;t read very well to some people, and this easily lets us check if we&#8217;ve created something that could be ambiguous.</p>
<p style="text-align: center;">
<div id="attachment_1571" class="wp-caption aligncenter" style="width: 170px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorBlind_onblack.png"><img class="size-full wp-image-1571 " style="border: 0pt none;" title="ColorBlind fuse" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorBlind_onblack.png" alt="ColorBlind fuse" width="160" height="120" /></a><p class="wp-caption-text">ColorBlind fuse</p></div>
<p><span id="more-1326"></span></p>
<p style="text-align: left;">It&#8217;s not a perfect simulation, since it only does a linear color transform, not accounting for local color frequency, and it doesn&#8217;t account for any output specific color shifts.  Nothing unusual when it comes to color, of course.  Typical things to consider, colors may look different on an LCD screen compared to web offset printing.</p>
<p style="text-align: left;">You can use this as a viewer macro, though I may at some point make a proper Cg viewshader.</p>
<p style="text-align: left;"><a href="http://www.anatomicaltravel.com/research/downloads/ColorBlind.fuse">Download ColorBlind Fuse 1.0</a><a href="http://www.anatomicaltravel.com/research/downloads/ColorBlind.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download ColorBlind Fuse" alt="Download ColorBlind Fuse" src="/research/images/download.gif" alt="" width="14" height="16" /></a></p>
<p style="text-align: left;">
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2010/02/color-blindness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color Matrix Transform</title>
		<link>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/</link>
		<comments>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 00:55:51 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Fuse]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1555</guid>
		<description><![CDATA[Fusion 6 added a Color Matrix tool that lets you enter your own matrix by hand, but the biggest problem with it is the lack of any methods to modify it with.  You can&#8217;t even assign controllers to it.
Fuses, however,  let you use handy methods to modify a matrix.  I&#8217;ve used some of them to [...]]]></description>
			<content:encoded><![CDATA[<p>Fusion 6 added a Color Matrix tool that lets you enter your own matrix by hand, but the biggest problem with it is the lack of any methods to modify it with.  You can&#8217;t even assign controllers to it.</p>
<p>Fuses, however,  let you use handy methods to modify a matrix.  I&#8217;ve used some of them to create an RGB equivalent of the 3D Transform tool.  It has a similar UI, just as 3TT does, but this modifies RGB, not XYZ or UVW.</p>
<p style="text-align: center;">
<div id="attachment_1571" class="wp-caption aligncenter" style="width: 170px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorMatrixTransform_onblack.png"><img class="size-full wp-image-1571 " style="border: 0pt none;" title="ColorMatrixTransform_onblack" src="http://www.anatomicaltravel.com/research/wp-content/uploads/ColorMatrixTransform_onblack.png" alt="Color Matrix Tranform fuse" width="160" height="120" /></a><p class="wp-caption-text">Color Matrix Transform fuse</p></div>
<p><span id="more-1555"></span></p>
<p>Why would you want to do this?  Imagine that your RGB isn&#8217;t color, but UVW coordinates from a 3D render pass.  Now you can do texture transformations by using this tool to modify the mapping.  Also, if you have comps where you&#8217;re converting XYZ to RGB, you can use this to post-edit the tranformation, so you can apply spatial transformations in the form of XYZ -&gt; RGB -&gt; ColorMatrixTransform -&gt; XYZ.</p>
<p>In the future I might add an input and output similar to the Color Matrix tool so you can insert a matrix found elsewhere, as well as generate an output matrix you can read off, but for the time being, input matrices can processed by the Color Matrix tool just prior to the ColorMatrixTranform tool, just remember to use 32bit float colors.</p>
<p>If you&#8217;re a bit confused as to what the tool is doing, try viewing the results in the 3D Histogram SubV.   Really helps you get your bearings.</p>
<a href="http://www.anatomicaltravel.com/research/downloads/ColorMatrixTransform3.fuse">Download ColorMatrix Transform 1.1</a><a href="http://www.anatomicaltravel.com/research/downloads/ColorMatrixTransform3.fuse"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download ColorMatrix Transform" alt="Download ColorMatrix Transform" src="/research/images/download.gif" alt="" width="14" height="16" /></a>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2009/10/color-matrix-transform/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Updates from SIGGraph</title>
		<link>http://www.anatomicaltravel.com/research/2009/08/updates-from-siggraph/</link>
		<comments>http://www.anatomicaltravel.com/research/2009/08/updates-from-siggraph/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 00:46:19 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[Medical imaging]]></category>
		<category><![CDATA[Volume Rendering]]></category>
		<category><![CDATA[SIGGraph]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1463</guid>
		<description><![CDATA[We&#8217;ve seen some pretty cool things at SIGGraph so far&#8230;
Gel Sight is a retrographic surface imaging technique that was wonderfully elegant in it&#8217;s simplicity and effectiveness.  They also gave out free samples&#8230;

Nvidia had a stereographic interactive realtime rendering of the full 13GB Visible Human dataset being rendered in CUDA on 3 Quadroplexi.  Very impressive.  The [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve seen some pretty cool things at SIGGraph so far&#8230;</p>
<div class="wp-caption alignnone" style="width: 490px"><a href="http://www.mit.edu/~kimo/gelsight/faq.html"><img class=" " style="border: 0pt none;" title="Gel Sight" src="http://people.csail.mit.edu/kimo/gelsight/images/overview.jpg" alt="Gel Sight" width="480" height="124" /></a><p class="wp-caption-text">Gel Sight</p></div>
<p style="text-align: justify;">Gel Sight is a retrographic surface imaging technique that was wonderfully elegant in it&#8217;s simplicity and effectiveness.  They also gave out free samples&#8230;</p>
<p style="text-align: justify;">
<div id="attachment_1470" class="wp-caption alignnone" style="width: 310px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/08062009169.jpg"><img class="size-medium wp-image-1470 " style="border: 0pt none;" title="Cuda raycasting 13GB of cryomacrotome goodness (in stereo)" src="http://www.anatomicaltravel.com/research/wp-content/uploads/08062009169-300x225.jpg" alt="Cuda raycasting 13GB of cryomacrotome goodness (in stereo)" width="300" height="225" /></a><p class="wp-caption-text">Cuda raycasting 13GB of cryomacrotome goodness (in stereo)</p></div>
<p><a href="http://www.nvidia.com/object/cuda_home.html#">Nvidia </a>had a stereographic interactive realtime rendering of the full 13GB Visible Human dataset being rendered in CUDA on 3 Quadroplexi.  Very impressive.  The glasses used were the new Nvidia active shutter glasses, and were very effective.</p>
<div class="wp-caption alignnone" style="width: 320px"><a href="http://touchco.com/"><img style="border: 0pt none;" title="Resistive multitouch in many form factors" src="http://touchco.com/ifsr_hand.jpg" alt="" width="310" height="233" /></a><p class="wp-caption-text">Resistive multitouch in many form factors</p></div>
<p><a href="http://www.touchco.com">A new startup</a> out of NYU showed a novel resistive multitouch device.  Very effective, low cost, and suitable to many applications.</p>
<p>UPDATE: Sorry about the broken link, Touchco was bought up by Amazon, so pretty much all of the cool applications they had in mind are replaced by the Kindle 3.</p>
<div id="attachment_1471" class="wp-caption alignnone" style="width: 310px"><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/08062009171.jpg"><img class="size-medium wp-image-1471 " style="border: 0pt none;" title="VLC madness courtesy 2 Fusion-io cards" src="http://www.anatomicaltravel.com/research/wp-content/uploads/08062009171-300x225.jpg" alt="VLC madness courtesy 2 Fusion-io cards" width="300" height="225" /></a><p class="wp-caption-text">VLC madness courtesy 2 Fusion-io cards</p></div>
<p><a title="Fusion-io" href="http://www.fusionio.com/Default.aspx">Fusion-io</a> showed their new &#8220;budget&#8221; nonvolatile storage adapter, the ioXtreme.   $900 gets you 80GB, with a read speed o 700MB/s.  The IO&#8217;s aren&#8217;t very high, much less their enterprise solutions, but that doesn&#8217;t matter if you are reading sequential data.  The booth was pretty crazy, too, one of the better live hardware demos I&#8217;ve seen in a while.  I&#8217;ll get some pictures tomorrow.  VLC never looked so impressive&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2009/08/updates-from-siggraph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make IFLs in a Pinch</title>
		<link>http://www.anatomicaltravel.com/research/2009/06/make-ifls-in-a-pinch/</link>
		<comments>http://www.anatomicaltravel.com/research/2009/06/make-ifls-in-a-pinch/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 22:38:26 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[3D Studio Max]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[IFL cmd]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1361</guid>
		<description><![CDATA[Create IFLs with commandline]]></description>
			<content:encoded><![CDATA[<p>You never know what files you are going to get from customers.  After several phone calls talking through using FTP or shipping a hard drive, confirming compression usage, acceptable file formats there is still the possibility weird naming schemes.</p>
<p>This is example of a schema that came through last week.</p>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_0_1.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_0_2.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_0_3.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_0_4.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_1_1.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_1_2.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_1_3.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_1_4.jpg</td>
</tr>
<tr>
<td width="500" valign="top">c:\data\CustomerX\study01\re-d01_001_2_1.jpg</td>
</tr>
<tr>
<td width="500" valign="top">&#8230;&#8230;..</td>
</tr>
</tbody>
</table>
<p>I was about to whip out my favorite <a href="http://www.bulkrenameutility.co.uk/Main_Intro.php" target="_blank">file renaming software</a>, but I wanted to retain the original names for communication with the customer.  The solution is pretty easy so I thought I&#8217;d share it.  There might be a tool that does this already but its good to know how to do this on any machine without any special tool installed.  We&#8217;re going to fix this problem with CMD.exe. muahahaha!</p>
<p><span id="more-1361"></span></p>
<h4>What is an IFL?</h4>
<p>IFL or &#8220;image file list&#8221; files are required for any file sequence work in 3ds Max.  Other programs, like After Effects implicitly work with sequences by name.  3ds Max creates IFLs every time you ask to use an image file and it detects a sequence.  This process happens so fast I bet most people click through the dialog without thinking about it. Here is a pic, in case you forgot.</p>
<p><a href="http://www.anatomicaltravel.com/research/wp-content/uploads/CropperCapture50.jpg"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://www.anatomicaltravel.com/research/wp-content/uploads/CropperCapture50_thumb.jpg" border="0" alt="CropperCapture[50]" width="388" height="216" /></a></p>
<p>If you open an IFL you&#8217;ll see it just contains text with a file name on each line.  They may have a full path, or a relative path, or just the filename.  Each file can be a completely different name or extension. ( There are other features of this simple format but I can&#8217;t seem to find any documentation on the spec.)  So how do we generate this list of files?</p>
<h4>Solution</h4>
<p>In the long long ago, you had to know some basic shell operations to do anything.  Otherwise you&#8217;d be staring at a blinking cursor until someone came over and did it for you.  Change directory, list files, change directory, list files, and then type the name of the program. Happy times! If this typing exercise got in the way of playing your games, you&#8217;d learn it real fast too.  And twenty plus years later, this inane knowledge saves the day.  I know command line isn&#8217;t for everyone but a few quick tips are worth knowing. Here is how to make the list with cmd.exe</p>
<h4><span style="color: #eee786;">c:\data\CustomerX\study01&gt;dir /b *.jpg &gt; study01.ifl</span></h4>
<p>Easy, right? Let&#8217;s break it down.</p>
<p><strong>c:\data\CustomerX\stud01&gt;</strong> <em>&#8211;this is the current path. If it&#8217;s not you&#8217;ll have to add this to the arguments of the &#8220;dir&#8221; command. So if the current path is c:\ and the files are on the network, it would be something like c:\&gt;dir /b \\server\share\data\study01\*.jpg &gt; \\server\share\data\study01\study01.ifl</em></p>
<p><strong>dir </strong> <em>&#8211; this is the command to list the contents of the directory/folder (type dir /? for help)</em></p>
<p><strong>/b</strong> <em> &#8212; switch to only list the bare name</em></p>
<p><strong>*.jpg</strong> <em>&#8211; this is the filter. in this case &#8220;all the files with extension jpg&#8221;. You could put a path here too. ie.(..\study02\new\test01\*.tiff)</em></p>
<p><strong>&gt;</strong> <em>&#8211; the right bracket means redirect output in most command shells. This will send the output to a file instead of the screen.</em></p>
<p><strong>study01.ifl  &#8211;</strong><em> This is the file that will be created.</em></p>
<p>Not so hard. You can also use /s to recursively list the files in subdirectories.  Now you can use this IFL in Fusion, Max, and many other packages.</p>
<p><strong><em>Bonus: add a number after the filename. This will hold that frame that duration.</em></strong></p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="400" valign="top">image0001.tif 60</td>
</tr>
<tr>
<td width="400" valign="top">image0002.tif</td>
</tr>
<tr>
<td width="400" valign="top">image0003.tif</td>
</tr>
<tr>
<td width="400" valign="top">image0004.tif</td>
</tr>
<tr>
<td width="400" valign="top">image0005.tif 100</td>
</tr>
</tbody>
</table>
<p><strong><em> </em></strong></p>
<p>Ben Lipman<br />
Tool Programmer/TD<br />
Anatomical Travelogue R&amp;D</p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7353e02d-4019-4676-b78f-d1b502b7ad36" class="wlWriterSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/IFL">IFL</a>,<a rel="tag" href="http://technorati.com/tags/cmd">cmd</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2009/06/make-ifls-in-a-pinch/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Accidental calculus (and temporal kernels)</title>
		<link>http://www.anatomicaltravel.com/research/2009/05/accidental-calculus-and-temporal-kernels/</link>
		<comments>http://www.anatomicaltravel.com/research/2009/05/accidental-calculus-and-temporal-kernels/#comments</comments>
		<pubDate>Fri, 29 May 2009 19:09:25 +0000</pubDate>
		<dc:creator>Chad</dc:creator>
				<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Graphics General]]></category>
		<category><![CDATA[Image processing]]></category>
		<category><![CDATA[3D filtering]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[Silly tests]]></category>

		<guid isPermaLink="false">http://www.anatomicaltravel.com/research/?p=1297</guid>
		<description><![CDATA[I was working on a little job today with a 2D temporally variant scalar field.
You know, B&#38;W footage.
I needed to find the parts of the data that were changing the most and compare them to the overall data and the maximum delta.
What I ended up with, once Ben pointed it out to me, was a [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a little job today with a 2D temporally variant scalar field.</p>
<p>You know, B&amp;W footage.</p>
<p>I needed to find the parts of the data that were changing the most and compare them to the overall data and the maximum delta.</p>
<p>What I ended up with, once Ben pointed it out to me, was a simple example of calculus laid out in a couple tools.   The simplest case is just taking the frames I have and interpolating the same number of frames, so there&#8217;s no missing samples.  It&#8217;s silly, really.</p>
<p>But you can try it with other sampling, so there&#8217;s also an example of a Sobel filter, with a 1D kernel perpendicular to the normal 2D one.  Cute really.</p>
<p>If you checked out my <a href="http://www.anatomicaltravel.com/research/2009/05/interactive-smoothing/" title="Interactive Smoothing">interactive smoothing</a> comp, you can see how I used a Sobel filter to make the forward facing laser pointer by looking at the differentiation of the R and G channels over time.  Same idea, just different way of expressing the temporal dimension.</p>
<p>I&#8217;m tossing in a Laplacian filter too, just for fun, it&#8217;s not useful for the calculus part, but it was easy to do, and shows how you can change the kernel to make different effects.  It&#8217;s possible to also evaluate 2D or 3D kernels this way, too.  The temporal offsets can be combined with spatial offsets so you could make a 3D blur filter, or a 3D sharpen.  Or a 3D Unsharp Mask, as I&#8217;ve also included.</p>
<a href="http://www.anatomicaltravel.com/research/downloads/calculus_temporalkernels_example.comp">Download 3D filtering sample (simple calculus and temporal filter examples) </a><a href="http://www.anatomicaltravel.com/research/downloads/calculus_temporalkernels_example.comp"><img class="alignnone" style="border: 0pt none; vertical-align: middle; margin-left: 10px;" title="Download 3D filtering sample (simple calculus and temporal filter examples)" alt="Download 3D filtering sample (simple calculus and temporal filter examples)" src="/research/images/download.gif" alt="" width="14" height="16" /></a>
]]></content:encoded>
			<wfw:commentRss>http://www.anatomicaltravel.com/research/2009/05/accidental-calculus-and-temporal-kernels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

