Virtual Environments Final Project

Wow, after some very long hours and very few blog updates. We’ve finally finished.

Thanks to David Miranda for his work in ocean shading and post processing and pushing me to figure out how it works on my own. It was totally worth the effort. I know its not near complete, but it was a great first step.

Steambeard Virtual Environment

Click to watch on YouTube

Postmortem:

I see the video rendering now. Writing the postmortem now seems a bit premature because the story is not over until the presentation is done. But here I am, so many uncountable hours into this project, one hour and forty-five minutes left to encode the final video. I cannot describe the learning experience well enough because the actual scope of knowledge gained extends so far beyond this class.

This project was not just an environment for me. It was my world. I learned to laugh, cry, and play within UDK. By the end of it, Richard and I were laughing together because of UDK’s quirks while working in the environment. The strangest thing to me was realizing that he understood the irony of what happened inside UDK just as well as I did, and I realized just how few people could possibly understand what could be so funny about this little world we were making. That blew my mind a bit. Our understanding of UDK and many of its wonderful dispositions did not come from one success, but from hours of trial and error. Like that one time where the file was corrupted my one map error and losing eighteen hours of unrecoverable work during crunch time was a possible future.

It came from sharing all of our knowledge of what we were learning with each other so that we could function better as a team. We would say, “Hey, did you know about this button? It will change your life.” That learning experience facilitated a dependence on each other’s opinions more and helped us work better as a team because we would then say, “Wait, hold up and check out the map really quick, tell me how this area looks, but don’t save anything!”

There were benefits from having a large team, but there are also drawbacks. Good times are good, but bad times can feel downright terrible. When school and life gets busy, we can lose touch and fall out of communication, then become disconnected. Being perfectly content where I was heading, I would have the work to move ahead, but I did not always feel like anyone was keeping up with me. Several times I was told to not work so hard if that was the way I felt, but I could not let myself go down that path. I knew where the end goal was supposed to be in my mind and had to get there. Even if it was on my own I would get there, but thankfully, I had a team and was able to go much further; much further than I had anticipated.

Richard at the last minute surprised me by going ahead and placing sound in the level at the last minute. I got excited and went to help him out a bit and what happened at that point turned our level from complete into a world environment. Sound added that extra dimension that bridged the gap between the player and our world. It reaches out with the a physical sensation and adds that spark that was missing in silence.

The biggest difficulty I faced in making the game was doing textures for something I was not modeling. Communication was still a bit of an issue between Ryan and I in that he did not know exactly what I needed. He will admit that he is just beginning with UV mapping and because I was asking for the maps to be mapped in a certain way, that only added another level of abstraction to the concept. In the end, I had to go back and re-map some of the meshes which turned out to be rather tedious. However, the results were worth the extra effort.

The technical aspects of creating the level were probably the most fun and rewarding because after I understood those concepts, so many of the other parts of UDK paled in comparison. What I mean is that, learning how lighting and rendering happens at the purely mathematical level, allowed me to understand how to make my textures and materials better and more accurate to the effect I desired. And it turned out that some of the techniques I learned were so advanced that I deemed them unusable by our project. The slice-based parallax mapping specifically, was too limited and resource consuming that it would not be viable to use it on any objects until further considerations could be taken, but the scope of that endeavor was far too costly in terms of time and put my efforts elsewhere.

I returned to an earlier concept I was investigating where an artist used Fourier transforms to better simulate waves. He came to the conclusion that such a technique could never be used in a game because of the cost of instructions and I wholeheartedly agree. I tried just a small portion of what he was doing and the cost was nearly ten frames per second overall in just my example. So what I ended up doing was to reduce that set of instruction down to two very simple transforms that passed over each other at a slight angle. At the proper angle to the camera, the effect was subtle and highly realistic because it gave the water life, but the only major drawback was UDK’s inability to figure out proper Z-depth of a plane which caused some visual error which was negligible in the long run.

My biggest failure of this project was my adamancy to use texture blending for nearly everything. I did not fully understand the pros and cons of texture blending and the limits of its usage. I believe a combination of texture blending and static textures would have been the best approach by far and taken our project one degree higher in quality. However, the effectiveness of my different material blends proved more than sufficient to cover most or all of our major texturing tasks. I believe it behaved excellently for organic items such as the Island itself. Now, if I could only get more color channels and more than twelve textures per material…

At the end of this project, I am overwhelmingly pleased with the outcome. I believe it will be a lasting asset to my student portfolio and a testament to proper teamwork and melding of skill-sets within ATEC. Group projects are difficult and usually no one likes them, but ATEC requires that one plays well with others. At the end of the day, I enjoyed the people I worked with and I believe that was reflected in the amount of effort we all wanted to put into the building of our environment.

Post Processing Chain

So I’m working on a post processing chain for UDK. Currently I’ve got:

  • bleach bypass
  • cross processing
  • chromatic aberration
  • lens distortion

But the chromatic aberration and lens distortion are a bit terrible. My lens distortion is based off a normal map and the lens distortion is so ugly I just interpolate it out of the middle completely.

It doesn’t like to play with the occlusion, DOF, or anti-aliasing very well so I’m figuring out the best order of chaining.

I’m trying to convert a really nice hlsl shader that has vingetting+distortion+aberration+blur, but it’s not easy without any documentation or examples. Hopefully I’ll be able to implement a fast edge detect anti-aliasing method as well. I’d much rather handle the post processing myself than sticking to the generic UDK effect.

Update:

Everything works to an acceptable degree. I just need to get the edge shader working right so I can get rid of those jaggies.

The chain is: occlusion -> cross-process -> bleach bypass -> uber shader -> lens distortion

photograph to texture

Just to see if anyone else is doing something similar or has suggestions on how to improve my technique…

My basic flow for creating a basic simple texture is:

  1. Digital Photograph to Lightroom
  2. DXO Optics Pro
  3. Photoshop
  4. Crazybump
1. I take the photograph of what I want to use as a texture and I might mess with color, tone, exposure, etc. in Lightroom. This is the result:
2. Notice the warping on the edges of the photograph. That’s caused by the lens of the camera. I’ll use DXO to help clean that up.
3. Now I can take this into Photoshop and fix distinctive markings, color, and tiling.
4. Now I can just go from my .PSD file to CrazyBump. I’ll use layers to help generate the proper normal, specularity, and diffusion maps.
One positive about this texture is that its nearly monochromatic from the beginning. I could easily change the color of the brick or mortar if I wanted to.

Photography

I believe it’s very important to be a good photographer in Arts and Technology. Not only does it demonstrate the fundamental principles of design, but texturing from photographs is so much better than trying to recreate textures by hand.

Some are pictures from Chicago and St. Louis during the Summer of 2010.
Some are from my Digital Photography class back in Fall 2010.
Others are from the  Digital Photography final project.

 

Advanced Game Design

So every week in Advanced Game Design we have to make a prototype for a game. It’s pretty fun, but it also takes a lot of work. I’ve been using Construct 2 by Scirra for several weeks now, and despite its limitations, I’ve been happy to learn to develop games with Construct 2.

I’ve got pictures or links to the games. Not all of them work or work well, but its ok. You don’t strike gold every day.

Here are my games:

1. Paper Plane
I’m a sucker for fast movement. This game was supposed to be a simple tutorial project, but I wanted to dive right in and figure out how to use Construct.

2. Maze
I forget the mechanic required for this, but I didn’t have much time. I threw together the most simple game possible. I liked the simplicity of it. You’re presented with an obvious goal right from the start and the timer pushes you to go as fast as possible.

3. Kitty
This game’s requirement was to use the slice mechanic. The way I did it was to draw a tiled image 1pixel high from a start to end point. If the distance was greater than a certain threshold, then it started a new line. I made a limit to the number of consecutive lines that could be drawn.

This method worked for drawing the lines perfectly, but it didn’t translate into cutting the objects properly. Each line made its own cut and if two lines were over an object, the object could be cut twice or more.

4. Dino Garden
My focus for this game was to work on a water hose mechanic and throwing objects back into 3D space.  It was also fun getting the hose and animations to work seamlessly.

5. Balloon Pop
This game was using the mechanic of “mirroring.” I thought it was fun.

BTW. Press space to “fire.” I overlooked some documentation there.

6. Ball Pop

7. Gnome Rock Breaker
   This was based off one of the games inside the IGF Pirate Kart. Our assignment was to make a sequel to the game. Everyone agreed that this was one of the more difficult assignments because you first had to implement the original game design and then add on your own expansions. I ran into limitations of construct because the physics plugin wasn’t cooperating with the mechanics of the original game.

If you want to check out all the projects or more information about them you can look here: http://www.rapidstateofmind.wordpress.com

Intro to 3D Modeling

I found a bunch of stuff from intro to 3D modeling that I though had been lost in a hard drive crash. I decided to render it out and throw it up here before I lost it again.

Animals

Spent a few minutes making a dog’s head the other day.

some sketches of cats I did last summer maybe??