<?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>Harry Nesbitt - Illustration and Design &#187; 3D</title>
	<atom:link href="http://www.harrynesbitt.com/old/blog/category/3d/feed" rel="self" type="application/rss+xml" />
	<link>http://www.harrynesbitt.com/old</link>
	<description></description>
	<lastBuildDate>Wed, 23 Apr 2014 09:26:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Experimenting with Unity: Part Two</title>
		<link>http://www.harrynesbitt.com/old/blog/experimenting-with-unity-part-2</link>
		<comments>http://www.harrynesbitt.com/old/blog/experimenting-with-unity-part-2#comments</comments>
		<pubDate>Sun, 10 Feb 2013 19:13:35 +0000</pubDate>
		<dc:creator>Harry Nesbitt</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.harrynesbitt.com/?p=1388</guid>
		<description><![CDATA[This is the second in an ongoing series of Unity related posts. Click here to read part one and try the day/night demo. The next thing I set out to develop in Unity was a simple, touch controller &#8216;avatar&#8217; that could move with a natural, fluid motion &#8211; the idea being that this simple interaction would [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1452" alt="player" src="http://www.harrynesbitt.com/old/wp-content/uploads/2013/02/player1.png" width="610" height="296" /></p>
<p>This is the second in an ongoing series of Unity related posts. <a title="Experimenting with Unity" href="http://www.harrynesbitt.com/old/blog/experimenting-with-unity" target="_blank">Click here to read part one and try the day/night demo</a>.</p>
<p>The next thing I set out to develop in Unity was a simple, touch controller &#8216;avatar&#8217; that could move with a natural, fluid motion &#8211; the idea being that this simple interaction would be rewarding in it&#8217;s own right. I was hugely inspired by <a href="http://thatgamecompany.com/games/journey/" target="_blank">Journey</a> for PS3, and how the players movements made up a large part of the overall experience &#8211; simply travelling through the world became one of the biggest rewards for playing the game.</p>
<p><span id="more-1388"></span></p>
<div class="line"></div>
<p>As before, the demo below uses the <a href="http://unity3d.com/webplayer/" target="_blank">Unity Web Player</a>. To interact, click and drag anywhere inside the play area.</p>
<p><iframe frameborder="0" height="400" src="http://www.harrynesbitt.com/old/demos/player" width="610"></iframe></p>
<p>The behaviour of the trailing &#8216;legs&#8217; proved to be the most difficult and interesting part of the process. I initially assumed Unity&#8217;s built in physics engine could take care this, but unfortunately the high number of joint constraints and the relatively &#8216;vague&#8217; nature of the engine resulted in some pretty erratic behaviour. Instead, I opted for writing a custom script based on <a href="http://processing.org/learning/topics/follow3.html" target="_blank">this brilliant bit of code</a>. In combination with Unity&#8217;s line renderer, it gave me the perfect result with surprisingly little overhead.</p>
<p>A few extra notes:</p>
<ul>
<li><span style="line-height: 12px;">Clicking on the play area actually updates the position of an invisible &#8216;pointer&#8217; object. The player, in turn, is continuously moving towards the pointer, at a speed proportional to the distance between them.</span></li>
<li>The length of the legs can be adjusted during run time, providing a neat visual indicator for various attributes such as the players health or progression.</li>
</ul>
<p>Thanks for reading! In the next post, I&#8217;ll take a look at closer the art style, graphics and iOS optimisation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.harrynesbitt.com/old/blog/experimenting-with-unity-part-2/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Experimenting with Unity</title>
		<link>http://www.harrynesbitt.com/old/blog/experimenting-with-unity</link>
		<comments>http://www.harrynesbitt.com/old/blog/experimenting-with-unity#comments</comments>
		<pubDate>Fri, 08 Feb 2013 15:23:39 +0000</pubDate>
		<dc:creator>Harry Nesbitt</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Illustration]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://www.harrynesbitt.com/?p=1322</guid>
		<description><![CDATA[Last year, I began a several-month-long process of learning to use Unity &#8211; a highly accessible, cross platform 3D game engine &#8211; with the ultimate goal of exploring it&#8217;s potential to create an interactive &#8216;toy&#8217; along the same lines as Windosill by Vectorpark. In the process I built a series of experiments, each focusing on [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1327" alt="windmill" src="http://www.harrynesbitt.com/old/wp-content/uploads/2013/02/windmill.png" width="610" height="295" /></p>
<p>Last year, I began a several-month-long process of learning to use <a href="http://unity3d.com" target="_blank">Unity</a> &#8211; a highly accessible, cross platform 3D game engine &#8211; with the ultimate goal of exploring it&#8217;s potential to create an interactive &#8216;toy&#8217; along the same lines as <a href="http://windosill.com/online/">Windosill</a> by Vectorpark.</p>
<p>In the process I built a series of experiments, each focusing on different aspects of the engine and all contributing towards a final &#8220;proof of concept&#8221; design. It&#8217;s unlikely that these experiments will become part of a finished project in their own right, so I&#8217;m keen to share them here, with a few things I learned along the way.</p>
<p><span id="more-1322"></span></p>
<div class="line"></div>
<h3>From Dawn till Dusk</h3>
<p>For this first post, I&#8217;ve put together a demonstration of the dynamic day/night cycle I developed for the project. From the outset I knew I wanted to play heavily on the use of light and how it changes throughout the day.</p>
<p>Below is an interactive demo, making use of the <a href="http://unity3d.com/webplayer/" target="_blank">Unity Web Player</a>, which you&#8217;ll be prompted to download if not already installed. It&#8217;s a lightweight plugin, and highly recommend &#8211; once installed, you&#8217;ll be able to play with all the official <a href="http://unity3d.com/gallery/live-demos/" target="_blank">Unity demos</a> and other user generated content too.</p>
<p>The game clock will automatically tick forward at a rate of 2 in-game minutes per second, but you can also click and drag across the sky to move time forwards or backwards manually. A couple of tips: right click to go fullscreen or click on the windmill to make it to rain!</p>
<p><iframe frameborder="0" height="400" src="http://www.harrynesbitt.com/old/demos/time/" width="610"></iframe></p>
<p>I&#8217;ve also included a few of the birds sprites I developed, which are controlled by some (very) basic AI behaviour &#8211; be careful, they&#8217;re easily spooked!</p>
<p>A few other notes about the underlying system:</p>
<ul>
<li><span style="line-height: 13px;">The colour/shading of all objects is determined by a single light source, which moves as part of the rotating sky plane. </span></li>
<li><span style="line-height: 13px;">The precise colours for dawn, day, dusk and night can all be adjusted to suit the environment.</span></li>
<li>Other objects and their attributes (such as the stars, clouds, porch light, etc) can also be adjusted depending on the time of day.</li>
<li>the overall art style is largely informed by the need to optimise performance across multiple platforms &#8211; I&#8217;m keen to talk more about the challenges and opportunities this presented, as overall, I&#8217;m pretty happy with the result.</li>
</ul>
<p>That&#8217;s all for now &#8211; stay tuned!</p>
<p>Edit: I&#8217;ve now posted part two, <a title="Experimenting with Unity: Part 2" href="http://www.harrynesbitt.com/old/blog/experimenting-with-unity-part-2">click here to continue reading</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.harrynesbitt.com/old/blog/experimenting-with-unity/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Illustrating in Three Dimensions</title>
		<link>http://www.harrynesbitt.com/old/blog/illustrating-in-three-dimensions</link>
		<comments>http://www.harrynesbitt.com/old/blog/illustrating-in-three-dimensions#comments</comments>
		<pubDate>Mon, 03 Oct 2011 07:48:43 +0000</pubDate>
		<dc:creator>Harry Nesbitt</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Illustration]]></category>

		<guid isPermaLink="false">http://www.harrynesbitt.com/?p=878</guid>
		<description><![CDATA[The model below is the result of little self-initiated project, designed to help me get to grips with realtime hardware rendering in the Maya viewport. I also wanted to establish a complete workflow from design concept all the way through to modelling, texture mapping and CGFX shader rendering (which led to so some unexpected and [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">The model below is the result of little self-initiated project, designed to help me get to grips with realtime hardware rendering in the Maya viewport. I also wanted to establish a complete workflow from design concept all the way through to modelling, texture mapping and CGFX shader rendering (which led to so some unexpected and rather confusing shader coding efforts!) and produce something that maintained a strong illustrative style throughout. The whole thing turned out to be much more interesting and enjoyable than I expected, so I decided to write a bit about my process below and include a few of my progress shots.</p>
<p style="text-align: justify;"><a href="http://www.harrynesbitt.com/old/blog/illustrating-in-three-dimensions#more">Click here to read on&#8230;</a></p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-946" title="guitar" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/guitar1.png" width="610" height="853" /></p>
<p><span id="more-878"></span></p>
<p style="text-align: justify;"><a name="more"></a>The more I dabble with 3D, the more frustrated I become with the <em>huge</em> render times associated with Mental Ray and other similar rendering engines (sometimes upwards of 30-40 mins per frame), particularly when the final image does little to justify the wait. Anything short of a degree in photorealistic rendering techniques or the patience to juggle an endless set of variables and everything tends to come out looking like your everyday household plastic CGI Junk.</p>
<div style="float: right; text-align: justify;"><img class="size-full wp-image-904" style="margin-bottom: 10px; margin-left: 15px; float: right;" title="tf2" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/tf2.png" width="200" height="151" /><br />
<img class="size-full wp-image-905" style="margin-bottom: 10px; margin-left: 15px;" title="wood" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/wood.png" width="200" height="198" /></div>
<p style="text-align: justify;">As a reaction to this, I&#8217;ve found a growing appreciation for the benefits of lowpoly/realtime graphics, typically seen in some of the less demanding video games of the past few year. If you take away all your fancy Parallax Occlusion maps and Realtime Radiosity you&#8217;re left with a reminder that <strong><em>style </em></strong>is everything.</p>
<p style="text-align: justify;">Perhaps the defining example of this would be <a href="http://www.tf2.com/"><strong>Team Fortress 2</strong> by Valve</a> &#8211; a game that, while I&#8217;ve never really played in great depth, I&#8217;ve always admired from a distance for it&#8217;s tasteful restraint. In a time where photorealism was considered the holy grail of realtime rendering, Valve took a step back and created a game that could run on even the most basic of systems and still look absolutely stunning. They were able to do this by utilising what they called &#8216;Illustrative Rendering&#8217; &#8211; a technique that involved mimicking the look and feel of a painted 1950&#8242;s cartoon and placing more importance in the texture work and overall art direction than any unnecessary technological gimmicks.</p>
<p style="text-align: justify;">Even the 3D animation crowd has begun to embrace a similar approach, with films such as the spectacular <a href="http://vimeo.com/4130735"><strong>Wood</strong> by McBess</a>, and <a href="http://vimeo.com/17535548"><strong>Meet Buck</strong> by TeamCerf</a> turning their back on the glossy raytracing ideals of Pixar in favour of a more hand-drawn, diffuse lit treatment.</p>
<p style="text-align: justify;">With all this as inspiration, I wanted to set myself a project &#8211; to create a fully realised and self contained &#8216;game asset&#8217; complete with texture maps (diffuse and specular) that could be rendered in realtime in the Maya viewport, be viewed and lit from all angles while maintaining a strong illustrative style and celebrating the lowpoly aesthetic.</p>
<p style="text-align: justify;">I decided to model my beloved Yamaha APX700 &#8211; an Electro-Acoustic guitar I&#8217;ve owned and loved for the best part of 5 years. It&#8217;s nothing fancy, but it plays like a dream and suits me well.</p>
<p style="text-align: justify;">The first step was to draw up a set of orthographic designs &#8211; useful for the next stage of modelling but also my chance to adapt and stylise the shape, colours and overall feel of the guitar. This involved stripping away unnecessary details while exaggerating other aspects to push them away from being too lifelike and give the shapes a &#8216;chunkier&#8217; cartoon feel.</p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-903" title="ortho_sketch2" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/ortho_sketch2.png" width="610" height="557" /></p>
<p style="text-align: justify;"><img class="size-full wp-image-887" style="margin-left: 15px; margin-bottom: 10px; float: right;" title="wire" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/wire-e1317553694497.png" width="213" height="394" />The next stage involved modelling. I&#8217;ve often modelled in Maya, but never with a mind to keep the number of polygons to a bare minimum. I wanted enough detail to describe the shape of the guitar but wasn&#8217;t afraid to show a few faceted curves &#8211; it all added to the desired look.</p>
<p style="text-align: justify;">I also wanted to be mindful of my mesh flow, making sure to avoid any 5 sided polys and general ugliness. I&#8217;m sure I could reduce the number of polygons further, particularly on the front face of the guitar body, but I couldn&#8217;t quite work out the &#8216;correct&#8217; way to do this. Besides, I was too proud of my idea to make the strings from just 2 polygons and a transparency map, that it didn&#8217;t really seem to matter!</p>
<p style="text-align: justify;">I&#8217;m going to jump ahead a little and forgo describing the process of UV mapping in any detail, except to say it was difficult, boring and I probably could have done a much better job. But for a first attempt I&#8217;m pretty happy &#8211; I tried to prioritise areas with more detail and relegated any hidden faces to the dark gloomy corners of the map.</p>
<p style="text-align: justify;">Below is the finished Diffuse map &#8211; it&#8217;s made up of all my hand-painted textures and colours multiplied with a baked ambient occlusion map (OK, so I had to use Mental Ray once, but it&#8217;s a necessary evil and reasonably quick). I took a couple of cues from the Team Fortress 2 style guide here &#8211; firstly to keep the textures as simple as possible and use a blocky &#8216;potato stamp&#8217; painting style to weather the surfaces slightly, and secondly to add some subtle highlights along the more prominent edges.</p>
<p style="text-align: justify;">Below the diffuse is the Specular Map &#8211; quite simply, the lighter areas will appear more glossy and reflective when viewed at an angle relative to a light source.</p>
<p style="text-align: justify;"><img title="diffuse" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/diffuse.png" width="610" height="610" /></p>
<p style="text-align: justify;"><img title="specular" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/specular.png" width="610" height="610" /></p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-883" title="ortho" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/ortho.png" width="610" height="601" /></p>
<p style="text-align: justify;">The image above is a very simple &#8216;full bright&#8217; render showing the model with only the diffuse map applied and no lighting of any kind. I was almost tempted to stop at this point and call it a day, but I couldn&#8217;t help trying to push things further and play around with some fancy CGFX shaders that claim to be able replicated the &#8216;Illustrative Rendering&#8217; technique used in Team Fortress 2 right inside the Maya viewport. Anyone familiar with Maya will know it&#8217;s less than accommodating when it comes to working in realtime and even with these shaders I had a hard time getting the desired results.</p>
<p><img class="size-full wp-image-925 " style="margin-left: 15px; float: right; border-width: 1px; border-color: #dddddd; border-style: solid;" title="ramp" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/ramp.png" width="128" height="128" /></p>
<p style="text-align: justify;">The first shader I tried was the <a href="http://www.mentalwarp.com/~brice/brdf.php">Generic BRDF shader by Brice</a> that, among other things, lets you use a 2-dimensional image map to control the light-to-shade falloff relative to both the light source and the viewing angle &#8211; this means you can easily achieve a dramatic hard edge terminator and warmer/cooler colour tints (I also used this to add a slight bounce on the shaded rim of the object). However, it turns out that having an AMD graphics card meant a lot of the more advanced shader effects didn&#8217;t work on my computer, and the latest beta versions failed to even load at all. The 1.1 was the most stable, and allowed me to use the BRDF ramp, but little else.</p>
<p style="text-align: justify;">The next and only other shader that gave me any decent results was the <a href="http://blog.leocov.com/">lcUberShader by Leocov</a>, but again most effects didn&#8217;t work on my AMD card. Fortunately, Leo had created a &#8216;AMD compromise&#8217; version of his shader several months ago, and even though he&#8217;d taken down the link (due to issues with the Normal Mapping) I was still able to find the file through a old google cache&#8230; thus confirming my status as fully fledged net-ninja :)</p>
<p style="text-align: justify;">This shader was perfect, except for two things &#8211; the aforementioned normal maps (they didn&#8217;t work at all) and the lack of the BRDF style shading, the latter of which being the most important feature I was after. So, I decided to get messy and open up both shader files in TextEdit, scour them down to the bare essentials and compare the differences. After several days up to my knees in some of the most intimidating code I&#8217;ve ever encountered I was able to successfully transplant the necessary scripts from the first to the second shader and even fix the Normal map issue while I was at it (that might sound pretty impressive, but it took 5 hours to figure out I only needed to change one word).</p>
<p style="text-align: justify;">I would post a download for this new &#8216;hybrid&#8217; shader, but I fear Brice and Leo might be inclined to turn up at my house, break both my legs and burn their mutant offspring before it does any harm.</p>
<p style="text-align: justify;">Below is a breakdown of each of the shader effects I&#8217;m using and how they work together &#8211; and finally, beneath that are a few detailed shots of the shader in action and a 360 animated GIF of the model!</p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-885" title="shader demo" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/shader-demo.png" width="610" height="427" /></p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-959" title="collage2" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/collage2.png" width="610" height="706" /></p>
<p style="text-align: justify;"><img class="alignnone size-full wp-image-960" style="margin-left: 105px;" title="rotate" alt="" src="http://www.harrynesbitt.com/old/wp-content/uploads/2011/10/rotate1.gif" width="400" height="559" /></p>
<p style="text-align: justify;">So there we have it! I hope this post has been at least vaguely interest for anybody reading it. I&#8217;m hoping to try my hand at modelling a few more objects in the coming weeks and even play around with the idea of producing an animation of some kind further down the line.</p>
<p style="text-align: justify;">Thanks for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.harrynesbitt.com/old/blog/illustrating-in-three-dimensions/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
