<?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>Independent Developer &#187; graphics</title>
	<atom:link href="http://www.independentdeveloper.com/archive/tag/graphics/feed" rel="self" type="application/rss+xml" />
	<link>http://www.independentdeveloper.com</link>
	<description>Code, Art and Everything In-Between</description>
	<lastBuildDate>Tue, 11 Aug 2009 21:32:23 +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>AC3D Plugin: Bake Texture Layout</title>
		<link>http://www.independentdeveloper.com/archive/2007/12/06/ac3d-plugin-bake-texture-layout</link>
		<comments>http://www.independentdeveloper.com/archive/2007/12/06/ac3d-plugin-bake-texture-layout#comments</comments>
		<pubDate>Thu, 06 Dec 2007 17:33:56 +0000</pubDate>
		<dc:creator>Lisa</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tools and Plugins]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[ac3d]]></category>
		<category><![CDATA[AC3D plug-ins]]></category>
		<category><![CDATA[bake]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[plug ins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[texture baking]]></category>
		<category><![CDATA[texture map]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[uv map]]></category>

		<guid isPermaLink="false">http://www.independentdeveloper.com/archive/2007/12/06/ac3d-plugin-bake-texture-layout</guid>
		<description><![CDATA[This plugin &#8220;bakes&#8221; a texture from one object to another, allowing you to transfer texture data between two models with the same geometry but different texture coordinates&#8211;without having to re-paint the texture bitmap! This is useful if you start to paint a texture, and change your mind later about the UV map; or for games [...]]]></description>
			<content:encoded><![CDATA[<p>This plugin &#8220;bakes&#8221; a texture from one object to another, allowing you to transfer texture data between two models with the same geometry but different texture coordinates&#8211;without having to re-paint the texture bitmap! This is useful if you start to paint a texture, and change your mind later about the UV map; or for games when you can&#8217;t change the layout of the map for technical reasons, but would like different UVs for convenience during painting. It&#8217;s also good for fitting text onto a warped surface or other projections that would be difficult or impossible to paint by hand.</p>
<p><strong><a href="/files/baketexture.zip" title="Download">Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)</a></strong>
<p align="center"><a href="/images/bake.jpg" rel="lightbox" title="Texture Baking Example"><img src="/images/bake_thumb.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.independentdeveloper.com/archive/2007/12/06/ac3d-plugin-bake-texture-layout/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wearable Mo-Cap</title>
		<link>http://www.independentdeveloper.com/archive/2007/11/28/wearable_mocap</link>
		<comments>http://www.independentdeveloper.com/archive/2007/11/28/wearable_mocap#comments</comments>
		<pubDate>Wed, 28 Nov 2007 05:00:00 +0000</pubDate>
		<dc:creator>Lisa</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d animation]]></category>
		<category><![CDATA[3d graphics]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[mo cap]]></category>
		<category><![CDATA[motion capture]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This new wearable motion capture system is so compact, it can even be used to capture movement in otherwise impossible environments like behind the wheel of a car! [youtube:http://www.youtube.com/watch?v=V0yT8mwg9nc 350 292] The most interesting part? The authors claim to have built their prototype from off-the-shelf components for only around $3K. Read the paper here.]]></description>
			<content:encoded><![CDATA[<p>This new wearable motion capture system is so compact, it can even be used to capture movement in otherwise impossible environments like behind the wheel of a car!</p>
<p>[youtube:http://www.youtube.com/watch?v=V0yT8mwg9nc 350 292]</p>
<p>The most interesting part? The authors claim to have built their prototype from off-the-shelf components for only around $3K. <a href="http://people.csail.mit.edu/jovan/assets/papers/vlasic-2007-pmc.pdf" target="_blank">Read the paper here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.independentdeveloper.com/archive/2007/11/28/wearable_mocap/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Ambient Occlusion?</title>
		<link>http://www.independentdeveloper.com/archive/2007/11/27/what_is_ambient_occlusion</link>
		<comments>http://www.independentdeveloper.com/archive/2007/11/27/what_is_ambient_occlusion#comments</comments>
		<pubDate>Tue, 27 Nov 2007 10:07:00 +0000</pubDate>
		<dc:creator>Lisa</dc:creator>
				<category><![CDATA[3D Tutorials]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d graphics]]></category>
		<category><![CDATA[ambient occlusion]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[global illumination]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[monte carlo]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ray casting]]></category>
		<category><![CDATA[ray tracing]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[ssao]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ambient occlusion is a lighting technique that is commonly used to create soft shadows on objects. Ambient occlusion isn&#8217;t used to create the type of shadows that are cast from objects with a light shining directly on them. Instead, ambient occlusion generates the type of deep shadows that appear in the corners or creases of [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Ambient occlusion</strong> is a lighting technique that is commonly used to create soft shadows on objects. Ambient occlusion isn&#8217;t used to create the type of shadows that are cast from objects with a light shining directly on them. Instead, ambient occlusion generates the type of deep shadows that appear in the corners or creases of things, where it is hard for the light to reach.</p>
<p>Technically speaking, ambient occlusion is a global illumination technique. However, in common usage of the term it is often referred to as a cheap <em>alternative</em> to global illumination. To clear up any confusion, what most renderers refer to as &#8220;global illumination&#8221; is actually an amalgamation of several techniques such as radiosity, metropolis light transport, image-based lighting or photon mapping. The actual techniques used differ slightly from renderer to renderer. Some renderers include an ambient occlusion term as part of their global illumination calculation; others do not.</p>
<p>Like most global illumination techniques, ambient occlusion is dependent on the other geometry in the scene. Ambient occlusion on its own generates less realistic lighting than &#8220;full&#8221; global illumination. However, ambient occlusion is much faster and less complex to calculate than other methods which is why it is still popular among game developers and in production animation.</p>
<p class="photocaption" align="center"><a href="/images/ambient-occlusion.jpg" rel="lightbox" title=""><img src="/images/ambient-occlusion_thumb.jpg" alt="" /></a><br />
(Left) Without Ambient Occlusion. (Right) With Ambient Occlusion<br />
<em>Click for larger image.</em></p>
<p><span id="more-47"></span></p>
<h4>How Does Ambient Occlusion Work?</h4>
<p>To understand how ambient occlusion works, it&#8217;s helpful to break down the terms.</p>
<p>&#8220;Ambient&#8221; refers to the indirect light in the scene. Ambient light is light that doesn&#8217;t come from an identifiable light source. It is light that is accumulated from stray photons bouncing around the room. Photographers sometimes also call this kind of light source &#8220;available light&#8221; or &#8220;existing light&#8221;.</p>
<p>&#8220;Occlusion&#8221; is the act of one object blocking another object. For example, if you are taking a picture and at the last moment a truck drives in front of you blocking the shot, the truck is &#8220;occluding&#8221; your view of your subject. Occlusion is important to computer graphics for many things besides just shadows. For example, many renderers can optimize the scene and render faster by culling objects that are occluded, or hidden, by other objects.</p>
<p>Ambient occlusion is a measurement of how much ambient light is blocked by nearby things. If an object or surface is occluded, less light can reach it, which means the surface will be in shadow. Creases, corners, hollows and the undersides of things tend to have a lot of ambient occlusion.</p>
<h4>For Artists: Rendering with Ambient Occlusion</h4>
<p>Most modern renderers support either some form of global illumination or ambient occlusion; many support both alone or in combination.</p>
<p>Ambient occlusion improves your render by making small details more visible and improving depth perception. A lot of the way humans perceive depth has to do with the size, darkness, and placement of shadows. Using ambient occlusion to add shading to your scene will help the viewer comprehend the placement of objects better.</p>
<p class="photocaption" align="center"><a href="/images/poser-ao.jpg" rel="lightbox" title=""><img src="/images/poser-ao.thumb.jpg" alt="" /></a><br />
Ambient occlusion in Poser 6</p>
<p>While each renderer is different, often the basic concepts are pretty similar between many of them. As an example, here&#8217;s how you can add ambient occlusion to your render in Poser:</p>
<p>- Click to the Materials tab<br />
- Use the eye dropper to select the material you want to edit<br />
- In the Material Properties node editor, click the Set Up Ambient Occlusion Button. This will add an ambient occlusion node to you material shader.</p>
<p>Poser 6 gives you four properties you can adjust on the ambient occlusion node:</p>
<p><strong>Samples</strong> &#8211; The number of ray samples that will be cast. The more rays, the finer the lighting, but the longer the render. Keep this number as low as you can unless the lighting looks splotchy, in which case, turn it up.</p>
<p><strong>MaxDist</strong> &#8211; The maximum distance the ray will test. Larger values generally result in more shadows.</p>
<p><strong>RayBias</strong> &#8211; The smallest distance the ray will test for objects. If you get black blotches on your figure, very slightly increase your ray bias. If you increase it too much, you will start missing shadows, so don&#8217;t turn it up more than you need to.</p>
<p><strong>Strength</strong> &#8211; The blend weight of the effect.</p>
<h4>For Programmers: Implementing Ambient Occlusion</h4>
<p>As far as bang for the buck, ambient occlusion is one of the fastest ways to improve the quality of your game&#8217;s lighting without a tremendous amount of pain. There are many, many algorithms out there for calculating ambient occlusion and each has advantages and disadvantages depending on your engine features. That said, there are two methods in particular I&#8217;d like to point out.</p>
<p><strong>Monte Carlo Ray Casting Method</strong><br />
I&#8217;m not sure if this is the <em>oldest</em> method for calculating ambient occlusion or not, but it was certainly the first method learned. Assuming you already have some sort of ray-triangle collision code, this method is very easy to understand and implement.</p>
<p>For each point you want to calculate lighting for, shoot out a number of random rays. (In truth, you don&#8217;t really want <em>completely</em> random rays&#8230; small random offsets from your surface normal seem to work best.) If the ray hits something, increase the shadow value proportional to the distance along the ray where the collision occurred.</p>
<p>With enough samples per point, this method can produce very good results. The downside is that this method can be very slow. Many games utilizing this method don&#8217;t calculate the ambient occlusion in real-time&#8230; the ambient occlusion is calculated when the level is loaded or off-line when the level is built, and the results are stored in a texture map.</p>
<p><em>[Incidentally... yes... looking at Poser's settings, I'm guessing this or something very similar is the method they are using!]</em></p>
<p><strong>Screen Space Method</strong><br />
Screen space ambient occlusion has been generating a lot of buzz lately. Screen space rendering methods in general are always desirable to real-time programmers because they run in constant time and constant memory, and aren&#8217;t inhibited by scene complexity. A good starting point for learning about screen space ambient occlusion is <a href="http://delivery.acm.org/10.1145/1290000/1281671/p97-mittring.pdf?key1=1281671&amp;key2=9942678811&amp;coll=ACM&amp;dl=ACM&amp;CFID=15151515&amp;CFTOKEN=6184618" title="Siggraph Paper" target="_blank">Martin Mittring of Crytek&#8217;s Siggraph 2007 presentation</a>.</p>
<p>Basically, the notion is that by sampling surrounding points in the depth buffer you can estimate shadowed areas. Think of it (sort of) like running an edge-detection routine on the z-buffer. The method can produce some artifacts, but there are number of ways to combat them&#8230; and the benefit of course is that this method is fast even on complex scenes.</p>
<p>Again, there are many methods out there and numerous variations, but hopefully this is enough to get you pointed in the right direction!</p>
<p>Questions? Ideas? Links to your favorite method? Post a comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.independentdeveloper.com/archive/2007/11/27/what_is_ambient_occlusion/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Make a Torus</title>
		<link>http://www.independentdeveloper.com/archive/2007/11/02/how_to_make_a_torus</link>
		<comments>http://www.independentdeveloper.com/archive/2007/11/02/how_to_make_a_torus#comments</comments>
		<pubDate>Fri, 02 Nov 2007 07:02:00 +0000</pubDate>
		<dc:creator>Lisa</dc:creator>
				<category><![CDATA[3D Tutorials]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[3d modeling]]></category>
		<category><![CDATA[ac3d]]></category>
		<category><![CDATA[cg]]></category>
		<category><![CDATA[conic section]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[torus]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This step-by-step guide will show you how to make a torus in AC3D using the Revolve tool. Select the ellipse tool. (Click for larger image.) 1) Select the ellipse tool. Be sure to select the ellipse, which leaves only an outline, and not the disc, which draws a solid circle. They may look the same, [...]]]></description>
			<content:encoded><![CDATA[<p>This step-by-step guide will show you how to make a torus in AC3D using the Revolve tool.</p>
<p><span id="more-35"></span></p>
<p class="photocaption" align="center"><a href="/images/torus_001.jpg" rel="lightbox" title=""><img src="/images/torus_001.thumb.jpg" alt="" /></a><br />
Select the ellipse tool. (Click for larger image.)</p>
<p>1) Select the ellipse tool. Be sure to select the ellipse, which leaves only an outline, and not the disc, which draws a solid circle. They may look the same, but the disc will leave solid faces inside your finished torus.</p>
<p class="photocaption" align="center"><a href="/images/torus_002.jpg" rel="lightbox" title=""><img src="/images/torus_002.thumb.jpg" alt="" /></a><br />
The control key will let you draw a perfect circle every time.</p>
<p>2) Hold down the &#8216;control&#8217; key to constrain the shape, and draw a circle. Be sure to draw your circle slightly to the left of the Y axis, not directly on the axis. The distance between the Y axis and the center of your circle will be the inner radius of your finished torus.</p>
<p class="photocaption" align="center"><a href="/images/torus_003.jpg" rel="lightbox" title=""><img src="/images/torus_003.thumb.jpg" alt="" /></a><br />
Make sure your axis is set to &#8216;Y&#8217; to make a torus.<br />
Otherwise, you may get a lump instead.</p>
<p>3) From the Object menu, select Revolve. This will open the Revolve tool. Make sure your axis of revolution is set to &#8216;Y&#8217;. Make sure the number of degrees is set to 360. Set the offset to 0.0. Sections can be set to anything you like; the more sections you choose, the smoother your torus will be, but it will use more polygons. Click &#8216;Revolve&#8217; to create the torus.</p>
<p class="photocaption" align="center"><a href="/images/torus_004.jpg" rel="lightbox" title=""><img src="/images/torus_004.thumb.jpg" alt="" /></a><br />
The finished torus.</p>
<p>That&#8217;s it! You can create a lot of different shapes this way. Changing the offset, in particular, will let you create all kinds of crazy shapes like screw threads and spirals too. Experiment and have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.independentdeveloper.com/archive/2007/11/02/how_to_make_a_torus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Aware Image Resizing</title>
		<link>http://www.independentdeveloper.com/archive/2007/10/30/content_aware_image_resizing</link>
		<comments>http://www.independentdeveloper.com/archive/2007/10/30/content_aware_image_resizing#comments</comments>
		<pubDate>Tue, 30 Oct 2007 07:48:00 +0000</pubDate>
		<dc:creator>Lisa</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[computer programming]]></category>
		<category><![CDATA[content aware]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[image resizing]]></category>
		<category><![CDATA[image retargeting]]></category>
		<category><![CDATA[image scaling]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[siggraph]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A friend at work just showed me this, and boy is it cool. &#8220;Seam Carving&#8221; is a new algorithm for image retargeting. Image retargeting is an alternative to scaling and cropping, but it is content-aware. Scaled images suffer from the problem that the re-sized content may be too small to see. Cropped images may eliminate [...]]]></description>
			<content:encoded><![CDATA[<p>A friend at work just showed me this, and boy is it cool. <strong>&#8220;Seam Carving&#8221;</strong> is a new algorithm for image retargeting. Image retargeting is an alternative to scaling and cropping, but it is content-aware. Scaled images suffer from the problem that the re-sized content may be too small to see. Cropped images may eliminate important content. Image retargeting solves both problems by keeping the image elements the same size and simply eliminating the &#8220;unimportant&#8221; parts of the image.</p>
<p>Graphic artists occasionally modify images this way by hand when doing page layouts for magazines&#8211;think of it like a visual form of copy-fitting&#8211;but an automated approach opens a world of possibilities. The number of of potential practical applications are immense, and include everything from dynamic web page re-flowing to widescreen-to-standard aspect texture fitting for games.</p>
<p align="center">
[youtube:http://www.youtube.com/watch?v=vIFCV2spKtg 350 292]<br />
<strong>A <a href="http://www.faculty.idc.ac.il/arik/IMRet-All.mov" title="Seam Carving Video" target="_blank">better version of the video</a> as well as the <a href="http://www.faculty.idc.ac.il/arik/imret.pdf" title="Seam Carving for Content-Aware Image Resizing" target="_blank">research paper</a> can be found on <a href="http://www.faculty.idc.ac.il/arik/" title="Dr. Shamir's Research" target="_blank">Dr. Shamir&#8217;s</a> home page</strong>. What&#8217;s really neat is how straight-forward the method seems to be. The paper is well worth the read if you are interested in graphics algorithms.</p>
<p>If you&#8217;d like to play around with this technique on your own images, <strong>someone&#8217;s already <a href="http://rsizr.com/" title="Flash Image Retargeting" target="_blank">implemented the algorithm in Flash</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.independentdeveloper.com/archive/2007/10/30/content_aware_image_resizing/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.faculty.idc.ac.il/arik/IMRet-All.mov" length="17942449" type="video/quicktime" />
		</item>
	</channel>
</rss>
