<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4978850566627863958</id><updated>2012-02-16T20:44:02.118-08:00</updated><category term='sine'/><category term='scripting'/><category term='branching'/><category term='theory'/><category term='Intro'/><category term='randomize'/><category term='tools'/><category term='Website'/><category term='zombies'/><category term='games'/><category term='props'/><category term='HDR'/><category term='Math'/><category term='projects'/><category term='Stalker call of prypiat'/><category term='collision'/><category term='extra credits'/><category term='XNA'/><category term='Story'/><category term='Star fields'/><category term='stalker'/><category term='shooters'/><category term='shaders'/><category term='comparison'/><category term='captain america'/><category term='animation'/><category term='storm'/><category term='Open CV'/><category term='deus ex'/><category term='conding'/><category term='textures'/><category term='Weather'/><category term='video'/><category term='server'/><category term='Nintendo DS'/><category term='formula'/><category term='direct x'/><category term='article'/><category term='DDS'/><category term='guns'/><category term='alternatives'/><category term='c++'/><category term='scripts'/><category term='convex'/><category term='science'/><category term='3dsmax'/><title type='text'>Vancouver Technical Artist</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-8964423636132961439</id><published>2011-12-09T21:02:00.001-08:00</published><updated>2011-12-09T21:15:07.743-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Star fields'/><title type='text'>HDR procedural starfield Pt4</title><content type='html'>I think I've settled on a format for my stars; it's somewhat unconventional, but much lighter than float4 (128bits). It's a YRGB hybrid thing (56bits).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After reading up on YUV (or YCrCb) a little bit more, I realized that in order to use it properly all components need to be the same bit depth (ideally), and you need all three components to do the conversion properly. Meaning Y, U and V. So making Y a float and UV unsigned chars would save me a bunch of memory during star generation, but then creates a huge headache for colourization.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So by making them all floats I'm not saving much, and by making them uchars, I'm losing my HDR. And because I'm NOT too worried about obscene optimizations I figure there wasn't much in terms of savings between 2 uchars, and 3 uchars. Thus I settled on keeping my stars HDR using a float, and keeping my colours RGB using uchars.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I'm ready to write to file then I can do all the fancy conversions :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-8964423636132961439?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/8964423636132961439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/12/hdr-procedural-starfield-pt4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8964423636132961439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8964423636132961439'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/12/hdr-procedural-starfield-pt4.html' title='HDR procedural starfield Pt4'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-4929976096540123206</id><published>2011-12-06T13:11:00.001-08:00</published><updated>2011-12-06T13:26:18.054-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='textures'/><category scheme='http://www.blogger.com/atom/ns#' term='Star fields'/><title type='text'>HDR procedural starfield Pt3</title><content type='html'>I've been thinking about how I'm generating my stars, and for some reason when I decided float4 was the way to go, I've stuck with it during my rewrite of the app. However, when I think about it the only reason I did so was because of colour variation, and SSE... and the fact that it fits nicely into D3DFMT_A32B32G32R32F.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Float4 being:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;__declspec(align(16)) struct float4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;r;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;b;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the more I think about it all I really need is a float and some 8 bit colours. It would save on memory and as it is I'm not using SSE for anything other than turning a float into a float4 to plug back into the master star map. Like so:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//-----------------------------------------&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//Use SSE to do some conversion into float4&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//-----------------------------------------&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;float4 f4Res = {0,0,0,0};&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;__m128 result = _mm_set1_ps(starLum);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;_asm&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;movaps&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;xmm0,&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;result&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;movaps&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;f4Res, &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;xmm0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;*_star = f4Res;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I may end up doing a bit more reworking and start using a single float for brightness, then keeping track of colour variance with UV, essentially making everything YUV in the back end. By the time I'm ready to render to texture convert it to a 128bit RGBA DDS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's worth a try to speed things up a bit, and save memory. After all, working with six 128bit 1024x1024 (or larger) arrays can be slow.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-4929976096540123206?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/4929976096540123206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/12/hdr-procedural-starfield-pt3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4929976096540123206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4929976096540123206'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/12/hdr-procedural-starfield-pt3.html' title='HDR procedural starfield Pt3'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7118076208951330795</id><published>2011-11-15T15:40:00.000-08:00</published><updated>2011-11-15T15:42:22.152-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='Star fields'/><title type='text'>HDR procedural starfield Pt2</title><content type='html'>Just a quick update about the lack of updates: I'm rewriting the star field generator to be more modular and OOP friendly. But the premise and functionality will be the same or better :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hang tight! I'll have something to post soon enough! ^_^&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-M&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7118076208951330795?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7118076208951330795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/11/hdr-procedural-starfield-pt2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7118076208951330795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7118076208951330795'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/11/hdr-procedural-starfield-pt2.html' title='HDR procedural starfield Pt2'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-5038323936404547611</id><published>2011-10-22T13:16:00.000-07:00</published><updated>2011-10-22T16:02:52.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='DDS'/><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><category scheme='http://www.blogger.com/atom/ns#' term='HDR'/><category scheme='http://www.blogger.com/atom/ns#' term='textures'/><category scheme='http://www.blogger.com/atom/ns#' term='Star fields'/><title type='text'>HDR procedural starfield Pt1</title><content type='html'>Firs there were star fields. Then there were procedural star fields. And now, I present to you a HDR procedural star fields! "Murr?"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nothing too fancy, but in the day and age of modern HDR rendering and graphics, why shouldn't we have fancy star fields for space and nighttime levels? Think about how neat it would be when you have an environment where you're standing in an area with a lot of light polution, you only really see the brightest stars in the sky. Then, once you're in the clear and your eyes adjust how many more stars you see. Maybe even through night vision.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recently I've started playing through Kotor 2 for the first time (after many years or owning the game), and one thing I saw in the early spacewalk scene was just how uniform and regular all the stars appeared. This in itself is somewhat jarring since even if you were in the centre of the galaxy, you would never get a star pattern quite like this. What a great place to use this kind of process I thought!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The method of generating these stars is pretty simple, really. &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;We assume that the viewers perspective is more or less aligned to the galactic plane.&lt;/li&gt;&lt;li&gt;There are stars above and below the viewer, but the majority exist along the "horizon"&lt;/li&gt;&lt;li&gt;Some stars are brighter than others.&lt;/li&gt;&lt;li&gt;Most stars are actually very dim.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;What we end up with is a uniform distribution of dim / medium dim stars everywhere, and then progressively brighter stars near the galactic plane. It's definitely a starting point! Once I find the source code I wrote (and should have backed up onto a NON-portable medium (DOH!!!!)) I'll post freshly generated examples :D&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the technical side, I use doubles and floats to calculate everything, and then render the results to a 128bit, 6K x 8K DDS file. I could go more, but since I was using a 32-bit compiler I think I was running out of memory allocation O_o&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I chose to do 32bit RGBA and sample &lt;a href="http://www.cosmosportal.org/files/68501_68600/68525/hrdiagram600px.png"&gt;real world (real space?)&lt;/a&gt; star data to get a more realistic distribution of star colours (temps) and luminosities. And while I COULD just as easily do a single 32bit gray scale channel, I think RGBA is much more fun ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From then on it's possible to tune and add general brightness variations in Photoshop (as long as it doesn't crash trying to open the 130MB+ DDS files), and add things such as nebulae, dark dust, etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;About the biggest limitation of this custom build starfield generator is my own programming ability and lack of necessary math skills to be able to create this star field in a more useful &lt;a href="http://reindelsoftware.com/Documents/Mapping/images/latitude_map.jpg"&gt;longitude-latitude&lt;/a&gt; orientation. Or even a cross style cubemap where stars respect boundaries. It's something I intend to learn because it will greatly increase the fidelity of the starfield once it is transformed into those types of maps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More on that in part 2!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-5038323936404547611?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/5038323936404547611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/10/hdr-procedural-starfield-pt1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5038323936404547611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5038323936404547611'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/10/hdr-procedural-starfield-pt1.html' title='HDR procedural starfield Pt1'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-5868627297805709518</id><published>2011-10-22T08:43:00.000-07:00</published><updated>2011-10-22T09:55:12.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='Open CV'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><title type='text'>Linear histogram</title><content type='html'>This is something that I came up with (I think) for my own entertainment, but I think it might have uses elsewhere as well, somehow.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We all know traditional histograms:&lt;/div&gt;&lt;div&gt;&lt;img src="http://www.guillermoluijk.com/tutorial/histogrammar/hisclasico.gif" style="cursor:pointer; cursor:hand;width: 256px; height: 256px;" border="0" alt="" /&gt;&lt;/div&gt;&lt;div&gt;Well, what would something like this look like when applied to video, and rendered over a linear timeline? Basically, look at the histogram from the top and make it a thin 1pixel by 256pixel strip. Go to frame two, do the same thing, and so on, and so on. The results can actually be very interesting!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-97sD5_T3QC8/TqL1D8WmwUI/AAAAAAAAAB8/506kiqXPaxg/s200/Unreal.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5666360729274859842" style="cursor: pointer; width: 200px; height: 50px; " /&gt; This is the first 1024 frames of an Unreal speedrun. You can clearly see where the action is, where the player gets hurt, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm not sure if this is something that actually HAS a name or not, but I call it a linear histogram. As for any practical application, well, I just find it interesting to look at, especially for highly saturated videos like of speedruns of FPS games. Real world videos aren't nearly as interesting looking, but then again I'm not approaching this from any practical application angle :) but others might.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As for the program I used to render these, it's a c++ application which uses OpenCV 2.3 to video videos. Then it's a simple matter of counting pixel intensities each frame, performing square root and normalization on each channel, and then writing the results to file. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The source code isn't anything too special, it gets the job done, and I'm sure someone who is a lot more technically proficient can make things run a lot more smoothly. I'll post it once my server IP updates again (If you do intend to run it, make sure you have OpenCV 2.3 installed and setup!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all for now!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-5868627297805709518?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/5868627297805709518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/10/linear-histogram.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5868627297805709518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5868627297805709518'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/10/linear-histogram.html' title='Linear histogram'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-97sD5_T3QC8/TqL1D8WmwUI/AAAAAAAAAB8/506kiqXPaxg/s72-c/Unreal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-630430075576866066</id><published>2011-10-22T08:36:00.001-07:00</published><updated>2011-10-22T08:43:13.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='extra credits'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>Reintroduction</title><content type='html'>So it's been a while since I've posted anything, but a lot has changed since then!  First off I've wrapped up my work at Next Level Games and started a new adventure at EA canada as a full fledged technical artist, woot!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've had a few projects on the go as well, just personal things that I find interesting and give me a chance to learn more technical skills. I'll post about them in successive posts since this is just to get thing rolling.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the reasons that has prompted me to get back into blogs is Extra Credits. Really, if you're into games (Or want to know more about the passion / problems in the industry) watch extra credits!! It's brilliant! I know I've heard of them when I was watching the escapist, but I haven't actually watched a single episode up until a few days ago, and I was like "My mind is blown!" &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So yeah, with the intro out of the way, it's time to get into some more details as to what I've been up to outside of my family activities :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-630430075576866066?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/630430075576866066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/10/reintroduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/630430075576866066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/630430075576866066'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/10/reintroduction.html' title='Reintroduction'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-592592075929720562</id><published>2011-03-17T21:50:00.001-07:00</published><updated>2011-03-17T22:25:39.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><category scheme='http://www.blogger.com/atom/ns#' term='sine'/><category scheme='http://www.blogger.com/atom/ns#' term='formula'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Sampling data over a sine wave</title><content type='html'>Now here is something people may find useful, an equation for sampling a number distributed over a sine wave. It took me a couple of days to come up with this, but it seems to hold up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SUM_point = SUM_total * sin(((180 / points_total) * point_sample) * (4*atan(1)/180)) / (points_total / 1.5708)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically I've found that if you add up the values of &lt;i&gt;n&lt;/i&gt; points on a half circle, the sum is about 0.6365 times less than the number of points. Or points_total is 1.5708 times greater than their sum. Eg, 180 samples = 114.589.  720 samples = 458.265. 684000 samples = 435448. Divide any of these sampled by the sum and you get about 1.5708&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And by going through this equation, you can add all SUM_point, and it will be about SUM_total. And by "about" I mean within a few hundredths depending on your precision with 1.5708. With 10 million sample points, Visual Studio gives me &lt;b&gt;1.5707963705064640&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now you may be wondering what use this is? Well, say you want to find out how much the sun is irradiating a patch of ground at any given point throughout the day. And the only thing you have is the total energy irradiated. Well, over an ideal 12 hour period, from 6am (0 degrees) to 6pm (180 degrees), you can use this equation to calculate how much irradiation was received every hour. Or, every minute (12 hours * 60 minutes (720 sample points)), or even every second (12h * 60m * 60s (43200 sample points)... theoretically :) Because the sun isn't just shining on the patch of ground at a constant angle, it moves and gets stronger then weaker.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This may have limited uses, but if you're wanting to model the real world with some degree of accuracy, it's useful.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-592592075929720562?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/592592075929720562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/03/sampling-data-over-sine-wave.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/592592075929720562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/592592075929720562'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/03/sampling-data-over-sine-wave.html' title='Sampling data over a sine wave'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-6657144764965920261</id><published>2011-03-13T21:15:00.000-07:00</published><updated>2011-03-13T21:20:56.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><title type='text'>XNA 4.0</title><content type='html'>I've finally taken the time to install XNA 4.0 and will be working on a new game idea. It will also give me a change to get the technical mind a workout as well. As a technical artist I find it important for me to keep both my technical and creative sides active to maximize my potential and keep me from getting bored. Woot :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-6657144764965920261?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/6657144764965920261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/03/xna-40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/6657144764965920261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/6657144764965920261'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/03/xna-40.html' title='XNA 4.0'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-1713469933571794941</id><published>2011-01-25T16:59:00.000-08:00</published><updated>2011-01-25T17:06:03.235-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='3dsmax'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='randomize'/><title type='text'>Animation randomizer</title><content type='html'>With the recent work I'm been doing I've realized that doing canned animations of falling rocks can be a bit tricky. With the great utilities like the Phys-X simulator for max it is possible to make great simulation animations, but unless you make a pachinko machine setup, everything will tend to fall at the same rate, and straight down. While this in itself may not be too bad, the fact that it's all so uniform isn't too desirable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While it is possible to grab each piece of geo and shift it's keys back and forth suggests to me that there should be a script driven randomizer for such a task :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Select your animated object, define a + / - range, and click a button. Shouldn't be too difficult to write!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-1713469933571794941?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/1713469933571794941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2011/01/animation-randomizer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1713469933571794941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1713469933571794941'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2011/01/animation-randomizer.html' title='Animation randomizer'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7014579918355086207</id><published>2010-11-30T08:12:00.000-08:00</published><updated>2010-11-30T08:14:26.898-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='props'/><category scheme='http://www.blogger.com/atom/ns#' term='captain america'/><category scheme='http://www.blogger.com/atom/ns#' term='Website'/><title type='text'>Website is up</title><content type='html'>Alright! The website at www.renalicious.com is live again! I'll be updating it with what I can over the holidays :) It's been busy busy working on Captain America, but I hope to be able to post some of my recent work if I can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7014579918355086207?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7014579918355086207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/11/website-is-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7014579918355086207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7014579918355086207'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/11/website-is-up.html' title='Website is up'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7429815627419870242</id><published>2010-11-29T09:53:00.000-08:00</published><updated>2010-11-29T09:55:11.509-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='Website'/><title type='text'>New server, v4.0</title><content type='html'>After many months I finally have a new server for my website. It is up and running, and will be accessible through www.renalicious.com as soon as the DNS serves catch up with the changes :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More to come, stay tuned!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7429815627419870242?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7429815627419870242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/11/new-server-v40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7429815627419870242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7429815627419870242'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/11/new-server-v40.html' title='New server, v4.0'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-8807410118508638553</id><published>2010-09-12T20:39:00.000-07:00</published><updated>2010-09-12T22:35:54.844-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guns'/><category scheme='http://www.blogger.com/atom/ns#' term='Story'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='Stalker call of prypiat'/><category scheme='http://www.blogger.com/atom/ns#' term='storm'/><category scheme='http://www.blogger.com/atom/ns#' term='zombies'/><title type='text'>Survival horror in STALKER</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="font-size: 12pt; color: black; "&gt;&lt;span class="Apple-style-span"&gt;Ok so I just had the coolest zombie survival horror style moments in Stalker Call Of Prypiat! &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt; Here is a picture to go along with it, taken during the actual gameplay (during a lightning strike, otherwise it was almost pitch dark) :)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;img src="http://3.bp.blogspot.com/_-wCjjOuvMAU/TI234MJT5qI/AAAAAAAAAAk/7jVTpYU8iyg/s400/Stalker+sniper.jpg" style="cursor:pointer; cursor:hand;width: 400px; height: 250px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5516267294559561378" /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;It was a dark and stormy night (seriously, it&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; was raining cats and dogs, and the lightning was going nuts!) and after being side tracked into a tower to escape an emission blowout, I continues towards the cement factory. The blowout had lit up the sky like a bright full moon, so I ventured forth, hoping there weren't too many zombified stalkers around; those who didn't make it to a shelter before the emissions destroyed their minds.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Leaving the tower I set out on foot to the east along the road, and immediately spotted a couple of zombies shambling towards my destination. Armed with my newly acquired, and upgraded, semi automatic rifle they were swiftly dispatched with a few well aimed head shots. Easy as pie!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;About 15 seconds into my journey the emissions blowout died down into silence taking with it all remaining light. It was then that I realized I was in unfamiliar territory, dead of night and in a heavy rain storm. Still, as long as no pseudo dogs were around I should be fine. I pointed my compass at the cement factory and stalked closer to my goal.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The towers of the factory were dim, barely distinguishable in the storm. It wasn't until the lightning flashed that I got a sense of what I was looking at; old rusted metal structures around decaying concrete buildings. "Beep!" went off my compass alerting me to the presence of other dwellers in the area. One... two, then three, but they didn't show up on the radar, meaning they had to be hostile. Were they bandits or mercs? I couldn't tell.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Crouching down in the wet underbrush and grass I turned off my flashlight and scanned the buildings from afar, hoping to see any signs of life. After a few moments of peering through the darkness aided on occasion by the lightning, I spotted my targets high above on a steel tower, stumbling around... zombies!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;As I attempted to get closer I saw a figure through the darkness at the bottom of the stairs, leading up to the tower and the two zombies. "Ah hah!" I thought, the third one is already on the ground, and moving out of cover.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I repositioned myself to get a better shot, and moved out of the thick bushes into the open and peered though my scope. The sad creature stumbled off of the staircase and proceeded shambling forward. In the darkness I could barely make out its figure and position, but through the lightning flashes it was an ominous back lit silhouette moving ever closer in my direction. I bided my time and took aim, waiting patiently for the next strike of lightning, the next crash of thunder. Bang Bang! A couple of shots crackled through the night, only to be drowned out by the thunder in the sky.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;No more movement did I see in my scope, confirmed by the compass, I had eliminated one threat. I now set my sights on the two remaining zombies up on the tower.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;There they were, unmoved by the commotion below, unaware that their former comrade had just received a sudden brain enema. Not that they could know since the emissions from the blowout fried their minds like an egg. &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Bang Bang! A couple more shots rang out into the darkness, but this time luck was on their side. While the shots hit their mark, the zombies were still able to function, and function well enough to know I was down there. They proceeded to hunt me down.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;“Hmm, not big deal” I thought to myself “They might have the higher ground, but I doubt they know how to use it”.  Requiring a more direct firing position I proceeded forwards towards the complex, closer to the base of the stairs.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;As I approached one of the buildings something stirred. Screeeeech!  A high pitched voice screamed out from the entrance of one of the concrete towers. Quickly I spun around and turned on my flashlight to see what I had startled.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The figure I saw was small, stringy and twisted; scurrying into a hole as it hissed. “Rats!” I thought, “I better watch my back, no telling when they’ll try to swarm me” With zombies descending from the tower I needed to be extra careful not to get torn to shreds.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A few moments had passed and the zombies were in low enough for me to take a few shots. Nothing too difficult here, their own shots at me managed to wound them allowing me to take them out a ways up. I stood for a few more moments and scanned the area, all clear, and the compass confirmed it.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The storm was still in full swing, unyielding in the night. The constant flashes of lighting illuminating the bleak landscape below me as I stood on the steel tower. The rain was never ending, as though the clouds were attempting to wash away all traces of what had happened to this land. Beep, Beep, Beep chirped the compass. “What’s this?” I said to myself as I looked around, a cluster of red dots had appeared; interlopers approaching from the road.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The lightning flashed again and again, as though begging me to take notice of those who come near. At last I see them, more shadowy figures slowly moving towards the cement factory. This time I had the high ground, and I did know h0w to use it!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Bang! One by one the shots rang out, Bang Bang Bang! One after another, and one by one in the darkness they fell unaware, unknowing, uncaring. One by one the numbers died down to zero. A moment’s repose to rest once again in the darkness, in the rain. But wait, something not right anymore.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The unrelenting storm which had offered me flashes of light to see my way was now bringing its anger upon this land. The air began to taste foul, bringing a metallic taste into my mouth. My eyes began to sting, my skin began to burn and itch. No, this wasn’t just rain anymore, this was chemical fallout!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I had to find shelter and fast! Holstering my riffle I began searching the structure on top of the tower hoping for an entrance or an opening I could sneak into. The south side, nothing. The east side, nothing. The north side, nothing! “I have to get into the factory and find a shelter before the chemicals burn me inside out!” I panicked as I sprinted towards the stair case, hoping I could get down in time.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The air was getting thicker with each passing second. The taste, the smell, the burn! It was becoming almost too much! But at last I had made it off the tower. Not breaking my stride I ran towards an opening in factory building, but the chemicals were still two strong! I needed to get deeper.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Frantically looking around for a safe haven I noticed a set of rusty stairs to my left, leading down deeper into the building, but mercifully away from the outside. Clunk clunk clunk clunk boof, echoed my boots on solid ground again as I careened into a tunnel.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I made it! The air was still foul but at least it was breathable enough to let me take shelter until the fallout passes. Suddenly…&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Screeeeeech! “Oh no!” I though “If it’s this close, that means…” the rat is back, and it brought it’s pack with it!&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Not wasting any time I fumbled for my gun as the sickly mutant rodents scurried towards me. I’m backed into a corner, but at least they only have one way to come at me now.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Bang bang! Flashes of light and thunderous noises started filling the tunnels. Bang bang! The bullets tore through the malicious creatures effortlessly, but they kept on coming. Bang bang! My clip was starting to run low. Bang! The last shot fired, the last rat dropped to the ground, motionless. My ears ringing, my heart pounding.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Outside the lighting continued to flash its might. Thunder continued booming across the land. The air was foul and thick, but in my little corner deep in the tunnel I was still alive and that’s what mattered.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="color: black; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;“Whew” I sighed “Times like these I wonder why I ever came here”. Cold and wet I popped in a fresh clip. Beep, Beep, Beep went the compass. Not a moment too soon.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span style="font-size: 12pt; color: black; "&gt;&lt;span class="Apple-style-span"&gt;All of this took a minute or two in game time, but man, it was awesome! :D&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal"&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-size: 12pt; color: black; "&gt;&lt;/span&gt;Until next time!&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-8807410118508638553?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/8807410118508638553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/09/survival-horror-in-stalker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8807410118508638553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8807410118508638553'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/09/survival-horror-in-stalker.html' title='Survival horror in STALKER'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-wCjjOuvMAU/TI234MJT5qI/AAAAAAAAAAk/7jVTpYU8iyg/s72-c/Stalker+sniper.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-1946368070771133770</id><published>2010-08-12T09:55:00.000-07:00</published><updated>2010-08-12T10:21:52.092-07:00</updated><title type='text'>Path deform transfer</title><content type='html'>Here is a quick script that will transfer animation from an object using the path deform modifier, to an object using the Path Follow positional constraint.&lt;br /&gt;&lt;br /&gt;timeCounter = 0&lt;br /&gt;maxTime = 380 --End of animation&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:78%;" &gt;&lt;span style="font-family: courier new;"&gt;for int = 0 to maxTime do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    sliderTime = timeCounter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    $TargetObj.pos.controller.percent = $SourceObj.modifiers[#PathDeform].Percent_along_path&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    timeCounter = timeCounter + 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;The script is a bit raw and requires the objects to be named "TargetObj" and "SourceObj", as well as all necessary modifiers put in place, but it works :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-1946368070771133770?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/1946368070771133770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/08/path-deform-transfer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1946368070771133770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1946368070771133770'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/08/path-deform-transfer.html' title='Path deform transfer'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-4486220537594648178</id><published>2010-06-24T21:17:00.000-07:00</published><updated>2010-06-24T21:39:15.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='props'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Props, dynamic objects, and radifications</title><content type='html'>Been a while since I posted anything, but there is a good reason! Over the past few months I've been working at Next Level Games on "A project" as a prop artist, or technical prop artist. So far it's been an interesting venture and I've really been able to get in touch with my art side, making both low and high poly objects, then integrating them into the game.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Obviously I can't mention anything about this project, yet... No art styles, settings, time periods, etc. sorry ;) But I can talk about the props objectively, and some of the various tools I've been thinking about writing to help me out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing I've noticed that I can't do is animate an object using modifiers, such as using path deform, with object space or world space. At least make an animation that will transfer to the game. The motion path constraint does work, but I can't change the type of key framing, so all motion is linear from one key frame to the next.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While this works, it's no ideal. So I've started thinking about a script that will look at the percentage-along-path of the modifier Path Deform, and apply it the object with the path constraint motion every frame. In this case there really will be a need to brute force my way through.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While something like this would definitely work for one object, it becomes more difficult to apply the same motion to objects ahead and behind the target, which are suppose to share the same animations. An example would be a roll up door, or a tank tread where each segment is a unique object.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this case I think I may just settle for manual tuning of values, and once I find the appropriate offset it becomes a simple case of multiplying the offset for each object.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quick, easy, simple :) Now I just need to find some time to write this ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-4486220537594648178?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/4486220537594648178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/06/props-dynamic-objects-and-radifications.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4486220537594648178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4486220537594648178'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/06/props-dynamic-objects-and-radifications.html' title='Props, dynamic objects, and radifications'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-8144605873411477282</id><published>2010-02-16T00:13:00.000-08:00</published><updated>2010-02-16T00:48:44.575-08:00</updated><title type='text'>3D textures and Voxels part 2</title><content type='html'>After much delay I finally sat down and wrote the 3D texture generator maxscript. Surprisingly it went faster than anticipated, and after about a day I had something that generator usable results.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The basic premise behind generating 3D textures from geometry in 3dsmax is similar to how a CT scan generates images from real world object: a bunch of slices. Luckily 3dsmax has the ability to boolean objects with planes, and although the materials aren't necessary accurate it is possible to set the scene up in such a way that a flat plane can be booleaned with all relevant geometry to create the depth portion of the 3d texture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The script goes as follows:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Check the extents of all selected objects. This is to calculate how far the slicer needs to move in total and between each iteration. Additionally, the size slice plane can be made to match the objects as well.&lt;/li&gt;&lt;li&gt;Make all original objects not visible to the camera&lt;/li&gt;&lt;li&gt;Start slice loop&lt;/li&gt;&lt;li&gt;Find any objects that intersect the slice plane and make a copy of them. Make these copies visible to the camera.&lt;/li&gt;&lt;li&gt;Create a slice plane object at Z&lt;/li&gt;&lt;li&gt;Boolean (intersection method) all copies of objects&lt;/li&gt;&lt;li&gt;Render the results&lt;/li&gt;&lt;li&gt;Delete all sliced objects and slice plane as well&lt;/li&gt;&lt;li&gt;Move to next iteration&lt;/li&gt;&lt;li&gt;End of slice loop&lt;/li&gt;&lt;li&gt;Make all original objects visible to the camera.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;It's as simple as that :) And the nice thing is I figured out how to test the bounding box much more efficiently in this new script. This change can be propagated back to the older scripts that need it, like the convex mesh creator.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The biggest draw back of booleans in 3dsmax is that any UVW coordinates essentially get destroyed. So any object that is fully textured will not end up looking as it should. At the moment there doesn't appear to be a catch-all-quick-fix for this problem, at least not that I've seen. It's definitely worth looking into as it would be a shame to have such a handy script that can only be used with untextured geometry. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As further exercise for myself I'm writing a c++ console app that will take the existing Z axis 3d texture and resave it in another axis :) While it may not be the most useful tool seeing as renderers may not necessary care how a 3d texture is laid out, I'm learning lots about dynamic arrays and pointers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's inside this cheap barrel??&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-wCjjOuvMAU/S3pbhp9kDnI/AAAAAAAAAAM/u0CVLUPLGJU/s1600-h/test_barrel.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_-wCjjOuvMAU/S3pbhp9kDnI/AAAAAAAAAAM/u0CVLUPLGJU/s200/test_barrel.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5438760133761175154" style="cursor: pointer; width: 200px; height: 150px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lets find out!&lt;/div&gt;&lt;/div&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-9ef9be9508511bd6" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v23.nonxt4.googlevideo.com/videoplayback?id%3D9ef9be9508511bd6%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332915982%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D42C4189FD41E4F5267984D87D7308433680784C0.EA18D8035D8961E316C406A9F9B8BF517781DCC%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9ef9be9508511bd6%26offsetms%3D5000%26itag%3Dw160%26sigh%3DVBmisRiuK-I_6yqECnVOxwvZOJ8&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v23.nonxt4.googlevideo.com/videoplayback?id%3D9ef9be9508511bd6%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332915982%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D42C4189FD41E4F5267984D87D7308433680784C0.EA18D8035D8961E316C406A9F9B8BF517781DCC%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9ef9be9508511bd6%26offsetms%3D5000%26itag%3Dw160%26sigh%3DVBmisRiuK-I_6yqECnVOxwvZOJ8&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-8144605873411477282?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/8144605873411477282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/02/3d-textures-and-voxels-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8144605873411477282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/8144605873411477282'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/02/3d-textures-and-voxels-part-2.html' title='3D textures and Voxels part 2'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-wCjjOuvMAU/S3pbhp9kDnI/AAAAAAAAAAM/u0CVLUPLGJU/s72-c/test_barrel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-3932570522006571282</id><published>2010-01-31T11:57:00.001-08:00</published><updated>2010-01-31T11:58:31.042-08:00</updated><title type='text'>Moving part2</title><content type='html'>Looks like my server died in the move, or something else went wrong. But I have it running on laptop for now until I can find a more permanent solution. Yay for backups ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-3932570522006571282?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/3932570522006571282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/01/moving-part2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/3932570522006571282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/3932570522006571282'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/01/moving-part2.html' title='Moving part2'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-1405548418296131579</id><published>2010-01-27T10:04:00.001-08:00</published><updated>2010-01-27T10:05:46.139-08:00</updated><title type='text'>Moving....</title><content type='html'>For anyone trying to access my website in the upcoming week, please be aware that I'm in the process of yet another move. So it'll take a few days for Shaw to get everything setup, and the all the DNS tables to update with my new IP, etc. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks for tuning in :)!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-1405548418296131579?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/1405548418296131579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/01/moving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1405548418296131579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1405548418296131579'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/01/moving.html' title='Moving....'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-9095651953370978147</id><published>2010-01-20T11:06:00.000-08:00</published><updated>2010-01-21T11:09:05.495-08:00</updated><title type='text'>3D textures and Voxels</title><content type='html'>One of the more interesting elements of CG are 3d textures, volume textures, or voxels. Outside of medicine, geological studies, and terrain, are there any practical uses for 3d textures? Some games have attempted to use them, particularly the more modern BUILD engines by 3D Realms (And by modern I'm talking about Shadow Warrior, etc :) hehe) for primative 3d objects such as keys and wall switches. While it certainly looked cool at the time, with the advent of 3D models I think using 3d textures for objects fell away pretty quickly.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So to what end can the gaming industry use 3D textures? One significant use is lighting, as demonstrated in Unreal 3 / 3.5 with lighting importance volumes. This volume defines a 3D array of points that help light dynamic objects and characters in open spaces. So where a shadow would be cast from a far away object will still affect the object without the need to cast an enormous shadow map. Definite bonuses here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cryengine 3 also has a novel use of 3d textures in the form of in editor concave terrain formation. The editor gives the designers and artists the ability to create terrain formations via painting, similar to z-brush. The benefits are immediately evident in that there is no need to go back and forth between the editor, and 3dsmax to create / test / iterate concave terrain geometry.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So beyond these two major implementations, what other uses could there be?  Basically the single biggest use of volume texture is the ability for us to see INSIDE of an object, hence its benefits for medicine and science. A couple of novel ideas spring to mind.&lt;/div&gt;&lt;div&gt;1) x-ray vision without sorting issues&lt;/div&gt;&lt;div&gt;2) thermal vision that doesn't rely on polygon viewing angles for colouring&lt;/div&gt;&lt;div&gt;3) Nifty construction or deconstruction effect. Think TRON :)&lt;/div&gt;&lt;div&gt;4) Nifty teleportation effect, kind of like TRON&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course these could be considered gimmicks because would people playing Splinter Cell really care if the thermal vision was more accurate or not? And what about x-ray, if in Metroid Prime everything x-ray-able was built from 3D textures would people really know the difference? Maybe, maybe not, but aren't games built on gimmicks and trying new things?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Naturally for best performance these things would need to be controlled to avoid potentially serious performance issues.&lt;/div&gt;&lt;div&gt;1) x-ray visor where only objects within a limited field of view and distance are actually x-rayed and displayed as 3D textures. &lt;/div&gt;&lt;div&gt;2) With thermal vision, smaller cylindrical and ellipsoid 3D textures bound to major body parts create the illusion of animation.&lt;/div&gt;&lt;div&gt;3) A 3D object is posed then "digitized" into a lower resolution alanogue, then pixel by pixel removed from the world.&lt;/div&gt;&lt;div&gt;4) Similar to point #3, but quicker and in reverse.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In part 2, I will detail some ideas I have about creating 3D textures from modern 3D models.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-9095651953370978147?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/9095651953370978147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/01/3d-textures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/9095651953370978147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/9095651953370978147'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/01/3d-textures.html' title='3D textures and Voxels'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-253620860815979278</id><published>2010-01-10T00:35:00.000-08:00</published><updated>2010-01-10T11:41:05.425-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='deus ex'/><category scheme='http://www.blogger.com/atom/ns#' term='shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='direct x'/><title type='text'>Shaders</title><content type='html'>In the past week or so I've been playing around with HLSL and learning about shaders, DX10 / shader model 4. What I'm noticing, apart from the fact that the syntax is different, is that shaders are much more complex than I originally anticipated. I thought "Oh gee, I'll just do this and that and presto!" but nope! What is in fact the case is that unless the engine has a very well written, and almost intelligent renderer, there is quite a lot of communication that needs to happen explicitly between the render code and the shader.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It came as a surprise to me because the change I made to the shader which should have worked fine, they weren't making any difference what so ever. Upon talking with the person who wrote it he explained what I need to do in order for the shader to work like I intend it to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The simple answer is that I wasn't actually doing anything with the pixels I was altering. They were using up GPU cycles and simply being discarded because I wasn't writing them to a render target. So the final pass, which was reading the same frame buffer was the only pass that was displaying any changes... being the final pass and all. That and the fact that I wasn't even calling my passes had something to do with it as well ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All in all I'm still hard at work updating this shader with some simple bloom, but it's so interesting! I know I'll have it figured out sooner or later. And then I'll actually PLAY deus ex again. After all, that's why I installed it again in the first place after all this time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yet, what a strange coincidence that I found this DX10 renderer because I thought the old renderer was causing the game to crash. And this new renderer happen to use shaders, something I've been wanting to learn for some time now. Funny how life turns out sometimes :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-253620860815979278?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/253620860815979278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/01/shaders.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/253620860815979278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/253620860815979278'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/01/shaders.html' title='Shaders'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-4154574325099313491</id><published>2010-01-06T22:57:00.000-08:00</published><updated>2010-01-07T00:14:55.470-08:00</updated><title type='text'>Technical artist's 2009 review</title><content type='html'>2009, hmm, what a year! Instead on focusing on all the bad things that have happened, I would like to take a moment and comment on all the great things that were accomplished, and lessons learned.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From the day that 2009 started I knew I had a long road ahead of me, although I wasn't prepared for quite how long the road would become. Since I suddenly had more free time on my hands than I knew what to do with I decided to fill it with learning and self improvement to make myself all the better candidate for when I would eventually return to the industry of choice and continue my career.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Starting off with what I knew best, I threw myself at my then nonexistent portfolio to at least show the world that, yes, as a technical artist I could in fact make art. And the more I worked on it the better I got. Of course it was sometimes hard to find the motivation to work on something that I had very little direction on, but I forced myself to overcome that one polygon at a time. While some of the earlier efforts may not exactly be the most stellar looking, I do like the originality of the content, and sometimes that's what matters most.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As the months went by and I was talking to some of my friends in the industry, I began to learn more and more about what it is to be a technical artist. Sure I could do art, but what about all the other technical aspects OTHER than art integration and problem solving? Could I write an animation exporter for 3dsmax or other tools to speed up production? Did I know enough programming to potentially pass as a junior programmer? Time to switch gears!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I remembered that many years ago I was introduced to Python as the tool for rapid prototyping and development of tools, but I never really looked into it very much because I was more focused on art and learning technology. But since I didn't have new technology to learn, I decided to take my C++ knowledge and apply it to other engines.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Wow" is what I tell people, "Why didn't I pick up python earlier?" Seriously, why didn't I? It's great! After a few trial runs porting over some of my old console applications I was amazed at how much quicker and simpler the development process went. And what about C#? That too I never gave much thought because it "Wasn't c++", heh well, that too went out the window.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These two languages really are perfect for technical artists because they don't require innate knowledge of the deepest inner workings of C++, and because these languages are almost higher level than c++ as well. With so much functionality that happens behind the scenes it becomes easier for a non programmer to jump in and get things up and running quickly. And as for the speed, well, unless there is something critically important that needs to happen to thousands of files ever couple of hours, there really isn't any need to make simple tools and scripts run as though they were assembly optimized.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now that I had a handle on some of the popular languages out there, what about making something for the tools that artists use? Programs like 3dsmax. Once again I toyed around with max scripts a few years back but never to any great extent, but the time had come to learn it and make something usable by artists all over the world. Enter "Ren Tools".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From simple beginnings of the gear creator, to my proudest achievement yet: the Convex Mesh Generator. For many years having worked on games with physics I had wanted a tool that would create a convex mesh for my physics chunks. Of course the options were almost non existent save for John Radtcliff's old plugin. Working a temporary contract back at Threewave I decided that a new solution needed to be made, and having developed a couple of scripts for my tool set in the previous months, I tacked my greatest challenge yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I ended up spending at least a week writing this script and learning more about max script and 3d math on the fly.The end result was something that worked the way I wanted it to, and other artists all round the world could use as well. Just install the script, select some chunks, and voila! At the push of a button each object has it's very own convex collision mesh, properly named and all :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With so many programming languages in my head now, I decided to focus a bit on the art again, especially with the release of the Unreal Development Kit. Packed with many great new features I took my antenna scene and started importing it in to get familiar with a state of the art engine. It was a very nice change of pace to go back to pushing polygons around. Having learned the ins and outs of the engine just weeks earlier in the temporary contract, I thought what better way to put the knowledge to the test than to make my own scene again. Slowly I will be adding to it over the coming months to keep my art skills sharp.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As the year came to a close, I was once again wanting to learn something new, so I picked up XNA and had a go. "Neat!" C# makes game development easy! Within a couple of weeks I was already controlling my own creation around the screen and realizing a 5 year old dream of making a proof of concept the game I had been pitching around.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again, for a technical artist XNA and C# are a great resource because of how quickly we are able to prototype and get things off the ground. Sure I spent quite a while learning and rewriting parts of the game as I was learning the wisdom of how and why games are made. Class inheritance for example, and tiling backgrounds, collision detection, etc. All integral to how games work, and lessons that could be used elsewhere in tools and scripts if need be.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But aside from all the necessary technical and creative skills I've acquired this year, it was also a year of personal growth as well. Working jobs out side of the industry with a lot of human contact and stressful situations are quite useful for learning much needed skills such as customer service, and how to manage people effectively. Skills that are ultimately transferable to the industry for dealing with deadlines, and writing documents that people will need to read, and just keeping an over all positive deportment no matter what the situation. Because hey, it could always be worse!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So now we're in 2010, and what's left to learn? Plenty!! Just recently I've felt the urge to play through Deus Ex again, and wouldn't you know it I came across a direct x 10 renderer that someone wrote. While not interesting in itself, what caught my attention was the fact that the author used fx shaders! Woot! not only have I been wanting to learn HLSL, but what a better way to do it than a new renderer for an old game? The renderer itself is bare bones, so it gives me the perfect platform for adding additional functionality. I'm starting small and simple by adding bloom. But from there, who knows!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With so much under my belt this past year, I know I am a MUCH better person because of all my experiences. I'm not sure how much longer this road of growth is, and there are many personal trials that I'm facing, but I just can't give up and settle for anything less than awesomeness. I need to learn more, do more, and be the best at being diverse. As a technical artist, I need to understand what is going on if I'm gonna be responsible for fixing it. And fix it I will, for myself, for the team, for the company, even for the industry!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They say that luck is when preparation meets opportunity. I'm more prepared now than I've ever been, and I'm looking out for any opportunity coming my way! :D Yay 2010! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-4154574325099313491?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/4154574325099313491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2010/01/technical-artists-2009-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4154574325099313491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/4154574325099313491'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2010/01/technical-artists-2009-review.html' title='Technical artist&apos;s 2009 review'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7448106665631394497</id><published>2009-12-03T22:42:00.000-08:00</published><updated>2009-12-03T23:05:41.494-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nintendo DS'/><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='shooters'/><category scheme='http://www.blogger.com/atom/ns#' term='conding'/><category scheme='http://www.blogger.com/atom/ns#' term='alternatives'/><title type='text'>DS space shooters</title><content type='html'>I've noticed that there have been very few space shooters, or shoot'em ups released on the Nintendo DS through out its lifetime. This puzzles me as it seems those types of games would do pretty well on a hand held. Sure there have been ports of R-Type, Space Invaders and the original NanoStray, but for the most part no game truly makes use of the controls and what the DS has to offer, at least not the way I see it.&lt;br /&gt;&lt;br /&gt;While its secret that shooters have been around for decades now, their formula for game play rarely changes. Some are more hectic than others, some are more flashy, but few have done anything with the controls and how the game plays.&lt;br /&gt;&lt;br /&gt;With the release of touch screen and other pointer devices I would have thought that people might have jumped at the occasion to take an old genre and give it a fresh spin. Move, aim, shoot: this has been at the forefront of my own shooter idea for the DS, and more recently the Wii.&lt;br /&gt;&lt;br /&gt;While I know this control scheme isn't new and has in fact been done on the Xbox and PS3, it has been surprisingly absent from the Nintendo consoles. Maybe there is far less market for shooters on those consoles, but that kind of control scheme is far easier to pull off with touch screen and pointer devices.&lt;br /&gt;&lt;br /&gt;Now that I've started diving more and more into C# and XNA I've taken the initiative to realize my dream of creating my DS shooter for the PC. If only a proof of concept, I fully intend to take this as far as I can in hopes that others will see the benefits of what an old genre can play like with new and innovative controls. Of course, new controls is not the only thing I have in store with that game. Do people remember Rez? How about other beat games? Think of that in a shooter, but not quite so beat driven.&lt;br /&gt;&lt;br /&gt;Maybe it's my obsessional with audio / video synchronization, but I need to have some harmony and synchronicity with what I hear and see. Let the gameplay drive the audio, and let the audio design the gameplay.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7448106665631394497?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7448106665631394497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/12/ds-space-shooters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7448106665631394497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7448106665631394497'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/12/ds-space-shooters.html' title='DS space shooters'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-5589654159707273039</id><published>2009-11-14T13:26:00.000-08:00</published><updated>2009-11-14T15:33:30.255-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='convex'/><category scheme='http://www.blogger.com/atom/ns#' term='scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='collision'/><title type='text'>Convex tools</title><content type='html'>Been a while since I've made one of these, but there has been a lot of moving around town over the past couple of months. Now that things have settled down, I figure I would talk about something a bit more objective that I've been exposed to over the past couple of weeks.&lt;br /&gt;&lt;br /&gt;Why is it that there are no good convex mesh generators for 3dsmax? Since almost every game engine out there uses convex collision meshes I would have thought that there would be at least some robust tool from many versions ago that works well enough is has now become an old defacto like Crazy Bump for normal maps. But there isn't anything like that, not that I found anyways.&lt;br /&gt;&lt;br /&gt;Maybe a lot of the new game engines have started incorporating such a tool internally and creating whatever collision mesh they need straight from the imported asset, which is good. But what about all those engines that don't have that capability, or if they do, don't generate accurate enough results?&lt;br /&gt;&lt;br /&gt;Necessity being the mother of all invention, I decided to write my own convex mesh generator based on the implementation seen in Unreal; a box sliced at 45 degree angles to fit the source object. The process from start to finish took roughly 4 days with a complete rewrite from scratch at one point.&lt;br /&gt;&lt;br /&gt;The original implementation had me looking at all the verticies of the source object, finding the min and max XYZ, and then use that information to create a 26 polygon "sphere" around the object. The problem with this implementation is that it didn't always create a purely convex object and it wasn't all that tightly wrapped either. So I looked closer at what Unreal did and it seemed to me that the collision mesh was being cut only on 45 degree angles, and stopping when it hit the closest vert along any edge.&lt;br /&gt;&lt;br /&gt;Ok, sounds simple enough: create a bounding box, bevel each edge at a 45 degree angle until it intersects a vertex, repeat for all edges until the object looks like some weird abstract art. Normally this would be a simple tast for an experienced programmer who has vast knowledge in 3d math and world space, etc. But for an artist working in 3dsmax with max script, the problem was a bit more complicated. Sure there were a lot of helpful functions available for figuring stuff out, but there wasn't anything like "vertex intersects plane" which is what I really needed.&lt;br /&gt;&lt;br /&gt;I reused the code for generating that sphere and simplified it into a box, hence starting with the bounding box that I needed. Now that I had the box I was ready to slice it along all of it's edges at 45 degree angles. I placed my slicer objects in the middle of each edge and rotated so it faced 45 degrees out. But the problem remained of how to move the slicer to the closest vertex?&lt;br /&gt;&lt;br /&gt;I could use a length or distance function to get the distance to the closest vertex, but because the origin was in the middle of the edge, I only had one point of reference, and usually the closest vertex wasn't the one closest to the middle of the edge. Sure I could subdivide the slicer and give me a lot more sample points, but that seemed like overkill, and not guaranteed to give the most accurate results. Maybe I could calculate the vector to each vertex and find the one with the lowest angle? Hmm, that could work. So I asked one of the render programmers about his thoughts, and he gave me the most ideal solution: find the distance from the plane to the vertex. Heh, well yes, of course. But how to do that?&lt;br /&gt;&lt;br /&gt;Calculating the distance from a plane (considering it was infinite in size) to a point in space is a simple matter when it's aligned to on the major axis's. You simply move the sample point right under, or over, the point in question and calculate the distance. The problem with this is that it gets much more complex when the plane is rotated. So I was almost there, I just had math standing in my way :)&lt;br /&gt;&lt;br /&gt;One of the things I had forgotten about max is that it allows you to select a different coordinate space! But would a different coordinate space always give me the necessary measurements in THAT coordinate space? Or would it still be all in the world coordinate space? Well, as it turns out, it did! Problem solved!&lt;br /&gt;&lt;br /&gt;Finally I had my bounding box, I had my aligned slicers, and now the final piece of the puzzle was solved too. Since I was in the slicer's coordinate system, figuring out the distance to the closest vertex was a snap since now everything acted as though it was aligned to a major axis. With that out of the way, the slicers got moved in, the bounding box cut, and there we have it, a purely convex and simple mesh surrounding the arbitrary source object.&lt;br /&gt;&lt;br /&gt;Now while the might seem like a very round about way to going about creating this convex mesh.. and not very quickly I might add, it works every time. Save for the rare instances when the boolean operation messes up and produces artifacts. But the principal is sound. Surprisingly I'm not sure how I could optimize this script other than maybe use a function for a couple repetitive calculations. It makes me appreciate just how slow scripting languages can be compared to compiled, and even interpreted languages. But it also gives me a great satisfaction to know I've just created a script that can save hours, maybe days of manual work for artists all around the industry. And I've proven to myself that stuff like this can be taken on by artists too, not just programmers :)&lt;br /&gt;&lt;br /&gt;If you're interested in check the script out, visit my website (www.renalicious.com) and see the Tools Portfolio section for the max tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-5589654159707273039?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/5589654159707273039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/11/convex-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5589654159707273039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/5589654159707273039'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/11/convex-tools.html' title='Convex tools'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-813359592066019136</id><published>2009-08-24T10:05:00.000-07:00</published><updated>2009-08-24T11:58:40.714-07:00</updated><title type='text'>Leave it to the imagination</title><content type='html'>Having been around as a gamer for many years now, I have played and seen many different types of games, and it's no surprise that with the advancement of technology come the advancement of visual fidelity. Playing a game like Crysis I am sometimes awestruck by the near photo realistic renditions of a virtual world. And other times I feel as though someone has missed the mark with trying to emulate how the world looks.&lt;br /&gt;&lt;br /&gt;What is it about photo realism that we as artists and developers find so interesting? Is it because we want to create a new world while retaining all the qualities of the one we live in? If that's the case, would the location have the same sort of impact if it was set on the surface of Titan, or Venus? Two areas that are covered by thick clouds, dimly lit, and a landscape that is unlike anything we've seen.&lt;br /&gt;&lt;br /&gt;Maybe it's because I've been involved with making games for so long, but I can't help starting to feel that the better the visuals, the more we're being spoon fed all the information, leaving little to the imagination. Maybe its why, as with my previous post, canned scenes are as intriguing as they provide mystery and only fragments of information. There is no denying that old first person shooters such as Unreal, Half-Life, SIN, System Shock 2, and look pretty dated these days, and with their simplicity the player really has to fill in the blanks themselves, for better or worse. But back in those days in the mind's eye those games looked just as good as Crysis looks now, except they had a lot more atmosphere.&lt;br /&gt;&lt;br /&gt;Unreal 1, for example, was a game that really pushed the visual limits in 1998, and I was blown away by the fact that I was now playing in huge outdoor areas, and seeing structures like the sun spire that I had never seen before. It truly was an alien world, even though it was made up of city block sized flat planes :) But what I remember most is the progression of time from level to level, and the sounds and music. The fact that it felt like an adventure across an uncharted alien world, it truly was, Unreal. What else was there to explore? How did this area come to be?&lt;br /&gt;&lt;br /&gt;Other games such as SIN also had very unique level locations, but the atmosphere and the sounds made it come to life, despite it looking very primitive. But again, it too took the player on an adventure through the world.&lt;br /&gt;&lt;br /&gt;And the two games that probably give me the fondest of memories are System Shock 2 and Deus Ex. The two games where visuals were sorely lacking (Even when they were released), but I would play them again and again and again. What did those games have that modern games don't? Even Bio Shock doesn't hit home as well as System Shock did. Deus Ex 2? Good, but not quite there. Unreal 2? Hmm, I'd have to give it a separate article!&lt;br /&gt;&lt;br /&gt;In System Shock I remember the sounds; walking through the corridors of a dying ship with an ever present rumble, alone in space. And when the rumble wasn't there it was an echoy wind noise, or a groaning of a giant organic being. Something was always there even though I could not see it. Add to all that faint whispers from pipe wielding mutants walking around, talking to themselves. Was it a voice that I heard? Or was it just my imagination… eep! Are those footsteps coming towards me? Or are they leaving? Maybe if I hide in this corner it will all go away!&lt;br /&gt;&lt;br /&gt;Deus Ex, while being grounded on earth, was completely different than SS2, but still left its mark like a brick in the face. At the time it didn’t run all that well, the AI was kind of silly, and all textures were 256x256 max, thanks to 3dfx's limitations. But I was so drawn into the world that it didn’t matter, I just wanted to explore and figure out the best way to get past those guards or those turrets without being spotted. Would someone really NOT have noticed a vent shaft leading from the outside directly into the top secret lab? Probably not! But with low fidelity visuals, everything took on a characterization of the real world, and the mind took care of the rest. It really did allow me to personalize the experience I was given.&lt;br /&gt;&lt;br /&gt;There are more games that I found just as exciting that I didn’t mention here, even older SNES and genesis games. But this article focuses more on first person shooters of what I could consider the golden era of shooters: from about 1997 / 1998, to 2001 / 2002. Games that might have looked simple by today standards, but really gave me incredible immersion and made my mind fill in all the blanks about the experience. I'm a shooter fan at heart, so I'll talk about what I know and love.&lt;br /&gt;&lt;br /&gt;It’s all about the gameplay and the experience after all, right? They always say to “keep things simple” and “less is more”. The problem is “how little” and “how simple”, because we’re no longer living in the 90s, expectations have changed and people won’t stand for cubes on the screen anymore.&lt;br /&gt;&lt;br /&gt;Up next I’m going to focus on more modern games that really hit home; games with more modern visuals!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-813359592066019136?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/813359592066019136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/08/sounds-of-imagination.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/813359592066019136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/813359592066019136'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/08/sounds-of-imagination.html' title='Leave it to the imagination'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-1600010671019589641</id><published>2009-08-15T17:46:00.001-07:00</published><updated>2009-08-15T17:58:36.983-07:00</updated><title type='text'>Canned scenes and backgrounds</title><content type='html'>What is it about canned scenes that make them so fascinating to me? What is a canned scene anyways? Well, I would describe it as: a non interactive 3D or 2.5D composition of objects inaccessible to the player or camera and usually only seen from a limited perspective.&lt;br /&gt;&lt;br /&gt;When I think about some of the canned scenes I've come across over the years, I always felt that they really added a lot to the life of the world by giving the area some, or a lot, of story and background. A cave behind a window in Doom, or a building in the distance in Stalker, or even a room full of gore behind a barricaded door in FEAR, all of these make you wonder just what happened, or what's really there. Of course it's easy to get there with cheat codes, but when you get there, the experience is lost; the carefully crafted illusion fall apart.&lt;br /&gt;&lt;br /&gt;Is there some driving force that makes us want to get to, or into, a place that we're not suppose to be? Maybe its our need to solve a mystery or explore the unknown that's created in these small instances, and also an easy way to give life to the world at the same time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-1600010671019589641?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/1600010671019589641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/08/canned-scenes-and-backgrounds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1600010671019589641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1600010671019589641'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/08/canned-scenes-and-backgrounds.html' title='Canned scenes and backgrounds'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7927869982226627791</id><published>2009-08-02T09:42:00.000-07:00</published><updated>2009-08-02T10:54:04.857-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='stalker'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><title type='text'>Stalker, old and new</title><content type='html'>A few months ago CSG worlds released a free version of Stalker from 2004, and seeing how I have played though the original (Or should I say the production version) many times, I jumped on the opportunity to see how one of my favorite games of recent times looked many years ago. I have looked at all the old screenshots, but seeing it in motion was even better. Some of the things that interested me were what changed, what didn't, and what the community thought.&lt;br /&gt;&lt;br /&gt;First off what I saw right away in the 2004 release (I'll refer to it as ST04) was the size of the levels and how much bigger they were. I know for one like big levels, or bigger level, but I think this is one case where less is definitely more. In the retail version of Stalker (STSoC) the levels seem like the perfect size for the first couple of playthroughs; there is enough there to keep you entertained given the amount of different types of AI, anomalies, walking speed, etc. ST04’s levels were too big some of them, like Dark Valley, Yantar, and the reactor. They were trying to go for an open world type game, I think, and I liken Stalker more to a game like Crysis in this case. It had that open world feeling, but smaller doses worked better in the end. STSoC ended up being much more cohesive with smaller levels that were better distilled for action and exploration, or the fact that they were much less confusing and better on memory as well.&lt;br /&gt;A couple of examples:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Garbage, it had a lot of extra tunnels and routes under the factory. Sure they could have put rats in there, but aside from that, and a few items, there really wasn’t anything to do except move forward or backwards. Stalker isn’t known for disabling traps and security systems to gain access to an area. Not to mention ST04’s garbage was a LOT longer too, and with all the back and forth story elements, I’m glad it was cut down in size.&lt;/li&gt;&lt;li&gt;Agroprom and the Bar / Wildlands, both split into two levels. I find this interesting more from an “Oooh! This is how these two levels connect!!” perspective  Of course it’s more memory friendly, and easier to script / debug.&lt;/li&gt;&lt;li&gt;Underground labs were simplified and made more linear. Now this might sound like an issue, but I find it quite refreshing. The world provides enough variety for open-worldness, and the labs give me just the opposite: a nice linear adventure.&lt;/li&gt;&lt;li&gt;Yantar ended up being MUCH different, and while I can’t comment on how ST04’s version would have ended up, I LOVE the final version. ST04’s version looks like it may have been one of the first levels in the game, remnants of 2001 when the project began. It LOOKED like it was heading more towards the style of The Warehouses in STSoc, but I’m glad it didn’t &lt;/li&gt;&lt;li&gt;Power station. While very cool that I can walk around the entire Chernobyl power station on foot, verbatim… aside from fighting off wild animals and getting irradiated, there didn’t seem to be much to do in ST04. &lt;/li&gt;&lt;/ol&gt;Of course the art changed too, for the better. Strangely enough some of the levels that never made it into the final release looked to be furthest in development, and the most interesting story wise.&lt;br /&gt;&lt;br /&gt;Next, some of the things that stayed the same interest me on a more personal level. I guess it gives me some insight into the minds of the developers in some way. Aside from the obvious like monsters and weapons, a lot of the levels stayed the same… except they were more condensed. I find this interesting because it seems like Stalker was going to be much more straight forward action. 4 years later it turns into this choose your own adventure type game using a lot of the same assets.&lt;br /&gt;&lt;br /&gt;Finally what really caught my attention was the community’s reaction to this. A lot of people seemed to think that ST04’s atmosphere was much better than STSoC. Huh?! First off ST04 doesn’t have much of a developed atmosphere or mood because there is no music, no sounds, none of the cool ambience and weather effects that they put into STSoC. One of the best things about Stalker, in my mind, is the incredible atmosphere. It feels so real at times that it makes me want to jump into the game world and experience it in person. That’s saying something considering everyone lives in a deadly, radiation ridden dystopian wasteland. ST04, on the other hand, felt empty, dead, and boring… a testament to how incomplete it really was at the time.&lt;br /&gt;&lt;br /&gt;Stalker isn't the only game I've had the privilege of playing both the final retail version and an earlier version. Doom comes to mind, as do all the games I've worked on. But it's one of the more modern games, and one that I really enjoy. If someone released an early version of Deus Ex, or System Shock 2, I would be playing those in a heart beat... and posting about it too ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7927869982226627791?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7927869982226627791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/08/stalker-old-and-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7927869982226627791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7927869982226627791'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/08/stalker-old-and-new.html' title='Stalker, old and new'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-7319547373228150701</id><published>2009-07-30T20:16:00.000-07:00</published><updated>2009-07-30T20:20:44.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='Weather'/><title type='text'>Server issues</title><content type='html'>With all this hot weather in Vancouver we had to move the AC to the main living area. And as my server was sitting outside for the past couple of years, it just couldn't cope with the added heat of the AC exhaust port right by it. Thankfully I had a new box waiting to be setup :)&lt;br /&gt;&lt;br /&gt;In all I had about 4-5 hours down time as I installed everything, got the OS setup, and finally figured out my ports. So www.renalicious.com is up and running properly again.&lt;br /&gt;&lt;br /&gt;I can finally retire the old Xeon rackmount behemoth "Crusher" :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-7319547373228150701?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/7319547373228150701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/07/server-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7319547373228150701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/7319547373228150701'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/07/server-issues.html' title='Server issues'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4978850566627863958.post-1043220436648973147</id><published>2009-07-30T12:22:00.000-07:00</published><updated>2009-07-30T12:37:09.872-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='Story'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='alternatives'/><category scheme='http://www.blogger.com/atom/ns#' term='branching'/><title type='text'>Don't Push The Button</title><content type='html'>&lt;span style="font-family: verdana;"&gt;How many game titles do you know where you must push a button in order to continue with the story? I know a couple games that come to mind are Deus Ex and Bio Shock. And one thing that I have always wondered about is what it would take to make a game where you actually have an option, or some choice, when it comes to Pushing-The-Button.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Modern engines definitely look pretty, but because it can take many man months to make a single level, developing content that players might not see is becoming increasingly taboo. Has anyone ever played SIN? I can remember playing it a couple years ago, or last year, and discovering a level in the game that I never knew existed, based on my actions and completed objects in the previous level. I was floored!  Here is a game that was released in the 90’s and I’m still finding new things about it. Whereas a game like Bio Shock one I’ve played through it once, the only thing that’s left is playing through it again with a different set of plasmids, but I’m pretty sure I’ve seen all the levels.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;So the more powerful the technology, the more linear things get? That seems almost counter intuitive. So how far back would we need to go to create a game like SIN where, based on what the player chooses, the game and even the story will change?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Obviously we can’t go as far back as choose your own adventure games, or even text based because the player will simply lose track of what is going on. But what about making a game like that in the Doom engine, or at best, the Quake engine? I can remember pumping out a level in a matter of hours in Doom, and days for a Quake level. Naturally these engines are old and a lot of extra features will need to be added. But with what we know these days, why couldn’t we plug in advanced AI and scripting into these old engines? They’re free too! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The way I see it, making a game from start to finish takes 100% of the development time and resources. But if, like in Deus Ex, where the player chooses option B instead of option A half way during the game, it shouldn’t add another 50% development time, to a total of 150%. If anything it would add maybe 25%, especially if the developers are smart and reuse levels and assets which take the longest to make. What’s left is scripting, dialogue, maybe cinematics, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The first half will always stay the same, but in the second half you could be on the hunt for faction A, instead of being hunted by faction B. The levels can easily be reused, just move the spawn points, change a couple of assets, and new scripting. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Something like this really excites me, because using the right technology a game that really gives the player story options can be developed. Don’t like your allies? Take the offer to defect then take them out in the next level! Did you fail at that too? Maybe it was all part of the plan to play as a double agent.  Eventually you meet up in a warehouse. If you stuck with your allies you will be the attacking force, but if you defected you would be defending. Or maybe you’re really part of the third faction, sneaking in to steal the goods while the other two are fighting it out. How cool would that be? :D&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4978850566627863958-1043220436648973147?l=vantechart.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vantechart.blogspot.com/feeds/1043220436648973147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://vantechart.blogspot.com/2009/07/dont-push-button.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1043220436648973147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4978850566627863958/posts/default/1043220436648973147'/><link rel='alternate' type='text/html' href='http://vantechart.blogspot.com/2009/07/dont-push-button.html' title='Don&apos;t Push The Button'/><author><name>Renalicious</name><uri>http://www.blogger.com/profile/05688667228883501345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
