Sunday, January 31, 2010
Moving part2
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 ;)
Wednesday, January 27, 2010
Moving....
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.
Thanks for tuning in :)!
Wednesday, January 20, 2010
3D textures and Voxels
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.
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.
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.
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.
1) x-ray vision without sorting issues
2) thermal vision that doesn't rely on polygon viewing angles for colouring
3) Nifty construction or deconstruction effect. Think TRON :)
4) Nifty teleportation effect, kind of like TRON
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?
Naturally for best performance these things would need to be controlled to avoid potentially serious performance issues.
1) x-ray visor where only objects within a limited field of view and distance are actually x-rayed and displayed as 3D textures.
2) With thermal vision, smaller cylindrical and ellipsoid 3D textures bound to major body parts create the illusion of animation.
3) A 3D object is posed then "digitized" into a lower resolution alanogue, then pixel by pixel removed from the world.
4) Similar to point #3, but quicker and in reverse.
In part 2, I will detail some ideas I have about creating 3D textures from modern 3D models.
Sunday, January 10, 2010
Shaders
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.
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.
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 ;)
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.
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 :)
Wednesday, January 6, 2010
Technical artist's 2009 review
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.
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.
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.
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!
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.
"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.
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.
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".
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.
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 :)
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.
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.
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.
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!
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!
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!
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!
Subscribe to:
Posts (Atom)