I have decided that I need to have an online presence to be able to make it in this new media world. I am going to use this site as a calling card for myself so that I can show off my art to as many as possible. Please leave comments and questions if you have them. Make sure to visit the portfolio page and browse what I have to show because that is the main reason this site exists now. I will try to update this blog with posts about the aspects of new media that I am involved in or am interested in. I hope to build a small community here, I hope that we can get some good collaborative projects going in the future. I look forward to hearing from all of you.
Media is online!
•June 9, 2009 • Leave a CommentThe portfolio has been updated. I have a bunch of images from some of the best projects I have worked on. Check it out!
Final Video Transcription
•June 4, 2009 • Leave a CommentTranscription- Grass Clump
I’m going to walk you through the steps in creating a simple clump of grass. This isn’t an exact tutorial since I will not be outlining every mouse click and keyboard shortcut in this process. The asset we will be creating is a clump of grass. This process can be done in many ways, for this project, we will be hand painting a two-dimensional section of grass against a transparent background in the GIMP. After this, we will go through the steps to apply it to a flat plane in Blender in 3D and duplicate it multiple times to create a nice looking clump of grass that doesn’t load your computer down when being displayed.
I’m just going to get some nice thick grass in here so we can use it as an asset for the game.
This is the GIMP, the GNU Image Manipulation Program, it’s another open source program that anyone can download for free.
Ok, I think that’ll be allright. Ideally I would mix a few different brightnesses in, you know break it up a little bit, so I’ll do some of that.
This checkerboard right here is transparency and that’s very important to keep so that Blender knows what parts to cut out.
Allright, now we’ve created our image with transparency in the GIMP, now we need to bring it into Blender… this is Blender.
Wherever you saved it, just navigate to that.
There you go, with this button checked, you can tell whether or not our transparency worked, and it did.
We need to add a plane.
And so now you can see your texture on your plane.
This is your top view so you can see your plane is lying straight down, so let’s rotate it so it’s facing the front.
There’s a light here, move it across the surface.
So now we need to tell it to use the transparency, right now it’s mapping just for the color.
So we need to tell it to use the alpha, which is the transparency, and then we need to bring this down to zero, and then we need to check this, and now you can see through it.
Allright, let’s add some dimension to it.
And now, let’s bring in the plane, I un-hid it, I had it hidden.
And now we will duplicate it a few times.
So now you can see it.
The reason I moved it down so that the object center is down here so that then I can do this, to make some of them taller you know.
You get kind of a nice clump going there.
Make that a little smaller.
And you can kinda just keep on duplicating them and… then we can bring that into our game and just populate the world with it.
Probably create a few different looking clusters of grass for some variety, but just duplicate it all over and just place it on the ground.
In this section we covered how to create a simple piece of grass for use in a realtime 3D environment. We first painted the grass against a transparent background. We then brought it into Blender, applied it to a flat plane in the 3D environment, added dimension to that plane, and then duplicated the plane enough times so that it would look good as a clump of grass in your game.
Transcription- Baking
In this section, I will be covering texture baking. I mentioned normal mapping earlier, in this section, normal map baking from a high detail object to a low detail object is a key component of what I will be covering. The main point of texture baking is to take a very high detail object that is too detailed for a game and turn it into a low detail object while retaining as much of the illusion of detail as possible. Detail in 3D objects is more taxing on the computer than detail in textures (2D), so the objective is to cram all of your detail into your textures while keeping the number of 3D polygon faces low.
Here is one of the branches for the trees that I used.
So this is one of the high detail ones.
I originally went out to the forest, I picked a little evergreen branch just a really small one.
I stuck it in the scanner bed, scanned it in, and cut it out in the GIMP, you know using the selection tools and just deleting the background.
I just applied it to a single face plane, duplicated it a bunch of times and put it on these little branches.
I put a texture on it and I broke this down into a hierarchy so that when you grab each branch, it moves all the pieces that are attached to it.
These little bare branches, I just hand-painted.
If the tree were made up of these branches, one tree would be as taxing on the system as the entire scene is now.
So basically I took this, went into a camera, and rendered it out, you know, once it’s rendered out, this is just a 2D image now, it’s just a picture that can be used as a texture.
I just applied it to a plane, it was a flat plane originally, I just subdivided it so I have a little bit of dimension.
It’s 25 faces, I actually ended up reducing it down to like 10 or 15.
On this object, there are 56 faces just on one of these in comparison to just the 25 on this entire thing, so this is quite a bit more simple, a lot easier for the computer to display.
It doesn’t look as good, I made some higher detail branches for the lower branches, but they are still not quite this high of detail.
In this section I covered some texture and detail baking techniques. The objective behind these techniques is to cram as much detail into your scene in the most efficient way possible. Normal baking calculates surface detail differences between two objects and writes that information to a normal map. Color baking takes the color texture from one object and projects it on to another. Finally, with traditional render setups, one can create a complex object and simplify it for distant object display.\
Transcription- Textures and Normals
In this section I’ll be explaining what makes up the textures that are used on our game objects. The basic concepts of surface normals and color maps will be explored to some degree. The materials in our game rely on multiple layers of shading in order to achieve a detailed look. Our two main layers are the color and the normal maps. Custom texture layouts are generated for each game object. After I have made a group of unique objects, I can copy them and distribute them in our game world, applying simple size, shape and rotation variations to each copy.
Allright, so here is the basic mesh of one of the rocks that we will be using.
It’s using triangle faces, which are the simplest form of faces, so therefore, it’s the simplest for the game engine to render.
And this section will be covering texture mapping, so here is the first layer, the color map.
So you can see, it’s just the image here and it is custom fit for this rock.
This rock was cut down this seam all the way around and the program figured out how best to lay it flat on a two-dimensional plane so that this texture can be easily mapped to this surface, from 2D to 3D.
I’m going to go turn on the color map and basically, each one of these faces here corresponds to this.
Select this, there’s a face right here.
On this object, it’s just a single layer, I have a basic color layer and I have a detail layer.
Now I’m going to switch over to the tree because on the tree I actually kept the layers separate in Blender. So this is the basic color, I just painted this on to the surface so it doesn’t have a seam.
So this is the first layer, and then I have the detail layer, which utilizes the basic color of this and then overlays itself over this. I did the same thing on the rock, it’s just that they are combined into one image for use in Blender where as this is actually two layers.
If I turn this off you kinda see a white underneath it.
So next I am going to talk about surface normals because they are very important in the way the object is shaded.
Basically, the surface normal is defining what direction this face is pointing, you know these faces are all flat.
So basically, the program needs to figure out which way the face is pointing so that light can hit it.
There are visual indicators of your normals, just a little blue line.
This is essentially an arrow pointing out saying that this is the way this is facing.
Sometimes they can get screwed up, like they’ll be pointing inside and that’ll cause weird errors where you have like this weird black spot here because light’s not hitting it right.
When you rotate the face, all the normals rotate as well.
The more faces there are, the more normals there are, the more normals there are, the more surfaces there are for the light to hit.
I’m going to turn on the complex rock.
This rock has a lot more faces as you can see.
So since it has more faces, it has more surfaces for the light to hit and it looks more complex
You move light across it, this just has a flat, blah, just moves across, and this you can see all the little nuances and cracks in the rock.
There is a way to take the physical surface normals from this rock and turn them into a texture map on this rock and that’s what this map is for.
I am going to talk about baking normals in another section, but it basically calculates the difference between these two and turns them into this.
So Blender uses the normal map like a code, it takes the values of red green and blue and translates them into x y and z.
Here’s the normal map, and I’ve actually added even more detail. I baked the surface from this and I actually added more because you can add it later but I’ll show you now, there looks like there’s detail on that surface when there actually isn’t.
Now the biggest weakness of normal maps is that you look at this from the side, you can see that there’s bumps and stuff and you look at this from the side and there’s nothing, it’s just flat, but from a distance it looks really nice and it’s a great way of getting extra detail in
In this section I covered the two basic texture layers that we are utilizing in this demo. The first layer is the color map, this is a simple image that gives the object a colored and detailed surface. The second layer is the normal map. This layer serves a more complex purpose than the color map since it creates the illusion of a much more detailed physical surface than is actually represented by geometry. The normal map changes how light hits the surface, allowing for a very nice look.
Final Video Script: Simple Asset Creation
•June 4, 2009 • Leave a CommentSimple Asset Creation
I’m going to walk you through the steps in creating a simple clump of grass. This isn’t an exact tutorial since I will not be outlining every mouse click and keyboard shortcut in this process. The asset we will be creating is a clump of grass. This process can be done in many ways, for this project, we will be hand painting a two-dimensional section of grass against a transparent background in the GIMP. After this, we will go through the steps to apply it to a flat plane in Blender in 3D and duplicate it multiple times to create a nice looking clump of grass that doesn’t load your computer down when being displayed.
Part I: Texture painting
Open GIMP
Use tablet with pressure sensitivity to draw lines of varying thickness
Make sure that you are painting on a transparent background
Change color brightness at least once to vary the texture
Open in Blender
Open first in UV image editor, this loads the image into the program for easy loading into any texture, needed for laying out your UV texture space.
In UV image editor, verify that the transparency translated over to Blender
Add plane
-edit mode, size mesh to roughly the proportions of the image
-unwrap plane to the UV editor, make sure that texture space of object covers image
Add new material
-go to texture options from material options
.select new, image, and chose your image from drop-down menu
-back to material options
.map input: UV’s
.map to: color (default)
Rotate so grass is upright
-go to edit mode
.rotate accordingly
Back to material options
-map to alpha
-bring material alpha level to 0
-check “ztransp”
Texture done
Part II
Add Dimension to the flat plane
-edit mode
.subdivide up and down
.turn proportional edit on and deform
Back to object mode
-duplicate and rotate 5-10 times, either join or group
In this section we covered how to create a simple piece of grass for use in a realtime 3D environment. We first painted the grass against a transparent background. We then brought it into Blender, applied it to a flat plane in the 3D environment, added dimension to that plane, and then duplicated the plane enough times so that it would look good as a clump of grass in your game.
Final Video Script: Texture Baking
•June 4, 2009 • Leave a CommentBasic Texture Baking
In this section, I will be covering texture baking. I mentioned normal mapping earlier, in this section, normal map baking from a high detail object to a low detail object is a key component of what I will be covering. The main point of texture baking is to take a very high detail object that is too detailed for a game and turn it into a low detail object while retaining as much of the illusion of detail as possible. Detail in 3D objects is more taxing on the computer than detail in textures (2D), so the objective is to cram all of your detail into your textures while keeping the number of 3D polygon faces low.
Part I: Wooden Panels
Show side by side panels
individual panels with 102 faces vs flat plane with 1 face
move light over surface
hide textured plane and unhide untextured plane
Normal Baking
One object on top of other
-Blender calculates the surface difference between the two objects and translates it into a normal map custom fit for the object you are baking to
Bake normal map
Texture Baking
Projects the texture from one object on to another
Bake texture map
Ambient Occlusion Baking
Helps accentuate the form further
Bake AO map
Part II: Tree Branches
Show tree branch master file
Zoom to individual texture face
-scanned actual evergreen branches, cut them out in GIMP
-same as grass demonstration
Zoom out to reveal whole tree
-manually attached, rotated, and resized each piece
-duplicated branches
Go to camera view
-rendered out a 2D image of the branch
-the 2D image can now be mapped to a simpler object
Unhide the simple branch
-demonstrate lower detail level
Open tree file
-demonstrate area of simple branch planes
-show lower branches with higher detail
-show simplified model for distant trees
-the further away objects are, the simpler they are
In this section I covered some texture and detail baking techniques. The objective behind these techniques is to cram as much detail into your scene in the most efficient way possible. Normal baking calculates surface detail differences between two objects and writes that information to a normal map. Color baking takes the color texture from one object and projects it on to another. Finally, with traditional render setups, one can create a complex object and simplify it for distant object display.
Final Video Script: Basic Texture Layers
•June 4, 2009 • Leave a CommentBasic Texture Layers
In this section I’ll be explaining what makes up the textures that are used on our game objects. The basic concepts of surface normals and color maps will be explored to some degree. The materials in our game rely on multiple layers of shading in order to achieve a detailed look. Our two main layers are the color and the normal maps. Custom texture layouts are generated for each game object. After I have made a group of unique objects, I can copy them and distribute them in our game world, applying simple size, shape and rotation variations to each copy.
I will be using one of the large rocks from our scene as the example I am showing you today.
Show rock
basic lighting, simple object
show unwrapping
turn on set smooth- smooths shading between faces
Open up color map in UV editor
show how unwrapping corresponds with color map
Turn on color map
many ways to generate color maps
I use a two step method, the steps are combined into one color map on the rock, on the tree they can be seen as separate layers in Blender.
Show tree trunk
basic color layer and detail color layer
there are advantages and disadvantages to combining them into one layer in Blender, it depends on the object.
Intro to surface normals
go into edit mode and show face normals
-each face is flat as a triangle, triangle being the simplest type of polygon
-surface normal tells the program what way that face is pointing, this defines how light hits it
-too many faces bog computer down
Unhide complex rock
show normals on complex rock
open UV editor, show normal map
Open normal map in GIMP, show channels
all computer images are a mix of red, green, and blue, each channel contains different levels of RGB, from 0-100%. Blender reads the normal map like a code, the combination of red green and blue in a normal map tells Blender how to shade the surface when light hits it. With a texture map, each pixel can be lit as if it were a face and with many pixels mapped to each face, it is an efficient way to increase detail of an object.
Turn on normal map channel, show off rock, show normal map by itself. Go to tree trunk and do the same
This is a performance saving cheat and is used in high end game production these days.
Blender allows you to take the normals from one object and bake them to a normal map for use with another object. Will cover texture baking in another section.
The biggest weakness of normal maps is that they don’t hold up when viewed from the side. There are other forms of mapping that can make the illusion even more real, but are harder to achieve.
Other considerations
Specularity: how shiny the object is, this can help accentuate your normal maps. Texture maps can be used to control this as well.
In this section I covered the two basic texture layers that we are utilizing in this demo. The first layer is the color map, this is a simple image that gives the object a colored and detailed surface. The second layer is the normal map. This layer serves a more complex purpose than the color map since it creates the illusion of a much more detailed physical surface than is actually represented by geometry. The normal map changes how light hits the surface, allowing for a very nice look.
Final Process Memo
•June 2, 2009 • Leave a CommentIt has been a long term, but I am happy where the game project stands. Ultimately, I want more diversity in the areas that I have worked on, but that will come with more work and time. For this project, I produced a bunch of 3D models and textures using a workflow that is tailored for real time 3D game production. For the video presentation, I scripted a series of simplified “DVD special features” style video sequences. The three sections covered a selection of the fundamental methods and concepts that I applied in my work on this project. The first section covered an overview of the creation of a very basic game asset, a clump of grass. The second section goes over the various elements I utilized to create the layered texture shaders that we implemented in our realtime environment. The most work I put into this beyond the documentation, was in preparing this scene to an acceptable graphics standard.
I went into this project with most of the knowledge I needed to take on something like this. I had enough to start and learn the rest as I went along. I learned some interesting things about texture faces as I studied this. I learned that, in the game engine, a textured face only has one side unless otherwise told, this causes some problems if you don’t know what is going on. I also learned that texturing a face with alpha channel transparency has multiple modes. The default mode looks nice, but the game engine has problems when there are multiple objects involved, it has trouble determining what object is closest to you and thus can produce some really weird looking groups of objects. I figured out how to fix this towards the end, unfortunately the fix makes some textures look more chunky than I would like, but I see the same techniques reflected in just about every game engine I have played, now that I understand the underlying principles.
I think one of the more interesting things in this experience was working with the others in this project. I am by far the most experienced in 3D content creation, so I served as a technical leader of sorts. I am glad that Scott and Jason really showed a strong interest in learning these techniques, but I knew it was unrealistic to be able to cram my years of accumulated knowledge into them in one term. It was an interesting challenge finding what amount of workload they should take on, but I think it worked out well in the end. By the end, I had put in many all-nighters, often staying up til 5 or 6am working on this project. I am pretty happy with what I produced for this project. I think I pushed the limits of what this particular game engine can do, and I hope to study and expand on this in the near future.
Week 9: Article Reviews
•May 27, 2009 • Leave a CommentI remember back in 2000 and 2001 when I was first getting into 3D, Truespace was one of the first 3D programs I ever heard of. It was too expensive for me when I first looked into it. I remember that it was originally owned by a company called Calgari. I was interested in it because it was the preferred program for making models for one of my favorite games. I never figured out how to get my own models into that game, but I did as much research as I could manage. After about version 6, they started offering version 3.5 for free. I downloaded it, but wasn’t persistent enough to understand it. I hope that the coders for the project can get it into open source. It is terrible that a company like Microsoft can buy the code and just throw it away. If it is going to be thrown away, why can’t it be made open source. It looks like you can still go to their website and download the software, at this point it is free. It looks like it is still good software, but I fear that it will be dying soon, so learning this software might be a bad time investment.
CGTextures.com- along with a few other free digital art resources
This website has proven to be incredibly useful in my work. I am impressed at the selection and quality of images on this site. I am always happy to find people out there providing quality resources for artists for the sake of art, not for money. I hope to contribute to this site and others like it in the future. There is another great image site called imageafter.com, it has a smaller, but equally high quality collection of images. Often when I don’t find something on CGtextures, I find it on ImageAfter. Another site in this spirit is freesound.org, this is a site in the spirit of open source, providing quality sounds for art projects. I have used it for several school projects and I plan on using it in the future. I will post any other really useful digital art resource repositories as I find and explore them.
I have been told by a few people that this place is an excellent site to post my work. It looks like I can put up a free still portfolio of my work on this site. I need to get all of my good work online as soon as possible, my portfolio is my employability, if it isn’t updated, I am not employable in the world of 3D. There is a lot of scary competition out there, I need to learn from that, but not dwell on it. This site is populated with some of the best work I have ever seen and I have a lot of learning and growing to get to the point that some of the art on this site is at. I am going to focus on making a good modeling reel first. The new 3D modeling teacher suggests a realistic human, animal, and prop (such as a vehicle) and then a stylized version of each of those categories. I hope to get my portfolio online by early June.
Week 9: Project Update
•May 27, 2009 • Leave a CommentWe are doing well in the production of our project. We have a format for our documentation of it that I think everyone can understand. It is a good balance of techno babble and good pacing. I have been working hard to get some good high quality natural objects produced for use as assets in our game. This week I produced some grass, some rocks, most of a tree (very complex), and various other shrubs. I am not going to go over the creation of each of these assets because that would become very repetitive and would take quite a long time.
Eric and I recorded one section of my video documentation. We also discussed and worked out a standard format to present our documentation sections in. We want to try to stick to a standard essay format, stating our thesis and main points in the introduction, going over our main points in our body and summing up our points in the conclusion. I prototyped this method with an overview of the process of creating a realtime clump of grass.
I have been helping Scott learn the skills needed in order to produce his log cabin for a realtime environment. Jason Long and I have also been working together in order to figure out some of the finer points of using the game logic. Overall, I have definitely refined several skills, improved my speed and efficiency, and I am learning how to best distribute work in a group. I think we will finish strong in the last week and have a nice looking little environment to show next Tuesday.
Week 8: Project Update
•May 19, 2009 • Leave a CommentI have been busy figuring out a good workflow for producing great realtime 3D content. I have developed and refined so many different methods during the course of this project. I have been working to apply them to 3D assets (objects to be used in the game) so that we can have a decent looking project. It is fun working with the rest of the group, teaching what I know and working collaboratively to solve problems. I had one specific problem that I couldn’t find the answer for by myself and it was in an area where I am the only knowledgeable individual in the group. I posted a question about my problem to the forums at BlenderNation. Within a few hours, someone had posted a response that fixed my problem. This is the second time I have posted a question to the Blender forums and the second time that the Blender community has proven to be a valuable resource. I have a lot to say for the documentation. I will be going over some of the fundamentals in little mini-tutorials. Some of those will include the basic texture layering process (explaining what each piece of the texture for any give object is for). I am trying as much as possible to implement a modern workflow for game creation, utilizing all of the time and resource saving techniques I can wrap my mind around.
I have been working with both Scott and Jason with their specific tasks. Since I have been playing around with this stuff for over a year now, I am taking on a teaching role for them. Both Jason and Scott are definitely enjoying what they have been doing (Scott is working on developing a smaller sub-environment and Jason is developing programming oriented gameplay mechanics) and I hope that they can learn some valuable workflow techniques as well. We all have been working with Eric, planning out a streamlined approach to our presentation. If we don’t streamline the documentation, it will be a big, overly technical mess. When this term is done, I hope to have a good skeleton of a game going so that we can expand on it in the future. On my end, I hope to develop enough re-usable assets such as grass clumps and trees so that we can mix and match them in order to make new high quality game environments based in the same game world.
